Q&A with great programmers

October 13, 2006

Jarosaw “sztywny” Rzeszótko decided to ask ten questions to the programmers he admired the most and then posted the questions and answers on his blog (via slashdot). I enjoyed reading the Q&A, but what I find most wonderful and inspiring is to see someone take the initiative to connect with both famous and less known role models and then publish his findings to share with public. And to see the great folks and thoughtful leaders who responded to his questions.

Some highlights…

What do you think is the most important skill every programmer should posses?

Steve Yegge: Written and verbal communication skills. You’ll never make it very far as a programmer in any field unless you can get your ideas across to people effectively. Programmers should read voraciously, practice writing, take writing courses, and even practice at public speaking.

Linus Torvalds: It’s a thing I call „taste”.

I tend to judge the people I work with not by how proficient they are: some people can churn out a _lot_ of code, but more by how they react to other peoples code, and then obviously by what their own code _looks_ like, and what approaches they chose. That tells me whether they have „good taste” or not, and the thing is, a person without „good taste” often is not very good at judging other peoples code, but his own code often ends up not being wonderfully good.

But hey, it’s not the only thing. One thing that is very useful, especially in an open source project, is simply the ability to communicate well what you want to do, and how you are going to do it. The ability to explain to others _why_ you do something a certain way is very important, and not everybody has that ability.

That said, in the end there are also the people who just churn out good code. They may not be good at explaining it, and they may not even have great taste, but the code works well. Sometimes you need another person (one that _does_ have that hard-to-define „taste”) to maybe massage the code into a form where it’s useful in the bigger picture, but just the ability to write clear code for difficult problems is obviously a fairly fundamnetal part of any programmer.

David Heinemeier Hansson: A strong sense of value. The ability to ask yourself the question: Is it worth doing what I’m doing right now? So many programmers seem to waste oceans of time on stuff that just doesn’t matter. And not enough on the stuff that does.

Peter Norvig: I don’t think there’s one, but let’s say concentration.

Dave Thomas: Passion.

Guido Van Rossum: Your questions are rather general and hard to answer. :-) I guess being able to cook an egg for breakfast is invaluable.

James Gosling: To be self motivated. To be really good, you have to be in love with what you do.

Bjarne Stroustrup: The ability to think clearly: A programmer has to understand problems and express solutions.

Tim Bray: Ability to prefer evidence to intuition.

What do you think makes some programmers 10 or 100 times more productive than others?

David Heinemeier Hansson: The ability to restate hard problems as easy ones.

Peter Norvig: The ability to fit the whole problem into their heads at one time.

Dave Thomas: They care about what they do.

James Gosling: They think about what they do. They don’t rush in and slap things together. They have a holistic picture of what is to be built.