Lately I’ve been doing a bunch of work with people who use the Agile software development methods. They had a bunch of success with it in one part of their company, so they decided to extend its use across the rest of IT. Now everything is Agile.
Those who’ve been in the industry a while may remember this happening with other methods/frameworks/approaches. ISO9000, Total Quality Management, CMM. While there’s nothing wrong with these frameworks per se, I have a big problem with their inappropriate use. Square pegs, round holes, in other words.
A case in point: using Agile to do IT infrastructure.
What is infrastructure?
IT infrastructure is the baseline IT stuff of an organisation: phones, desktops, your link to the internet. It’s the mainframe that runs the billing system, and the web farm that runs your public websites. It’s the network that connects them all. It’s the FC-SAN that houses all your storage.
In the non-IT world, infrastructure is the power company, the phonelines, the sewage system, the plumbing into your house, the roads you use to get to work. It’s the boring underpinning that you ignore when it’s working and that makes your life miserable when it’s not.
Infrastructure should Just Work. If it’s unreliable, it makes everything else hard. Observe the difference between good sewage management in a first world country compared with that in a third world country. Cholera is not a daily issue in Australia, where I live.
What is Agile?
Read the Agile manifesto for more detail, but here’s the summary: it’s about software development, and values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Building infrastructure with Agile
How would you use Agile to build a bridge? How would you get from this:
How can you deploy iterations of working infrastructure? It requires completely rebuilding everything each time. That takes years and costs many millions, even billions of dollars.
To build a bridge you absolutely need a plan. Responding to change halfway through building could add tens of millions to the cost. Even then, missing a vital detail can still spell disaster.
It’s not like software where you can quickly make another copy. Physical things are fundamentally different to software.
No one does infrastructure in an ‘Agile’ way. Now, maybe builders and architects have been incredibly misguided these past few thousand years, and you really are that much smarter then they are. But let’s just pause for a moment and wonder:
Could they be on to something here?
Screwdrivers and Hammers
Imagine if you hired a painter to come and paint your house, and they used a screwdriver to apply the paint. It’s the same screwdriver they used to open the tin, so it’s not a bad screwdriver.
Agile is just a tool, and, used appropriately, it can be quite effective. But just as I’d question the sanity of a painter who used a screwdriver to paint my house, I question the sanity of people trying to build IT infrastructure with Agile.
Iteration 0 is building infrastructure
A final thought:
I’ve had Agile coaches tell me that Iteration 0 should take as long as it needs to. Iteration 0 is the one where you set up your version control system, get a wiki running, get everyone phones and desks and chairs. You know, build the infrastructure.
There’s a general acknowledgment that if you don’t do all this well, the rest of the project will suffer, and you won’t be your most effective.
Now isn’t that interesting?