Ask HN: What makes a good programmer?

2 points by jeremynolan ↗ HN
What do you think makes a good programmer? Knowing lots of programming languages, efficiency, etc...

4 comments

[ 3.0 ms ] story [ 14.6 ms ] thread
Having a life outside programming :)
http://paulgraham.com/head.html

> "A good programmer working intensively on his own code can hold it in his mind the way a mathematician holds a problem he's working on."

http://paulgraham.com/pypar.html

> "I'll call the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it. And for programmers the paradox is even more pronounced: the language to learn, if you want to get a good job, is a language that people don't learn merely to get a job."

http://paulgraham.com/avg.html

> "Lisp will make you a better programmer, and yet you won't use it."

http://paulgraham.com/taste.html

> "Whatever job people do, they naturally want to do better."

http://paulgraham.com/avg.html

> "After a couple years of this I could tell which companies to worry about and which not to. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried."

Be self-driven.

Be committed.

Think different.

This is a philosophical question in the ballpark of "what is good?" So I'll turn it around and ask "what do you mean by good programmer?" Someone who meets deadlines? Someone who gets the job done? Someone who doesn't upset the boss?

I think the following video will explain why there can never be a single answer to your question:

http://www.ted.com/index.php/talks/malcolm_gladwell_on_spagh...

Someone for whom programming is a passion, and not just income. Someone considerate enough to help the next programmer who will look at the code.

This type of person then naturally picks up good practices with experience. For example: using multiple languages (and not being afraid to use the one best suited to a task), testing carefully, documenting responsibly, and favoring clarity over cleverness and optimization most of the time.