February 27, 2008

...Learn TDD with Codemanship

Speed Comes Later. Start Slow. Focus On Getting It Right.

I've been a student of the electric guitar for about 20 years now.

I started learning after I was inspired by players like Frank Zappa, Steve Vai, Joe Satriani, Yngwie Malmsteen, Vinnie Moore, Paul Gilbert and others of a certain school of guitar playing commonly referred to as shredding. Shredders play their guitars very fast - often in a neo-classical style that owes more to classical violinists than the blues-based rock guitarists who inspired them. (Although, they can shred the blues, too.)

I heard my step-brother's copy of Malmsteen's magnum opus (and, no, I'm not referring to his later album called "Magnum Opus", which was rubbish), Trilogy Suite.

How cool is that?, I thought. I wanted to play like that, so I resolved to save up my summer job earnings and buy my first electric guitar. It was a copy of Fender Stratocaster made by Tokai in Japan. Looking back, it was actually a really, really good guitar. Better than a real strat, and I'm not alone in thinking that. Anyway, it was electric blue and it looked cool. I bought a little practice amplifier - a Peavey Rage - which I kept and used most days until some bastard stole it from my flat last year. And I bought a Boss HM2 ("heavy metal") metal distortion pedal to get that metal sound.

I was all set to become the next King of Neo-Classical Shred. All I had to do now was learn to play.

Now, remember, I wanted to play FAST. Really FAST! So when I practiced my scales, and my chops and my licks (stop me if I'm getting too technical for you) I played them as fast as I could. After all, you don't train to become a fast sprinter by running slow, now do you?

And after a year or so, I was quite fast. Not Malmsteen-fast, of course. But I could do some pretty cool shred-sounding things on my - by now heavily customised in a Joe Satriani kind of vibe - Tokai Strat. But I was also a pretty sloppy player. Often out of time. Often missing notes. Often making small mistakes. When I rehearsed and recorded with college bands I earned the nickname "10-take Gorman", because we would always have to play it at least 10 times before I got it right. I even got kicked out of one band and replaced by someone who couldn't do any of that impressive-sounding shred stuff. But he could play Sweet Child Of Mine all the way through with no noticeable mistakes.

In recent years, as my hairline recedes and my waistline does its best to compensate, I have taken to practicing SLOW. Really SLOW. I set a metronome to a nice, relaxed, comfortable tempo and then I try to play every note cleanly and bang on the beat. And when I've played it through without any mistakes, I turn the tempo up a couple of BPM and do it again. And then a little faster. And then a little faster. And then a little faster. Until I'm just at that point where I can't play it cleanly at that speed. And then I stop and rest.

And I've found that, over months and years of patiently pushing the envelope a tiny little bit further each time, I can now play FASTER and CLEANER than I could before, and I can get it down pat in maybe 1-2 takes.

Based on this experience, I can't help feeling it might be a false economy to expect development teams to adopt new ways of working or new technologies without giving them the opportunity to start with the tempo set really slow, and allowing them to focus on doing it cleanly and correctly before pressuring them to speed up. I can't help feeling if we gave them the space and the time, we would be rewarded with much more productive developers creating much better software.

Posted 1 week, 6 days ago on February 27, 2008