I attended RailsConf last week, and it was amazing. I met a lot of amazing people (including a handful of personal geek heroes) and became truly fired up about my personal craft of programming. Serendipity played a big part, as a series of events lined up to help me form my new strategy for being a better developer.
On the plane ride out, I read the first half of Malcolm Gladwell’s Outliers. Chapter 2 had me spellbound. The title: The 10,000 Hour Rule. In study after study, the author showed that to truly master a craft, only a nominal amount of intelligence and “natural” talent are required. For instance, any IQ above 120 should be more than capable. After that basic filter, what separates the masters from the rest is *practice*. About 10,000 hours, by most studies’ estimates. That could be practicing baseball, music (not just performing, but practicing to intentionally get better), or chess. You get the idea.
Fast forward to the Ignite RailsConf event Sunday night, where 14 speakers had 5 minutes each to give a lightning presentation, with no overtime. Three of those speakers mentioned the 10,000 hour rule. Later in the week, Yehuda Katz gave a keynote where he said he’d only been programming since 2004! Just six years, about half my professional career, and he’d mastered Ruby and Rails to the level of being a core member of the Rails team. How? Finding “impossible” challenges, and doing them. This is, of course, the essence of practice – making a concerted effort to complete tasks that were previously out of your ability.
But it gets better. BohConf (the official unconf of RailsConf) hosted a mini code retreat Tuesday afternoon. Code retreats, as defined by Corey Haines, blend Dave Thomas’ concept of Code Kata with pair programming and repetition. You pair with someone, and work to solve a common programming problem, most typically Conway’s Game of Life. You have about 30 minutes to write a purely test-driven solution. Then you reflect on what you were able to get done, delete the code, find a new coding partner, and start all over! This is practice and feedback combined!
Over the week, the idea rolled around my head. And during my extended 12-hour plane trip home. And all weekend. I need to be practicing, in order to master my craft. I need to create my own collection of code kata – “fundamentals” I can practice over and over until they become second nature. I also want to pair program more, and perform my kata in public where I can be open to feedback.
I have a plan for this, which I’ve already put in motion. Stay tuned :)
UPDATE: I have posted my first (official) kata at vimeo. Read my blog post about it.