If you have an interest in software development, chances are you’ve heard the term ‘agile’ before.
The trouble is, it’s one of the most misused terms out there. So, we thought we’d take the time to set the record straight on this key concept. Because, when used correctly, agile practices give teams a shared foundation on which to make decisions to develop outstanding software and to create great products and services.
What is agile not?
Few terms are thrown around quite as loosely as ‘agile.’ In recent years, it’s become a buzzword that’s been used by companies in a completely incorrect way to sell their products.
Before we nail down the definition of what agile is, let’s take a look at what it’s most definitely not.
Agile is not:
- A methodology
- A process
- A framework
- A way of developing software
- Copying a successful team’s processes
So what exactly is agile?
Agile describes a set of values and principles that are pivotal to success.
So, while there are many methods that follow the agile philosophy, they aren’t ‘agile’ by their nature, as they might not work for every team in every situation.
Instead, it’s the act of following a set of beliefs to make better decisions that makes a team agile.
It’s important to understand that agile doesn’t make decisions for you, but rather gives you the base to make the right decision yourself, resulting in better software development.
What is the ‘agile methodology?’
Many people use the term ‘agile methodology.’ Yet, to think of agile in terms of a methodology is wrong. While a methodology can be seen as a set of rules, methods and procedures that drive a process, by its very nature, agile steers clear of prescribing rules, methods and procedures.
So, it can be said that agile is not a methodology.
Essentially, agile methods don’t attempt to prescribe a specific magic ‘solve all solution’ that works for every team. Instead, they focus on helping your team to think clearly, creatively and collaboratively to achieve the best solution for your team.
Why is agile important
One ever-present aspect of software development, especially today, is unpredictability. Therefore, having the ability to adapt and make continuous improvements to the way we work is essential.
In software development every decision matters. And within each scenario, within each project and within each team, there’s so much nuance that applying one set of solutions or methods simply doesn’t work.
This is exactly why agile is not a methodology. If it were to specify a strict, unchanging methodology that was unable to adapt to an ever-changing environment, we’d be better off calling it ‘rigid’ and tossing it aside.
So, instead of spelling out a methodology, agile gives you a set of values and principles that help you as a team decide on the best way forward.
What is the agile manifesto?
The core values and beliefs of agile are described in a very succinct 68 word manifesto, devised by a group of software developers in 2001. It states:
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.
What are the 12 core agile principles?
Again, rather than prescribing a set of rules to follow, the 12 agile principles are a set of beliefs that help you to arrive at the right decision.
- Satisfy the customer through early and continuous delivery
- Welcome change, even late in the development process
- Deliver working software frequently; the earlier the better
- Have an open channel of communication between business and development
- Build projects around motivated team members, with trust and support
- Prioritise face-to-face communication
- Use working software as the key measure of progress
- Maintain a constant, sustainable pace of work
- Maintain attention to technical excellence and good design
- Prioritise simplicity over complexity, whenever possible
- Promote self-organising teams, as they produce the best work
- Regularly reflect and adjust to improve performance
Methodologies that follow the agile values and principles
Okay, so we’ve established that agile is not a methodology in itself. Still, there are methodologies that teams can use that follow the agile values and principles. Of course, all of these methodologies must be subject to change.
Scrum is used by teams to collaborate on complex projects. Whether or not Scrum is thought of as a methodology or a framework is open to debate – scrum.org states that, as Scrum is flexible, it should be categorised as a framework.
Semantics aside, Scrum aims for transparency, inspection and adaptation by defining roles, events and artifacts. The specific roles are – product owner, Scrum master and a development team. The owner defines and sequences the work, the Scrum master keeps things organised and solves problems, while the development team carries out the work.
Scrum events include sprints – a time period to deliver a goal or business objective that’s valuable to the business owner; the sprint review – a reflection on what was achieved during the sprint, with feedback from stakeholders; and the daily standup – a concise meeting that updates every member on what happened the previous day and what is planned for the coming day.
A Japanese term that means “just in time,” Kanban is a flowing development table that shows the different stages of software production. As one stage is completed, it influences the information contained in the next.
Kanban was developed to balance demand with available capacity, allowing for continuous deliveries.
Extreme programming (XP)
XP works on the core principles of communication, simplicity, respect, feedback and courage. It prioritises customer satisfaction over everything else, incentivising developers to accept and adapt to changes to requirements of the customer, even if they come at the 11th hour.