The term Agile Software Development is used to refer to software development methodologies that allow the fastest response to changing market needs. This term became more widespread after 2001.
Brief history note
In a nutshell, this is a way of working in accordance with the values described almost 15 years ago in the Agile Manifesto. Although the Manifesto itself was created in a programming environment and directly refers to the work on software development, its message can be considered universally.
AGILE SOFTWARE MANIFESTO
We discover new programming methods by practicing programming and supporting others in it. As a result of our work, we began to value more:
- People and interactions than processes and tools.
- Working software than the detailed documentation.
- Working with the client than contract negotiations.
- Responding to changes than the implementation of the initial plan.
This means that the items listed on the right are valuable, but the ones listed on the left are of more importance to us.
Agile – what does it actually mean?
Agile is above all a way of thinking that helps you achieve better results with less effort. Especially in very dynamically changing circumstances. How does it happen? Briefly, it can be written that agile thinking is based on two foundations: the assumption that people have reason and that they do not make senseless things. So instead of imposing procedures, detailed documentation, following a rigid plan, we focus more on people and their interaction, quick response to changes and frequent checking of work results.
When we do something new – something that we do for the first time: we are building a product, or are looking for a solution to a complex problem, every once a while we face something surprising. When we start planning our activities, we include in our plan tasks that need to be done – things we know. We also take into account risks – problems we know we don’t know about. But the most dangerous to our actions are those things that can happen to us that we are not aware of. However, if we base our planning and activities on agile thinking, there is a good chance that those problems, which we do not expect and which have a huge impact on the value of our work, will be discovered earlier and we will be able to modify what we are working on and the way how we do our work.
Above all, however, Agile is a kind of culture, not a process. Thus, it is our way of thinking that defines whether the approach to software development is Agile or not. That is why so many methodologies (such as Extreme Programming, Scrum, Kanban or Lean) fall under the Agile type because they share a common way of perceiving the reality of IT projects. For this reason, we say rather that tools and techniques support Agility, and are not Agile, because the mere application of these techniques does not imply being Agile.
You cannot use TDD and continuous integration and still be Agile. You can also use all the tools, but have a team with no decision making options. Then you are definitely not Agile. This is probably the first and most important lesson that everyone who wants to be Agile should learn. Because apart from belonging to a popular group and obtaining a CSM certificate, it requires above all a change of mindset to Agile. And this should be wished to all agile teams and their managers.