It feels like there are as many flavours of Agile around right now as there are people to interpret what they think it means. So I wanted to go back to the original manifesto, incorporating what a lot of what those signatories have said it meant.
What Agile was meant to be
Pure Agile is: Cross functional teams, meaning everyone
needed in order to get completed work into production. There is a funnel of work feeding into the team that has been prioritised into value order, broken down as features. When a feature is complete the team takes the next one prioritised because that feature will give the organisation the most benefit - it could be for a different product or service to the work they previously delivered. Deliveries into production are made often, and as soon as a feature (value) is ready.
What about Scaling?
Pure Agile does not define any kind of scaling, it is very much a single team description. Period.
However, scaling this model is extremely straight forward. As long as the teams are truly cross functional then you can have as many as you like, delivering features and getting them into production. Simple.
But if it's that simple why isn't everyone doing it?
The most common problem implementing Agile
While the statements above are accurate, they are extremely simplistic, and I have intentionally left out some important details - one in particular. Let me write the full version of one sentence above here:
As long as the teams are truly cross functional and have no external dependencies
then you can have as many as you like delivery features and getting them into production.
But almost all teams have dependencies, so doesn't that make my definition of Pure Agile nonsensical? No, not at all. The description above is what Agile was supposed to be, but that doesn't mean that's what everyone is doing.
But we are doing Scrum, so we are Agile
Maybe, maybe not, I don't know. To answer that would a separate discussion. The point here is that one does not simply mean or imply the other.
Isn't Agile all about Sprints and Ceremonies and....?
Not in the slightest. Hearing this suggests that someone is going through the motions of a process without understanding the intentions behind the process.
If you want to be Agile these are the 3 things you need
In the pursuit of Agile (which in real terms means Business Agility) these are things you need:
- Cross functional teams (aka feature, not product or even worse project teams)
- A prioritised and well defined list of work to be done (aka a backlog)
- Working, tested software
Letting go of Command and Control
If you have the things above then it really doesn't matter what process a team is using, as long as they are hitting their delivery commitments (cycle time, quality). They could be using Scrum, Kanban, SAFe (although my opinions on the latter are well summarised
here). What matters is that you are getting what you need from your team, as I have described before
here.
Pure Agile is about letting the teams decide how they deliver those features. If you have these 3 things then you can have Business Agility. On a separate but related point if you are letting the teams be masters of their own destiny in terms of how they give you those things then you really have understood the original intention of the
Agile Manifesto.
What about measurement?
It would be a rare organisation who would let teams deliver software features without any kind of measurement of how well it is going.
I'm sceptical of metrics, because many organisations demand a LOT of data to monitor, without stating how useful that information actually is and what they will do with it (what they will probably do is misunderstand it and make detrimental decisions based on those misunderstandings, but that's another discussion). Also, for any given metrics people will be able to game them which starts to render the whole exercise pointless.
What I will say is that some metrics are extremely valuable and here I will point you to the excellent book
Accelerate. The book is a data driven view of the "State of DevOps" report between 2014 and 2017. From this they have derived the following metrics to be of the most value.
- Lead time (the time for an idea to become deployed software)
- Frequency of deployments into production
- Time taken to resolve failed deployment
- Percentage of failed deployments
I hope these metrics speak for themselves in terms of how useful they are, and I will leave you to read the book for all of the detail behind them.
But there are big companies successfully doing Agile
Yes, and many people refer to the Spotify model as an example.
What they don't mention is that all the companies people refer to in this way (Facebook, Google, Amazon etc) have developed their working practices by looking at what works for them. The Spotify model (squads, guilds, etc) works for them because they have designed and architected their product to align with this approach.
It's obviously a much harder to tell management "let's go Agile - here are a few basics and we'll have to figure out the rest for ourselves", yet that is exactly the right approach for each organisation to take (albeit with appropriate guidance and coaching). You need to take into account your existing products / services, architecture, teams, culture, strategic roadmap, aspirations etc. Any standard or prepackaged framework will not do this.
The Dependency problem
The Spotify model brings me nicely back to the beginning of this post, defining what Agile is and what it is not. Spotify can operate as they do because their teams do not have any dependencies on other teams. They designed their product so that one team can work on the search functionality, one can work on the player, one can work on playlists and so on, without stepping on each others toes.
Which highlights the real problem that many people seem to accept and ignore or refuse to address:
Dependencies between teams are what cripple software development - especially Agile
I've blogged about
dependencies
before, but I still see many people not understanding the significance of this critical issue. And it really is fundamental.
Ok, we're not doing Pure Agile, so what?
Nothing! The point of this post is to clarify what Agile was intended to be from its inception. I'm not claiming for a second that something else is "wrong", I just want to clarify the original intention.
That said, if you are a company / department that has moved from a 12 month deployment cycle to a 6 month cycle (by using some elements of some kind of "Agile") then obviously that's a fantastic achievement! You should keep repeating that, and try to see how low you can get that cycle time down.
Summary
The Agile Manifesto was written by programmers for programmers. It was never a project management tool or strategy, it was intended to make the people who actually create the value the focus, and makes their lives better.
As accurate as all this may be, sadly it isn't really something you can take and apply in most environments right now, where dependencies are are critical problem to overcome. So in a follow up post I will look at what you can do in the presence of dependencies in order to try and give some kind of confidence to the organisation as to whether work is actually on track or not, because however you work, someone, somewhere, at some point, is going to want to know if you're going to hit their dates.