With agile software development, we developers work on fewer projects that we do not believe in these days. We can genuinely have an impact on what the final output will be. But it requires courage and a wish to live through continuous change.
Agile software development can be compared to playing snooker. At the start of the game, the balls are tidy in a pre-arranged order. As the game progresses their position on the table changes in ways that no-one could have predicted. The best way to react is to choose what suits the situation. This is the basic thinking behind agile development: details are decided on as the development work progresses instead of spending large amounts of time in planning at the initial stage.
Traditionally in software development, the aim has been to plan the whole project from start to finish with all its details. This worked when your own team did not make a single mistake or when your partner worked exactly according to the script. In other words, never.
Planning a software development project in advance with all its details is impossible in practice if you want to create an output that meets the user’s needs and generates significant value for the customer ordering it. Without exception, something crops up during a development project that no-one would have been able to predict. In the agile model, the solution to an issue is sought in the manner relevant to the situation, in other words, by changing the game plan.
Agile software development gives rise to better solutions
My 15-year career as a software developer has included hundreds of large and small development projects. During this time I have noticed that agile software development methods are still frightening to many people. Even though it is deceptive, the project feels a lot safer if issues can be planned in detail in advance.
For us developers, the agile operating model is a fantastic opportunity, even though it does require continuous renewal of skills and desire. We can use it to create solutions that exceed all expectations.
An example of this is a development project where we deliberately left a uncertain part unplanned, and for which the timing of its implementation was just a few months away. During this time, the customer’s priorities changed and that part was completely left out of the service. Using the agile model and good collaboration we avoided producing unnecessary design solutions which would possibly have made the system more unwieldy to implement. We saved the customer money and created a better end product.
On the other hand we can come face to face with completely new needs. Depending on the size, in traditional software development at worst these can paralyse the whole project, or at least delay it significantly.
Continual learning is a precondition for agile software development
In the course of agile software development I have been able to try out different kinds of tools and methods and have been continuously learning. Sometimes experimenting has not produced the desired result, but it was not useless. These so called failures also provide a lot of information about what direction to continue in next. Just as in snooker, by learning how different series of shots behave generally and in different situations, I can correct the errors of my previous shot during the following shots.
Continuous learning and improvement really is part of software developers’ DNA. Without continuous experiments and learning from them, at best you will achieve a good solution to one situation which probably is already part of the past.
As you have perhaps noticed, I like playing snooker. Fortunately a used table, but one that was still in sufficiently good condition, appeared at our workplace some time ago. I can thus develop my skills at snooker too almost every day during breaks.
Written by Miikka Niemelä