The Stewart Method: How Not To Suck 5

Posted by Mark 08/05/2011 at 10h42

Don Stewart is a monster of productivity.

and more libraries on hackage than you can shake a stick at:

$ cabal list --simple-output | sed 's/ .*$//' |sort -u |xargs cabal info |grep "Don Stewart" |grep Author | wc -l

54

 

I point these achievements out not to blow smoke up his arse, but to observe that he's obviously doing something different. So, when he came back to Sydney for his PhD graduation, after many beers I prevailed upon him to reveal his dark secret. It turned out to be an elegant, two-step plan.

1. Write code for your own projects, every day.

This is about building coding muscle and discipline. Habit is stronger than willpower: if you reach the point where it's physically uncomfortable to miss a day of coding, you've got a big jump on the competition. It's even better if you can tie this effort to a particular time in the day, like a train commute.

2. Release a project every week

This is a hell of a lot harder than the first. Programmers are perfectionists. Combine these two simple facts:

  • It's embarrassing to release incomplete projects
  • Every project could have extra features

and you have a guaranteed recipe for a project folder full of promising starts and no released code.  

So, how do we sidestep this? There are really only three axes of control in software development: time, quality, and scope. Clearly we're not going to compromise on quality, and by the nature of the exercise, we have to finish a project every week. The only flex we have is in scope, and this is really what this step is all about.

You must kill your darlings. Cut the scope down to the absolute minimum that could possibly be useful. If you finish early in the week, by all means add features: having a working prototype will give you a better idea which are useful and which are gold-plating.

In any case, I've decided to give it a go. Starting with the release of Instigator, I'll be releasing a new project every week. Stay tuned.