What makes a good programmer by Joe Armstrong. Who does Joe Armstrong hire?
Joe Armstrong has talked a lot about the topic or being a good programmer as we can see in the previous posts: What Joe Armstrong did to be a better programmer?, Joe Armstrong and the Print Statements and Joe Armstrong and the importance of the writing skills. Now we are point about a side question related to the “how to be a better programmer”
Seibel: What makes a good programmer? If you are hiring programmers
what do you look for?Armstrong: Choice of problem, I think. Are you driven by the problems or by the solutions? I tend to favor the people who say, “I’ve got this really interesting problem.” Then you ask, “What was the most fun project you ever wrote; show me the code for this stuff. How would you solve this problem?” I’m not so hung up on what they know about language X or Y. From what I’ve seen of programmers, they’re either good at all languages or good at none. The guy who’s a good C programmer will be good at Erlang—it’s an incredibly good predictor. I have seen exceptions to that but the mental skills necessary to be good at one language seem to convert to other languages.
Seibel: Some companies are famous for using logic puzzles during interviews. Do you ask people that kind of question in interviews?
Armstrong: No. Some very good programmers are kind of slow at that kind of stuff. One of the guys who worked on Erlang, he got a PhD in math, and the only analogy I have of him, it’s like a diamond drill drilling a hole through granite. I remember he had the flu so he took the Erlang listings home. And then he came in and he wrote an atom in an Erlang program and he said, “This will put the emulator into an infinite loop.” He found the initial hash value of this atom was exactly zero and we took something mod something to get the next value which also turned out to be zero. So he reverse engineered the hash algorithm for a pathological case. He didn’t even execute the programs to see if they were going to work; he read the programs. But he didn’t do it quickly. He read them rather slowly. I don’t know how good he would have been at these quick mental things.
Seibel: Are there any other characteristics of good programmers?Coders at Work – Page 235 – Joe Armstrong
Armstrong: I read somewhere, that you have to have a good memory to be a reasonable programmer. I believe that to be true