A Programmer's Apology
zvoase.tumblr.com
zvoase.tumblr.com
Avoid my mistakes by sticking with tools you have trained with. I'm not saying "don't learn", I'm saying learn wisely. The road to mastery is long, requiring time and dedication. If you have not mastered a tool, don't base your strategic plans around it, otherwise you will be defeated by all the details that only experience will reveal.
This is probably a bad reason when you're building the next great app, but is a perfectly acceptable reason when you just want to get something running as quickly as possible. In many cases, the cost of learning a new tool will outweigh the (usually minor) benefits it brings.
That being said, there is something positive about using the tools you really do understand as long as the mismatch between the tool and the problem is not too large. At the very least, you get something working quickly in a way that you understand and you have learned a lot about "the problem" in the process. Most of the time good enough is really Good Enough TM.
I use a strict subset of ANSI C for my compiled applications. Having used C for over 20 years, it has become second nature to me. As a consequence, I am easily able to solve the kinds of problems I am interested in solving with it. This works partly because I have the luxury of being able to choose my problems. The rest of the explanation is that C is almost a portable assembly language and can do almost as much as assembly language without nearly as much effort.
Perhaps if I were to choose a different set of problems to solve, other tools would be more effective. Since I am not now interested in SAS, Cloud Computing, WEB Applications, Enterprise Services, et.al. C is Good Enough TM for me. YMMV.