The Top Twenty Programmers
It seems that when Tim Bray of Sun was giving Adam Bosworth (late of
BEA, now of Google) a recommendation for his new job, he proclaimed him
“one of the top 20 programmers.”
JDJ Magazine thinks it would be ever so much fun to figure out who the other 19 are and offers some suggestions.
We, of course, immediately entered a few nominations of our own. JDJ is accepting nominations for the next month of so at email@example.com..
They figure they will get quite a few. I'd guess deciding whom to
pick could be quite a problem. We have lots of great programmers
and lots of ways to judge greatness.
Here are some things to think about:
- Creativity – thinks of breakthrough ideas or products.
- User Empathy – understands who will be using the product and can
actually put himself in their shoes and design a product that will be
useful and usable by that user, rather than by another
programmer. All too few pieces of software pass this test.
- Speed – meets deadlines. (My favorite story about this is
about a programmer guru friend of mine who listened to be telling a
workshop that it took about two years to write a word processor.
He called me six weeks later and invited me over to see his new word
processor. It was pretty good. I told him that, expecting
to see some preening for so spectacularly surpassing my numbers.
Oh, no. He clicked to the next screen and proceeded to show me
that his new word processor was part of an office suite, also brand
new, that he had built to keep it company. I bought him dinner.)
- Execution – Doesn't just get the software finished on time, but
gets it finished in an elegant way, with very few bugs and no inelegant
edges left hanging out — no places where I'm left wondering what to do
next, what my choices are, or what to do when the software says I've
made an error.
- Plays Well With Others – Yes, writing software can be a solitary
job. But today's commercial software is usually too big to be
accomplished by a single programmer, however clever, quick, and
dedicated. So great programmers have to have the ability to work
with others, know the art of compromise, and understand that it is the
team's goals that come first.
I can't wait to see who's on that list. In fact, I hope JDJ
publishes the whole list of nominations, in all of its glory, in
addition to the finalists.