Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
A Programmer's Apology (zvoase.tumblr.com)
11 points by tdavis on Jan 30, 2009 | hide | past | favorite | 4 comments


No, no, no! You are completing tasks the productive way. You are using tools you have trained with, and you solve each problem as quickly as possible. Don't listen to the purists. The "best tools for the job" are the ones with which you are most effective. The article's description of "the way problems should be solved" is a doomed path whose end is usually quiet failure. You will be assaulted by perfectionism and inexperience, which is a deadly combination. I know this from personal experience with my own failures.

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.


There's a reason programmers (myself included) often take the easy way out. Namely, it's easier.

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.


If you haven't really "groked" the problem how do you know you have solved it? Answer: you don't and can't.

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.


Rails people rant against Django folk. We are all guilty, so who exactly is being apologized to? I suppose 'A Programmer's Confession' would be a more appropriate title.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: