What is the single question that is most predictive of dev ability? The best coders come from a very disparate set of backgrounds, so it’s hard to group them on a single criteria.
However, one characteristic that I have seen be consistently predictive: starting at a young age. Gates, Woz, and even Jordan did it.
I am not in position to say whether I make for a good, great, or gruesome coder (1). But I know that my history with computers is epic:
- 1993: Age 13. Get our first computer, a Packard Bell 486SX/33 with 4MB of RAM. It came with a San Diego Zoo App, an encyclopedia, and a really lame racing app of some sort (not to mention all the Win 3.1 niceties). (2)
- 1993: Learn how to use DOS, configure games to use extended memory, figure out how windows system config files work
- 1993: Discover QBasic. Disappointed to learn that it doesn’t compile to exes. Decide to write a choose-your-own-adventure game with it anyway, complete with ASCII graphics.
- 1994: Start a BBS (search for “Bill Harding” in the list), get the most calls in Poulsbo/Bremerton/Silverdale area (not saying much)
- 1994: Enroll in the first of two computer programming courses at local community college (4.0).
- 1995: Wrote VBBS scripts to emulate about five most popular BBS flavors (PCBoard, OBV/2, Renegade, etc). To my knowledge, no one else accomplished this. It was like carving a pumpkin with a butter knife.
- 1995: Finish the community college computer programming courses with 3.9 average
- 1996: Discover I prefer girls to computers
From 1996 until late-college were the dark ages of Bill programming, wherein I spent the better part of my teens having forgotten about that whole computer thing. (3)
But the reasons coding was so magnetic to me are the reasons it still is: a chance for me to dream up whatever I could think of, and then make it become real to feel the rush of creation.
It’s like what businesses are supposed to be: you decide what’s important to you, and then go make that vision into reality. But in business, there is constant compromise and pragmaticism that ultimately rules the day, unless you’re Steve Jobs. For a competent coder, they can at any time create the best program (of a certain type) across all human history. It could be used by thousands or millions of people. If it’s important enough to spend years on.
Even in the more pragmatic here and now, I know of few other jobs with a comparable opportunity to build something that matters with one’s own two hands. This is why I latched onto programming so tightly & immediately at age 13.
Most of these characteristics are present by early teens: the desire to build things, the capacity to solve problems, the joy of seeing a project completed… I think of them as “born qualities;” thus, my hunch is that if the teenager has access to a computer, they’ll probably figure out pretty quickly if they’re a programmer or not.
Update: interviewed about 50 UW CS students today. The earliest coder of the bunch started in his late teens. The vast majority started when they entered the program (??!!). So perhaps this theory is bunk, or these kids all suck.
(1) I suppose that having built Bonz is strong circumstantial evidence that I’m not gruesome
(2) Note how I remember the software that came with my first computer in as much detail as my first kiss
(3) Not entirely true; I did still fix old people’s computers at exorbitant prices (consistent with what other computer fixers charged). But mostly the cute girls beat the computers in this round.