Starting with a manifesto 15 years ago and expanding into an extensive methodology today, agile is quite the success story.
But even now, it’s not well understood outside of niche development circles.
Here’s why we love agile projects and why they’re good for clients, developers, and end users.
What is Agile Development?
First we need a clearer idea of what we mean when we say ‘agile’.
Agile is essentially a project management methodology for software. It’s a way of building software where:
- Working software is regularly presented to stakeholders throughout the project
- Those stakeholders include the end user
- Requirements change based on the results of those presentations
- The build team adjusts to accommodate those changing requirements.
The focus is on incremental change with a small multi-disciplinary team. In real terms,agile development tends to deliver lots of small deliverables over time that build to one project, and traditional development tends to deliver one totally complete project.
Agile is commonly viewed as an alternative to waterfall development, a traditional model where a plan is agreed upon at the beginning of the project, and is then executed in phases, with little – if any – deviation from the original plan. What the client signs off on at the beginning of the project is exactly what they can expect to see at the end.
In waterfall development, there are deliverables and checkpoints at the end of phases (e.g. alpha review, beta review), but any major changes to the project once underway typically come at a high cost, and can set the project back by weeks, if not months.
Now that we know what we’re talking about, let’s get on to the 5 major benefits of agile development.
1. It’s software methodology, built for software
Unlike other methodologies (like waterfall), agile was designed with software development in mind.
Other methodologies were adopted from big development projects, especially construction.
In those hardware fields, it’s very hard to test and iterate. For example, if you discover that your 100km of highway really should have been built 2km north, you’re probably not going to move the whole thing.
As a result, those methodologies really focus on planning ahead and sticking to the plan as you go.
Software doesn’t really work that way.
First, it’s comparatively easy to test and iterate as you go. Second, requirements will often change as a project unfolds and stakeholders begin to see the project come to life.
With software, you have the ability to see something, realize it’s not right, and change it.
Agile development supports that. Other methodologies do not.
2. Agile lets you catch problems early
Because a core tenet of agile development is producing working code quickly and often, there’s a lot more mini-meetings, where developers show their work to stakeholders for approval and critiques.
Now, instead of discovering a mishap at the end of a project, when fixing it is a significant cost and delays the project going live, developers can fix it right then and there.
While that self-correction mechanism might slow things down in the short run, it actually makes projects run smoother, stay on budget, and most importantly, it creates a better end result.
Which actually leads us to our next benefit…
3. Agile involves more collaboration
Collaboration has two key benefits in terms of agile.
First, it means there are fewer surprises and no nasty hand-offs. For example, take the relationship between development and design teams building a website. In a traditional waterfall methodology, the design team would work out some requirements, design wireframes and/or PSDs, and then pass the project off to the development team, who executes their designs.
But what if design overlooked something critical in the design phase that needed to be added later? What if there were technical considerations that the development team should have had input in at the outset of the project? What if design discovers some insights after-the-fact and wants to change the original layouts?
The handoff is done, and everyone simply accepts that, while it’s not ideal, the cost of changing it far outweighs the benefits.
Agile development means that the designers and developers are working together throughout the project, sharing knowledge and insights with each other daily.
Now, if design thinks of an idea, they can share it with development to implement. Likewise, if development hits a snag and can’t execute a particular design element, the team can work together to troubleshoot a solution.
Second, collaboration means two (or more!) heads solving one problem. You get better ideas and more of them, as each individual contributes their experiences to the group.
The result of that positive collaboration is a far better end product.
4. Agile focuses on testing (and iteration)
Businesses need to make more decisions based on data and less on instinct. Agile methodologies help alleviate that problem by building in testing sessions and review spots at regular milestones throughout a project.
Basically, when you’re running a big project as lots of little ones, and building live code the whole way, there are plenty of spots to run tests.
Requirements testing, quantitative testing, mobile user testing, even paper prototype testing – there is lots of opportunity to see how your product is coming together at a point when it’s still possible to change it.
The result is software that is better for the user and better at fulfilling its stakeholder requirements.
5. Agile projects start and finish on time
Lastly, agile projects are simply better run. With many small deliverables and presentations of live code, it’s easier for both the working team and the various stakeholders to get an idea of the state of the project.
When there’s one big deliverable at the end, it can be hard to balance time throughout the project – it takes a much sterner approach to management and it’s usually just a much harder task.
But with multiple deliverables throughout, it’s easier for the team to correct as you go.
Using inter-disciplinary teams to regularly present live code to stakeholders is a great way to ensure a project can respond to changing requirements.
In our opinion, agile workflows are a superb way to get digital products to be the best they can possibly be, on time and on budget.