When truly Agile, we developers are involved less in projects we don’t believe in. We can influence on what the outcome will be. But it demands courage and will to live in a constant change.
Agile and billiards – or pool – has things in common. At the beginning of a game the balls are in neat, predefined order. During the game however their position on the table changes in unpredictable ways, ways that nobody could see. The best action is chosen according to the new situation. This is the idea behind Agile too. Details are decided as the development progresses instead of heavy planning at the beginning.
Back in the days project managers tried to plan software projects from start to finish with all the details. This worked in those rare occasions when own people made no mistakes and other players acted completely according to ‘the script’. One can count these with his or her middle fingers.
Planning a software project beforehand with all the details is practically impossible. Especially if you want to create an outcome, that fills users needs and produces significant value to the customer who pays the bill. Something unforeseen always comes up during the project. Something that needs responding. In agile these situations are solved by changing the game plan.
Agile Gives You Better Solutions
During my 15 year career as software craftsman I’ve been involved in hundreds of bigger and smaller development actions, projects and ventures. I have also seen that agile methodologies scares some people. They feel the development, though falsely, a lot safer, if all things can be planned precisely.
The Agile way is a huge opportunity for us developers. Yes, it demands skill and will to regenerate constantly. But with it, we can create solutions that exceeds the expectations.
I was working in a software project, where we knowingly skipped planning of an uncertain part which were to be implemented only after few months. During these months the customer scoped that part completely out of the product. Being agile and co-operating with the customer we avoided redundant design and work. These decisions also prevented creating unnecessary complex system. We saved customers money and created a better outcome.
Sometimes also totally new requirements emerge. Depending on their size, they might even paralyse the traditional software development process. At least they will delay it significantly.
Agile Necessitates Continues Learning
Agile has enabled me to try out new tools and techniques and learn new stuff constantly. Sometimes experiments have not produced the expected outcome, but they have never been useless. So called failures also provides lots of information for the next steps to take. As in billiards, learning how the spins work in general and in different situations, I can rectify errors in previous shots in the upcoming ones.
Continuous learning and improving is part of developers DNA. Without running experiments and learning, you can only achieve a good solution to a single problem. And that is already in the past.