This entry appears in Tucows Farm. I wrote it after getting a few email responses to an entry titled Separating Programming Sheep from Non-Programming Goats, which referenced a paper covering a study whose results suggested that programming was at least in part an innate skill — that is, some people just can’t be taught to program.
The first few episodes of any season of American Idol, Canadian Idol or any other country-specific version of Pop Idol are devoted to auditions. These are by far the most entertaining, as they feature the most variety; you’ll see gifted singers and incredibly tone-deaf people in the same show. There always comes a point where the acerbic judge (in the case of American Idol, it’s Simon Cowell; for Canadian Idol, it’s Zack Werner) has to break the awful truth to the less-gifted hopefuls: no amount of training practice will ever make them a singer. There may be times when we think that the judge was overly cruel in his criticism, but aside from a few delusional contestants and those of us in the audience with a strong sense of empathy, most us concur with the judges: some people just don’t have the knack. Most of us accept that, not just for singing or even musicianship, but for areas such as athletics, artistry, physical beauty and the like.
However, for things that are based on intellect, there seems to be some resistance to the idea that some people have the knack for them while others don’t. Perhaps it’s because of the sense of egalitarianism upon which our society is based: the law regards us not as bodies, but as beings — it doesn’t matter what physical blessings one has, but what one has done. Maybe it’s because there’s no shortage of examples of people who aren’t all that bright who do well in school and people who are brilliant but get poor marks because going through the education system is often a boring, stultifying experience. Maybe Calvin Coolidge, president of the United States from 1923 to 1929, is to blame, as he once said:
Nothing in the world can take the place of persistence. Talent will not; nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education will not; the world is full of educated derelicts. Persistence and determination are omnipotent. The slogan ‘press on’ has solved and always will solve the problems of the human race.
I’ve been emailed by a couple of people who have expressed concern that I’m some kind of elitist because I posted a link to the paper The Camel has Two Humps [296K PDF], which covers research that suggests that programming skill is at least in part innate. Some people just can’t do it.
Personally, I think elitism’s got a bit of a bad rap lately.
I think that there’s good elitism and bad elitism. Elitism is good when it’s used to find the best-of-breed in any field and apply that skill to some practical use. It’s bad when it’s simply used to grant unwarranted privileges to a group. For more on this sort of thinking, I recommend checking out Paul Graham’s presentation titled The Power of the Marginal, in which he talks about “good tests” and “bad tests” (or better still, watch the video of the presentation).
There is a considerable amount of research out there that suggests that out of all the programmers, there are only a few superstars. I concur — you do need some kind of knack for programming, some kind of combination of smarts and just being “wired that way”. Why this is surprising is in itself surprising; we don’t seem to be taken aback that there are only a handful of Olympic-class athletes or musical virtuosos. Reg Braithwaite has blogged about this at length — be sure to check out this entry and this entry of his.
If there is any consolation to those of us who aren’t programming superstars — hey, I’m not one by any stretch of the imagination — it’s that there’s more to software development than just code-monkeying. I know one guy who’s a stunning C coder who can write code that requires more mental gymnastics than I’m willing or able to do. He wrote what I think could be one of the most powerful video-editing applications out there, with a level of control over video data that I haven’t seen, even in dedicated Avid suites. The problem is that his user interface is a nightmare of sliders and other UI geegaws — I’ve never seen a Windows application more cluttered with controls than his. He may be a crack coder, but as an application designer, he’s downright terrible.
Calvin Coolidge is right: there’s also something to be said for having tenacity and a work ethic. I know a Lisp programmer who specialized in security (although there’s an incident that makes me question his skill in that field) — a former housemate of mine — who constantly belittled me for being a Visual Basic programmer. During the deflation of the bubble, this “superior” programmer sat around my house and built a large debt to me for back rent, groceries, utilities and the largest domestic phone bill I’d ever seen. He never produced a line of code outside of a cluster of never-to-be-finished hobby projects — software chindogu, as far as I was concerned. In the meantime, I took on client work in VB, doing dumb old database work that functions to this day, processing refugee applications for the Government of Canada. Hey Lisp guy: you still owe me a lot of back rent. Pay up and, as you might might say: kiss my cdr.
Another thing to remember is that virtuosity isn’t a guarantee that what you’ll produce is good; it just improves the odds. Consider the group Toto: a group comprised entirely of the best studio session musicians out there, each one a virtuoso on his chosen instruments. Too bad their output is just awful. On the other hand, consider the Violent Femmes: they’re competent musicians, but not virtuosos, and vocalist Gordon Gano sings with an adenoidal yawp, but they ended up producing their eponymous album, one of my favourite albums of all time.