> I also like to abstract away the non-sense part of a problem
Some boring problems need to be solved anyway, and they can’t be abstracted away. Just when you’re picking the right tools, it shouldn’t take too much time.
For example, that CAD/CAM app I’ve developed has a lot of very interesting algorithms inside. But the software still need to appear on the user’s PCs somehow, i.e. we needed an installer. I’ve picked http://wixtoolset.org/ It’s mature, well supported, first-party i.e. made by Microsoft, open source, integrates nicely into visual studio. Because of these things, I’ve spent less than a week in total over the course of 1.5 years working (=develop, test, and support combined) on the relatively boring installer part of that software.
The installer was just an example, many commonly encountered boring problems already have good solutions. E.g. need RPC, pick .NET and WCF. Need to store structured data, pick the highest level library that fits other requirements (despite I generally don’t like SQL, I still know it and I’ve used sqlite a couple of times when it fit well). Need to expose JSON HTTP API on MacOS without much performance constraints, pick Python + CherryPy, the Python is sufficiently high level and it’s already installed there. Without picking the right tools, I’d spent a lot of time solving these boring problems.