

A Programmer's Apology - tdavis
http://zvoase.tumblr.com/post/73398710/a-programmers-apology

======
palish
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.

------
aneesh
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.

------
lgriffith
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.

------
anuraggoel
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.

