The Agile development methodology is both a very popular and an effective method for developing software.
Agile first came to prominence in the early 2000s and its influence has grown significantly since then.
So, what is Agile and how does it work?
Before Agile became popular, the prevailing software development methodology was known as the waterfall method. This approach attempted to organise software development into a series of steps that naturally flowed one after the other, like a waterfall.
First, requirements were gathered and documented. Based on these requirements the product was then designed. Once the design was complete, the product would be developed or built. Then it would be tested and if there were any problems found during testing, they would be fixed. Once this was complete the product was launched or released.
While this method worked, it has several problems. The main problem is that it took a long time to get through all the steps and release software. This delay often meant that requirements changed during development. Changing requirements often introduced more delays as the changes needed to be incorporated into the project. This often introduced more bugs and errors.
During the 1990s software development teams tried to find ways to handle these changes and get software out into the market faster. At the same time lean management ideas were propagating through the manufacturing sector. Agile incorporated some ideas from the lean philosophy like shortening feedback loops and delivering benefits to users sooner.
In the spring of 2000, a group of 17 software developers met in Oregon to consider how to do this. From this and subsequent meetings, the key principles of Agile were developed. This group first developed the Agile Manifesto that outlined the four key values:
1.Individuals and interactions over processes and tools
2.Working software over comprehensive documentation
3.Customer collaboration over contract negotiation
4.Responding to change over following a plan.
They also added the following insight to the list above: while there is value in the items on the right, we value the items on the left more.
Further to the key values, they also outlined 12 principles to back up the values. These principles emphasised delivering software frequently using shorter delivery cycles, welcoming changing requirements at any point in the delivery cycles, using working software as the main measure of progress, and regularly reflecting and looking to improve the development process incrementally.
Agile changed the way software development teams worked together. Instead of requirements being developed by business analysts into written specifications, that were interpreted by architects into designs, that were then given to software developers to code and then testers to test, small multidisciplinary teams worked together with the business to develop software in shorter time frames. Terms like stand up, scrums and sprints started to be used to describe a process that focussed a lot more on closer collaboration, faster release times and continuous iteration and improvement.
In many ways, Agile tried to incorporate the idea that developing software was more like a journey than a destination. Many software projects start with an idea and as the idea is developed, it changes and evolves as more is discovered about how people use the software and how it could be used in a different way.
Whilst Agile is no silver bullet, it is a very effective and efficient way to develop software.
1 Comment
Thanks for sharing. I read many of your blog posts, cool, your blog is very good.