In “The Phoenix Project”, the character Erik introduces the underpinning principles of DevOps as “The Three Ways”. Let’s talk about the First and Third Ways and how change management works with DevOps, but first let’s spend a few minutes talking about baseball caps.
Last weekend I was looking for my Atlanta Brave’s baseball cap and found three as I expected for a family of three with two adults and one child. Since they all looked alike, I compared sizes to figure out which one was mine and was surprised to find they were all the same size! How can one size fit three very different sized people? The answer was simple: They have an adjustable strap. Let’s use this idea to explore the relationship between DevOps and change management.
One size fits all with an adjustable strap
IT is being asked to iterate faster and keep our systems highly available while doing so. Those two ideas seem at odds: How do we fail fast and keep our infrastructure highly available? Change management can help!
Many people I speak with view change management as an anathema, as being incompatible with the principles DevOps. The word “onerous” comes up a lot. Inflexible is also quite popular. I understand the sentiment and would like to help the community see change management differently.
I think of change management as a continuum spanning rigorous to mild, heavyweight to lightweight. Just like the baseball cap with an adjustable strap, change management can be adjusted for as needed.
The First Way
When describing the First Way, Erik invokes Deming’s quote, “appreciation for the System”. In “The Top 11 Things to Know about DevOps” Gene Kim refines the idea as, “seeking to achieve profound understanding of the system”. In my article on DevOps.com titled “Systems of Things”, I assert that understanding the system is required before improving the system. It seems pretty clear the First Way is about understanding the system we want to improve. It is also about delivering business value to the customer.
The Third Way
The Third Way is about encouraging experimentation and building a culture that rewards risk as a way to speed maturation. Rajat Bhargava expands upon that idea in his article, “DevOps Demands we Fix Twice” where he asserts that we should release quickly to speed product maturation. It seems pretty clear to me that the Third Way is about speeding maturation of the features and functionality that deliver value. The Third Way suggests we iterate faster, accepting some amount of risk as a trade-off. I assert this risk is solely focused on features and functionality and not infrastructure.
Tighter for infrastructure and looser for features
After reading “The Goal” I began to think of code, the features and functionality that is ultimately delivered to the customer, as the material that flows through the factory and IT infrastructure as the machinery in the factory. The machinery factories only exist to process material. IT infrastructure is analogous to machinery; it only exists to allow features flow through to customers.
In a well-run manufacturing facility the material flowing through the factory and maintenance on the machinery are both governed by well-defined and well-understood processes. These processes are the analog to IT change management.
The machinery should only be down for maintenance at very specific times. At all other times the machinery should be ready to produce widgets. The same is true for the Ops part of DevOps; Ops exists to allow feature and functional to flow through to the customers. Ops should endeavor to keep the systems up and available for Dev to push code.
In practical terms, this means that infrastructure changes and code releases should be treated very differently. The frequency and timing of code releases should be decoupled from the frequency and timing of infrastructure changes. Infrastructure changes should not impact code releases and vice versa. Infrastructure changes should come with a high amount of rigor while feature functionality should come with much less.
A single change management process accomplishes this by:
- Decoupling code releases and infrastructure changes when possible
- Allow the frequency and timing of code release to be independent of infrastructure changes
- De-conflicting infrastructure changes and code releases
I think my colleague Stephen Fishman summed it up nicely, “The mission of Change Management… is to simultaneously increase the frequency of intentional change executions while reducing the duration and impact of interruptions for services provided….”
Rent to own
It can be tough to see change management and DevOps as compatible. Instead of agreeing or disagreeing, just try the concept on for a while. Rent the idea (it’s free) that change management rigor is a continuum, an adjustable strap and see how if it works for you.