Tuesday, December 30, 2008

Gifted developers are made, not born

Have you ever wondered why some programmers or architects are so much better than others (or you)? Why is it that some developers seem to be able to remember, execute, perform, win, learn, and teach better than others? Is it natural talent? Better training? Better equipment? Youth? Why are some simply more successful than others?

Malcolm Gladwell recently published a book called Outliers that speaks directly to that question; i.e. why are some people more successful than others. He takes a fairly scientific approach to gathering existing statistics and applies them in a straightforward manner to arrive at some interesting, if not obvious, explanations. For instance, if you were to look at the Junior Hockey Leagues in Canada (hockey is their life!), you would find out that the kids who excel in this sport are disproportionately born in the first quarter of the year (i.e. January, February, March). It's not just a little disproportionate either - it is widely disproportionate.

What is it about winter babies that make them better at hockey than autumn infants? As young boys become eligible for the advanced teams (you know - where they'll get better coaching and more opportunity), the cut off date for selecting who makes the teams is January 1. Let's assume there are two boys who will turn ten this year - the perfect age for advanced hockey training. One turns 10 in January, the other in November. As of January 1, both will be nine, but let's say that the league allows both boys to sign up. The January boy is actually a year older (give or take a few months) than the November boy. At age 10, a year of physical development is a huge differentiator. The January boy will likely perform better simply because he has had more time on the ice to develop coordination skills, strategy development, relationship/team building skills, and maturity.

In other words, the boy born in January will likely be a better player simply because he's been doing it longer. Allow me a few caveats here; you cannot apply broad statistics to any specific cases. Driving on ice causes accidents - we know that, but it doesn't mean that the next time you are on ice you are guaranteed to wreck. In the case of the Canadian Junior Hockey leagues however, the numbers are impressive. Forty percent of the best players are born in the first quarter of the year, 30% between April and June. Only 10% of the top players are born in the last quarter of the year. This is not a one time, one year, anomaly, this is a pattern that repeats year after year.

Gladwell goes on to cite many other interesting cases, such as Bill Gates, and the Beatles to illustrate that time is a great differentiator (note that I'm not saying 'age', although with junior hockey players 'age' and 'time' surely match up). Bill Gates, and others like him such as Bill Joy, were able to practice their craft (computer programming) for 10,000 hours before their mid twenties. The Beatles (a very interesting story that was news to me) had well over 10,000 hours of performance time before they hit it big in 1963. In fact, that number - 10,000 hours - seems to be a threshold of excellence.

Gladwell refers to studies that have been conducted to determine why certain musicians are successful; and others, while good, never seem to rise to the top. In the 1990s a study was conducted at Berlin's elite School of Music. The violinists were divided up into three groups; the stars, the pretty goods, and the unlikely-to-ever-play-professionally. The age at which the members across all three groups began playing was roughly the same, around five years old (no one had a head start). But at age 8, those that would become stars began practicing more, six hour per week by age nine, 8 hours by age 12, 16 hours per week by age 14, and by age 20 the stars were actively practicing 30+ hours per week. By the time they reached 22, they had practiced over 10,000 hours in total.

The psychologists who performed that study then turned toward piano players and found an almost identical pattern. But here is what was even more interesting - in all of the studies they could not find any 'naturally gifted' students who floated to the top of their discipline without 10,000 hours of practice, nor could they find anyone who practiced at the same level who was not a top performer. The correlation is clear; regardless of your natural abilities, income, size, weight, or other factors - those that put in the practice time (the more the better) achieve higher levels of performance. To be truly great, again regardless of natural gifts, 10,000 hours of active practicing (not just showing up) seems to be the key.

So, you want to be good at your craft? Practice. Write some code, and then write it again (refactor it). Look at other people's code, look at it again from an architecture perspective. Can you find a way to re-write it so that it works more efficiently? If the code you're reviewing works, can it work better, faster, with fewer lines of code, with fewer exceptions? Can you defer operations to the containing environment (Web server, Database, Operating System)? Write, write, and write again. Design, design, and design again. Read best practices, employ them, understand them - don't just invent code, review code; yours and others.

In Bill Buxton's book, Sketching User Experiences (Getting the Design Right and the Right Design), he relays a story of a college ceramics instructor who divided his class into two groups. One group was told that their grade would be based on the quantity of the artifacts they produced, and the other group would be graded on the quality of their products. Interestingly enough, the group that focused on quantity, ended up producing better quality. There is just no substitute for practice.

Follow by Email