Agile, DevOps, Microservices, Containerization, whatever the next buzzword is - all of these "revolutions" are really a result of these three steps.
- Awareness
- Acknowledgement
- Adjustment
Let's look at a couple of examples to solidify what I'm talking about. I'm simplifying for the purposes of brevity, but consider Agile and Microservices:
The same pattern can apply for DevOps:
I've given a few talks lately on the challenges of implementing DevOps in an organisation where you have little to no control over how the business operates.
In particular, my "Doing DevOps as a Politically Powerless Developer" talk has resonated with a lot of people lately.
As a "politically powerless developer" in an organisation, it can be difficult to instigate change, even when you know it's the right thing to do. In short, you probably don't have the power to implement the Adjustment part of this pattern.
But you can definitely affect Awareness. It's easy - start measuring.
Measure how long it takes for a change you commit to make it to production. What happens in that time? Is there a lot of waiting?
Measure how long it takes for a user-reported issue to get to your backlog. Add some production monitoring, and measure how much time is saved by learning about issues first-hand. How much time did you save?
Measure the time it takes to write tests, and compare that to the time you take fixing bugs for code that doesn't have tests around it. Can you prove that writing tests is beneficial overall?
Once you have information, you can give it to your boss or pass it up the chain. You've already acknowledged there's a better way, so you'll be ready with solutions once management acknowledges there's a problem!
To really instigate change and adjust how your organisation delivers software, there needs to be an acknowledgement that there's a problem. That won't happen unless there's awareness.
If you're having trouble pushing change, focus on awareness first.
]]>