If you end up working in tech, it’s highly likely that you’ll hear the word “agile” being used a lot. Everyone “is agile”. All the teams “want to be more agile”. So being able to hold a conversation about the concept of agile working will be extremely helpful.
To understand the hype around agile, we need to first have a very brief history lesson. Until relatively recently, big tech projects were done in a waterfall style. This entails loads of up-front effort and planning, and then sticking to your plan no matter what.
There are some cases where this method works well. But to be honest, the waterfall method is generally a pretty frustrating and ineffective way of delivering a project. For example, what happens if after two months of design planning, the requirements change a little? Suddenly you’re two months in with nothing to show for it and still more design planning to be done.
Or perhaps you make it through the design and implementation phases and are beginning your verification. You take your brand new product to the people that asked for it and ask them what they think. They look at it and then inform you that it is not at all what they were looking for! So now you’ve just spend many months, perhaps even years, developing a full and complete product which actually isn’t useful (you can imagine a lot of angry emails and finger pointing when this happens).
Agile, when implemented and executed correctly, deals with these problems.
Agile is a methodology used to deliver projects and ensure collaboration and efficiency. It is designed to embrace change and handle unforeseen events without causing problems. There are 4 main values and 12 principles which you can read about in the official Agile Manifesto, but to sum up:
- Prioritise the customer
- Welcome change
- Work on short timescales, delivering outcomes throughout
- Meet daily
- Prioritise individuals over processes and tools
- Use face-to-face conversation whenever possible
- Progress is measured by software which works
- Work sustainably, an agile project should be able to continue indefinitely
- Remain attentive to technical excellence
- Simplicity is essential
- Teams should self-organise
- Reflect on a team’s progress and how it can improve regularly.
There are several different frameworks/methods of achieving agile working such as scrum, kanban, SAFe, or extreme programming. The most common is scrum. So we’ll focus on describing that here since most other methods are fairly easy to pick up once you understand how to be agile using scrum.
The scrum framework breaks the project down into short bursts called “sprints” and separates people into small teams called “scrum teams” which meet daily in a “stand up” led by the “scrum master”. The project is tracked and prioritised using several “artifacts” such as the “backlog” and “burndown” chart. We won’t go into detail on these terms here since they merit an entire article of their own. But overall, since the timeframes are short and the teams are small, change can be easily facilitated (and is often encouraged) and the product can be continually assessed by stakeholders to ensure it is looking like what they asked for.
Agile enables an iterative approach to software development allowing for continuous improvement and development. Historically, IT projects would deliver large outcomes only after several months of development. Agile changes this by ensuring that deliveries are smaller but more frequent.
Applying agile principles in larger organisations has quite often proved difficult due to the challenges of changing set processes and mindsets. The Scaled Agility Framework (SAFe) is a set of practices which is designed to enable large enterprises to achieve the benefits of the agile methodology.
SAFe software development largely consists of combining the Agile methodology with DevOps, for more information see our article about DevOps.