What Is Agile Software Development?
Despite being around agile for a number of years, I find it surprisingly difficult to define the field in a single concise sentence.
This is because, to me, agile consists of two things which are often used interchangeably in discussion:
- A set of goals and qualities with regards to how we would like to develop software.
- A set of techniques, working practices and development methodologies that help us to move toward those goals.
I think it is important to keep this distinction in mind. The first category, the goals, is always relevant and almost universally desirable. The processes that we use to get there are varied, subjective and very much situationally dependent.
The goals of agile
First, what are the things that we hope to achieve by using agile instead of a more traditional development process?
- To reduce risk.
- To plan with more reliability.
- To prioritise better.
- To deliver software in a more iterative style.
- To improve the frequency and quality of engagement with stakeholders.
- To improve the quality of the product.
- To accept and account for change during the project.
- To work more pragmatically and reduce unnecessary work that does not add value.
- To use a lightweight process without unnecessary ceremony.
How do we get there?
There are a number of agile software development processes, each of which implements different rules and practices that in theory help us move toward the above desirable goals.
What each of these have in common is that they attempt to:
- Change communication patterns.
- Change prioritisation and planning.
- Change implementation practices and processes.
- Change quality procedures.
- Change values and culture.
Note that I did not mention the word SCRUM, KANBAN, XP or AUP in this discussion. These can all be useful starting points and frameworks to work within, but they do not, in themselves, represent agile software development. Agile software development is a much bigger area than the simple application of a process.
If you want to explore the goals more deeply, my agile reading list is the place I usually point people. For the delivery mechanics, read tips on continuous delivery and why developer testing matters. The original statement of the values is at the Agile Manifesto.
Reference shelf
Sources and further reading for this note.
- Agile ManifestoThe four values and twelve principles.Opens in a new tab
- Principles behind the manifestoThe twelve principles in full.Opens in a new tab
- Agile AllianceA practical introduction.Opens in a new tab
- What is Scrum?One framework, clearly explained.Opens in a new tab
- Atlassian agile coachA broad set of guides.Opens in a new tab
- Agile software developmentThe history and the debates.Opens in a new tab