Agile Software Development in a Nutshell
If you are a professional software developer today, there is no way around agile software development. In this article I will explain what it is and why agile development is de facto the industry standard today.
A historical outline
Agile software development describes programming with minimal bureaucracy and maximum flexibility to adapt to changes. Perhaps the term becomes clearer if you look at its opposite: Especially before the Internet conquered the world in its present form, software was built in one piece from start to finish and was finally handed over to the customer, ready to use, and was usually rarely touched again afterwards. To avoid unpleasant surprises, the development was thus accompanied by huge bureaucratic efforts, from contracts to project management.
In the days when software was physically bought in shops, this model had its raison d'être, but with today's technical possibilities of digitally delivering software to the customer and keeping it up-to-date, the development of software has also been revolutionized. Nowadays, software is no longer "ready-made", but rather offered as a service – and often paid for, which is why we now tend to pay subscriptions rather than a one-off purchase price.
But this is not a one-way street: not only can software be delivered fast and direct – user feedback can and will as well. So it's only logical that software development companies transitioned towards a world where customer feedback is an integral part of software development from the start.
This is agile software development
Even if agile programming has existed before in this or a similar way, the concept really took off with the Agile Manifesto, which was created in 2001 by a handful of programming avant-gardists of various kinds while skiing productively in Utah and reads as follows:
"We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more."
In brief, the agile manifesto emphasizes
- well cooperating and communicating teams (for example with Kanban, Sprints and Daily Standup Meetings)
- working, easy to understand, usable software (UX Design was not created at the same time as agile development for nothing)
- a close contact with the customer from the start
- flexibility to adapt to new requirements or circumstances
The reality in the IT industry
Even though virtually every software company today is committed to agile development, they're not necessarily completely embracing the agile methodology. In reality, agile software development should rather be seen as a role model to which some adhere more and some adhere less – but at the end of the day it is and remains the industry standard.
The project management methodology Scrum, which can be seen as a part of agile software development, is a good example of this: clear rules apply here, which by no means are followed by everyone who claims to work according to Scrum. This is also the case with agile software development as a whole: hardly anyone really adheres to it one hundred percent, but most of them at least pick out a few key points and basically orient themselves on what the Agile Manifesto describes. And that's why you can't get around agile development in your professional life as a programmer and should at least basically know what it's all about.
- Agile software development minimizes bureaucracy and maximizes flexibility
- The customer and the software are in focus
- Teams and communication are indispensable
- Iteration is more important (and realistic) than immediate perfection