With agile software development, details are decided as development work progresses. Instead of using great effort to plan entire projects from start to finish, teams can genuinely build services and products that better answer customer's demands and changing priorities. But it requires courage and a wish to live through continuous change.
Agile vs. traditional software development
Agile software development can be compared to playing snooker. At the start of the game, the balls are in a tidy, 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 at hand. 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.
In traditional 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 didn't 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, in practice, impossible 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 that no one could foresee crops up during the development. 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've 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 an 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. In traditional software development, depending on the size of the needs, they can at worst paralyze the whole project or delay it significantly.
Continuous 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 a 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, in the future.
Written by Miikka Niemelä
Interested to hear more about developing new digital services? Contact our experts to hear more.