I believe in being agile. Me and my dog are competing in agility since two years back and there are some similarities to agile software development.
Each track is different so you can’t plan long time in advance. The sprints are short and you both have a immediate reward if the course is done right and within the stipulated time. There are also other things in common that you don’t see at a first glance.
The track consists of twenty to twenty-five hurdles and you have to guide your dog through them all in a sequence, fast and without errors. But the dog has to be trained on each hurdle before the race, so that he knows how to jump. You have trained for a long time with your dog and you know each other by heart. You can’t just compete with someone else dog and believe in top notch results. Before each competition, you walk along the track 6-8 times to memorize the sequence and plan how to handle you dog. It’s all about preparations if you want to win.
So, when running agile software project, you can learn from agility.
But you have to know the limitations with agile. When it’s very large and/or complex projects without clear boundaries, you can not just start coding. Large projects does often have lots of people involved, with different skill sets and skill levels. Often, they have not worked together in previous assignments and they need to find out how to work together. Quite different story compered with a man and his dog in agility.
When doing larger transformations, you have to do a number of things before starting agile development:
- Define smaller autonomous areas with clear boundaries and as few dependencies as possible between the areas.
- Try to complete an area at a time so that you don’t have to wait until the end of the project to be ready with each part.
- Assure that all involved people have a common way of work and understand each others habits.
- Assure that all people involved know how to do their tasks beforehand.
- And last, someone have to assure that the different deliverables from all teams fit together as a working unit.
Finally, don’t forget to be passionate. You don’t do a good race if you dislike the tasks involved.