Thursday, August 06, 2009

Paul Graham On Two Kinds of Programmers and Painters

In the world of painting there are some people who are just fabulously talented at drawing. They can sit down, these are like the kids who could draw in high school age fifteen they can sit down with a pencil ... sit in front of you ... wow, it looks just like me. But then when you say to these guys, "ok, use this amazing skill to just produce anything, just put it on the wall it's going to look great and then they lose". And within programming there is this distinction too. There are some people who are really really good at implementing code like if you give them a spec for a programming language and man, they will just implement it; The hardest stuff as long as you tell them precisely what to do, they will just do it. But you say, "ok, make up a product, make up some kind of new product that people want", and they are just utterly lost. This is actually a big mistake that companies make. There's a lot of companies who think that the programmers are basically implementers, that products are supposed to be designed by product managers. They are supposed to be designing what the products do. And they make mockups or something like that and they hand it to the programmers and the programmers translate their ideas into code. Like this one way process, no loopback - that loses! The best programmers are the ones that combine in one head both the ability to translate ideas into code and having the ideas. Just like the best artists have both the ability ... (have) a great hand. They can make their hand do what they want. But they also know what to tell it to do and actually between the two, I would take the Cézannes. Cézanne could not draw, he makes the same drawing mistakes that every one makes in introductory drawing classes. Occam's razor said he couldn't draw, not that he was trying to transcend three dimension ... But what he was good at was sort of the other half - deciding what to produce. He was terribly frustrated he was like this guy who had all kinds of ideas, but he couldn't articulate them with his hand. When you put the stuff on the wall in a room full of other paintings, it looks like there's a spotlight shining on his paintings and other ones have been sprayed with a light coating of mud. It's just amazing when you look at side by side paintings. So I will take the Cézannes actually and one interesting thing that has been happening is because programming languages have gotten so powerful you don't have to be that good an implementer to get something built.