Before agile software development, there was the waterfall model, which is a software development process introduced first by Dr. Winston W. Royce in his paper “Managing the Development of Large Software Systems”. The waterfall model emphasizes that the development of software should follow logical steps as depicted in the diagram below.
What most people don’t know is that even at it’s beginning, the waterfall model had its deficiencies and Dr. Winston knew it and went as far as saying the implementation “is risky and invites failure”.
For years software development was carried out this way, and even up-to-the time of writing some organizations still use this software development process. Seeing the disadvantages that came with this approach there had to be another way.
In 2001 a group of 17 individuals came together to form the agile manifesto with the aim of uncovering better ways of developing software. The manifesto for agile software development became the foundation of the agile software development movement.
What is agile software development?
The agile manifesto states four values which the definition of agile software development can be derived from, and they are:
- Individuals and interactions over process and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The other thing to note is that while there’s value on the points that are on the right above, the items that are on the left in bold text are valued more.
The problem as Martin Fowler who is one of the co-authors of the agile manifesto puts is that agile software development has suffered from semantic diffusion, which he defines as an idea losing it’s original meaning as it gains adoption from more people. An example of this is interpreting the manifesto as saying development teams don’t need to plan or document, which is far from the initial ideas behind agile software development’s manifesto.
So what is agile software development? Agile software development is more than just a process, it’s a way of thinking about software development as being more adaptive than predictive and being people oriented rather than process-oriented. It is an umbrella term that encompasses practices such as continuous integration, continuous delivery, and extreme programming.
The effort required to make agile work for you depends on where you are in your software development journey but nonetheless, there are technical practices that need to be put in place to make it work. In part two of this series, we will go into some of the practices that are needed in an agile team.