Saturday, September 20, 2008

Story size - and Motorcycle rides

I ride bikes in three distinct landscapes, and where I'm riding has a lot to do with how I approach the activity.

On a road race track I know the profile of every corner, the available traction, and all the landmarks. I can fully commit to my line and string the curves together so that the exit from one corner sets me up for the entrance to the next. I'm going to see the same sets of corners every minute or two, I know exactly what I'm going to do well in advance, and I can think in big chunks of track - I have to do this to be fast. I can clearly see where I am going and plan every action along the way before I even get on the bike. Then it's just a matter of improving my execution through practice and repetition.

A semi-equivalent software development system is making cookie cutter websites with branding. The customer just chooses from a menu of re-usable functionality and most of the discussion revolves around the branding elements. The analogy with track riding breaks down though because riding a motorcycle at speed around a race track is just a bit more engaging then churning out cookie cutter websites.

Street riding - even on a familiar route is a whole different game. There are cars doing all sorts of seemingly random stuff, gravel on the road that was clean yesterday, driveways, pedestrians, and who knows what else. On the street it makes no sense to commit all your traction to a corner, or to be too attached to the exact path of travel too far in advance. You want to look a far ahead as possible, watching for the telltale signs of trouble so you can adapt your approach to the changing conditions.

This is the sort of environment that most corporate software development takes place in. There are regulatory changes, market conditions, new internal customers with their own ideas for improving things, and always budget constraints. The rules are very similar to riding in traffic. You know where you want to end up and you know pretty much what route to take but you must be ready to adapt to the changing conditions.

Finally there is off road riding. This is incredibly interesting and challenging. Often I don't know where the next bit of trail is going, or what the surface will be like. I can only plan very short intervals of the future and even those plans are subject to change with very little notice when the trail takes an unexpected turn ,or traction disappears in the middle of a challenging hill. I fall down a lot when riding offroad.

New product development is a lot like riding off road - you're always inventing something new and there's no telling where you might be even in the near future. It's also very interesting, a lot of fun, and you might fall down from time to time.

It is exceedingly rare that I fall down on the track or the street and falling in either of those circumstances can be very expensive in financial and human terms because the typical track or street bike is very sophisticated and street bikes in particular are heavy. Off road I fall frequently, and really appreciate the light weight, easy maneuverability, and durability of my dual sport bike. It turns out that the lightweight and simplicity of the dual sport are great on the track and street too.

Agility makes riding on the track more pleasant by requiring less effort to execute my plan, it makes street riding safer by making it almost effortless to adjust to the changes I see ahead, and it's a whole lot easier to pick up when I fall offroad. Similarly, I think agile processes make life more pleasant, safer, and resilient in any area of software development too.

Thanks for reading - Mike

No comments: