Nowadays almost every software development company and team claim to be agile and usually follows agile methodology. However, in the middle of the whole agile movement the real meaning of “agile” is often lost. What does it mean to write code in an agile way? Or to work in an agile team, deliver a product in an agile fashion?
Where has the meaning behind agile disappeared – and what does it really mean at its root?
The Birth of Agile
Let us take a step back to where it all started. In 2001 a group of software craftsmen gathered in Utah to summarize their views on efficient software development in a short document. The outcome of this meeting was the Agile Manifesto which forms the basis of agile software development (and marks the start of the agile movement). The 4 values the agile manifesto states are these:
- 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 pretty much it. So why does “agile” seem to be something much more complex and difficult to grasp these days?
Agile Methodologies and Certifications
Today, agile is pretty much a synonym to following some methodology, the most popular without doubt being Scrum.
And its little wonder it is so popular: the methodology is credible, as it was developed by Ken Schwaber and Jeff Sutherland, two of the members of the Agile Manifesto. Getting started with methodology is simple – there are enough online resources.
Scrum is also super popular because it is simple to implement and follow. Implement a couple of lightweight ceremonies on a schedule – standups, backlog groomings, plannings and retrospective, and that’s basically it. And results will come fast even if leaving out certain ceremonies. For example, just by having a daily standup the team will be more productive if there has not been something similar in place beforehand.
Still, the more I use these methodologies to build software in an ‘agile’ way, the more I see that following an agile methodology is not what agile software development is about.
Back to Basics
Building software in an agile fashion will always be speedier, team members will be more motivated and overall outcomes will be better compared to the plan-months-ahead waterfall style development. As the benefits are immediate it is little wonder that a whole consulting and training industry has spurred to help teams and companies transition to agile with the use of agile methodologies and workflows.
The word “agile” has been so overused in the software industry – not the least by consultants making a living off it – that it has now pretty much lost its original meaning. One of the four values of the Agile Manifesto is this:
Individuals and interactions over processes and tools
So why is it that all agile methodologies introduce more processes and tools to achieve agility? Does this not go against the original ideas of agile?
The Real Meaning of Agile
Doing something in an agile way means making a small change quickly, learning from it, making adjustments to our understanding of the problem and repeating this many times. This is what doing something with agility means:
What to do:
- Find out where you are
- Take a small step towards your goal
- Adjust your understanding based on what you learned
How to do it:
- When faced with two or more alternatives that deliver roughly the same value, take the path that makes future change easier.
This is what agile is all about. Stick with the basics and you can apply them to any kind of software development:
- When writing code, do it in an agile way. Decide what you want to achieve, do a small change, test it, learn from it, adjust and repeat. Try to write code that is easy to change later.
- When building a product, do it in an agile way. Do small changes, get immediate feedback, do small iterations, and make decisions that allow future changes as much as possible
- Similarly, when working as a team, solve problems using these basic principles, a small step at a time
- The tools and methodologies you use should help achieve this kind of agility. If they only add more complexity – ditch them.
Agile is not a methodology with rules and processes to follow. At its roots agile is a simple and fast way of learning and improving by taking small steps, one after the other.
About Codacity Informatica Group
We are at our heart, engineers who love change and delivery. That what makes us stand out. We recognize that systems must always start and end with clean code. CIG can power your software development transformation from ideation to execution and benefit delivery. We have more than 18 years of experience driving business change in many settings. We are ready to enable you today.