I know you think the title of this post is absolutely crazy, but maybe not. Read on if you are interested in a bit of insight into human nature and why agile works!
Any of you that have emailed me or called me this week know that I am spending the week fishing in Montana. What you don’t know is that I am doing it with a good friend of mine. We try to go on a trip like this every couple of years, but in this case it has been 4 years since our last trip. We go fishing to enjoy the stunning scenery and try to outwit some fish. We are fly fishermen on these vacations (and most other times we go fishing), which means we’re trying to fool fish into eating an artificial collection of hair, feathers, hooks and a few other substances which is specifically put together to entice the fish into thinking it is eating something that would pass as food. For those of us that fly fish there is nothing quite like seeing a large trout come to the surface of a river and snatch your fly. We go on these trips to get away from the demands of the world for a week and to recharge our internal batteries. We always have a great time, but each time it is different. And that is where agile comes in (you were probably wondering about the connection by now).
Isn’t every software project a bit different? If they were all the same we’d quickly grow tired of it – at least I would. Our fishing trips are very much like software projects in that way. Even though we often go to the same place (a beautiful condo in Big Sky, Montana), each trip is unique and exciting in its own way. My analogy may be a stretch, but let’s make the assumption that the fishing trip equates to the software project. From that analogy it stands to reason that each day of the fishing trip is an iteration. In our case we have 8 iterations per project (Saturday to Saturday), although on one occasion we had 9 iterations (Saturday to the following Sunday). In other words, we are very date driven on our project because we have to be back in the real work world on Monday! This is the equivalent of a project that has a hard deadline for any reason – perhaps there is a legislative reason, a compliance reason, a particular date that works for the client, or any of a host of other reasons.
In a typical date driven project we are trying to get as much value into our release as possible. We don’t know exactly what that will be at the beginning of the project, but we have a prioritized product backlog to help us make the proper decisions. In the case of our fishing trip we too have a prioritized backlog. We want to catch specific species of fish if possible, fish some particular locations, visit some specific establishments, etc. A release has a vision, and we have one for our trip as well – have as much fun as possible regardless of weather and other factors. We don’t limit ourselves by saying catch as many fish as possible because sometimes that doesn’t give the same fun as catching fewer fish at a different location.
We are date driven and we have a vision. We are still the equivalent of a software project, but now it gets interesting. What do we do for each iteration in a software project? We plan the work for the iteration, we commit to the plan, we execute the plan, we do a retrospective and we improve for the next iteration. Wow, that’s the same thing we do on our trip. Since we aren’t really limited in what we can do, we spend the late night reviewing the previous day, studying factors that might affect our plans (like weather), make a plan and commit to the plan. The next day we go out and execute on the plan. We make plans based on the accumulated knowledge we have captured up to that point in time! For example, one year we decided to fish the same place three days in a row because it was so much fun we couldn’t make ourselves do something different. This year we are being a bit lazy and getting late starts so we have limited ourselves to doing more fishing that is in closer proximity to the condo. We haven’t yet fished the same place twice, but we have asked lots of questions and made great decisions because each day has been extremely memorable for both of us.
I am writing this from my bedroom in the condo and wondering how to end the posting. I just looked out the window and saw Lone Mountain with a light covering of snow and realized that as this trip comes to an end in a couple of days we’ll have once again completed a successful agile fishing trip. My hope is that more companies will recognize that being agile isn’t about NOT planning, but is rather about using ADAPTIVE planning. Scale your mountain one step at a time. Take each step based not just on the previous step, but on ALL previous steps you’ve taken! Don’t set both time and scope since scope often changes. Instead embrace change and commit to delivering as much value as possible within the given timeframe. Become a market leader by creating the best possible products, with high quality, as quickly as possible. My friend and I have great trips because we have as much as much high quality fun as we can in the timeframe we are given. Both of the last two sentences describe being agile.
Have a great day and I’ll be back hard at work on Monday.
– Bob –