Just one month into my time at Copado, I have the opportunity to work on a new DevOps journey model that outlines key steps to implement DevOps. I may be new to Copado, but I am not new to the DevOps space. I spent the last three years working in product marketing for CI/CD, five more working in IT operations and APM, and a tour of duty in the storage industry (ahh the pre-AWS days of old - when VMs were shiny, and Green IT wasn’t yet green-washed).
I have seen many models in my time. Models that work, models that worked until something huge in the landscape changed, and models that never worked because they were entirely theoretical and not at all practical. So you can imagine my chagrin when my first meaty project was ‘yet another model’.
In this introduction to our 5 Steps to DevOps Success blog series, I’ll introduce the steps, explain the thinking behind them, and show how they help struggling teams reignite their creativity to find solutions to DevOps pain.
Do Maturity Models Work?
Dr. Nicole Forsgren, a formidable, straight-talking woman-in-tech I much admire, had this to say about the subject. She likens maturity models to a back brace: a must-have if you’ve got a broken back but a source of atrophy and weakness if your back is in fact…. Not broken. This feedback is specific to maturity models. And this makes sense. Maturity models presuppose your next best step.
But who are we to assume what that step is? It’s not as though before xyz vendor came along that you all had the same problems in the same order. Broken backs all around!
There is also the problem of evolution. Maturity models presuppose a destination. The destination of ‘mature’, the badge of having accomplished all the check marks on the list. The problem is, this industry of DevOps tools moves FAST. By the time you achieve the maturity described in your year-old model, the industry has evolved. Competitors who can adapt to that change quickly eclipse organizations who are myopically focussed on their own trajectory.
So what is useful? I believe that strengthening the fundamental components of software delivery is the place to start. Michael Jordan famously said, “Get the fundamentals down and the level of everything you do will rise”. Every company embarking on (or continuing) their DevOps journey needs a solid foundation of clear steps to implement DevOps that still leaves room to grow, differentiate, and break into uncharted territory. The good news for me (and for you!) is that the “5 Steps to DevOps Success” is just that - a prescriptive yet adaptable framework that strengthens your fundamentals so you can elevate everything else you do. It is not a maturity model.
DevOps Stage 0: Struggle
In DevOps, we subscribe to the theory of constraints (TOC) - the idea that in every complex system there are bottlenecks throughout. A constraint is a place where the flow of value is stuck. The human consequence of the constraint is struggle. When the flow of value is impeded it impacts us as employees, managers, and human beings.
Remember, we think first with our limbic brain (the feeling brain that elicits emotional response) then seek justification with our neocortex (the thinking, reasoning brain responsible for executive function). So it follows that the place to begin a good model is identifying where you’re struggling. What hurts? Maybe your back isn’t broken, but somewhere in your software delivery lifecycle, constraints are causing very human, very real pain. And this pain will not be the same for every company!
Once we understand our struggles properly, we can begin mapping each struggle to common underlying causes - problem areas in your fundamentals you need to shore up.
Where Does it Hurt? Finding the Source of DevOps Pain
So where do DevOps teams often feel pain? These are the top culprits we’ve encountered:
Confusion resulting in lack of visibility
Regular errors due to a lack of quality controls
Inefficiency resulting in lack of speed
The inability to analyze and correlate data about the software release process resulting in a value gap, meaning teams can’t innovate to maximize ROI.
Stressed teams lack resilience. The team faces regular “unpleasant surprises” and struggles to resolve them.
A team suffering DevOps pain feels confused, inefficient, and error-prone. Members can’t make sense of their data in order to find quality gaps and are stressed beyond their ability to put preventative measures in place. Such a team is likely not high-performing (turnover is probably quite high as well, which introduces the additional hurdles of brain drain and low morale).
What are Copado’s Five Steps to Implement DevOps?
You can see that we’ve mapped Copado’s Five Steps to the pain that DevOps teams often experience. Customers can use this methodology to assess their current state and to guide ongoing improvements. These five steps ensure visibility, quality, speed, innovation, and resilience across all domains of the software development process.
Visibility - The biggest challenge most development teams face is a simple lack of visibility. Teams that lack a single clear view of plans, changes, environments, architecture, and performance find it impossible to make progress on delivering effectively for the business. The first step is gaining situational awareness into these key aspects of development to gain clarity on how to improve.
Quality - Understanding your current state clearly will usually reveal major quality gaps. Lack of process, lack of controls, and lack of development standards inevitably lead to rework and waste. Teams aren’t able to move quickly and effectively. Identifying defects late in the release cycle creates added risk and higher costs. The quality step emphasizes shifting testing left through close collaboration between QA and dev teams to integrate quality and compliance into the entire process. This lowers change failure rates and time to recover from defects.
Speed - Having built the foundation of visibility and quality, teams can move far faster. Eliminating waiting times and tedious manual processes increases throughput and speeds time to value. Speed is gained through better-coordinated handoffs, along with automating deployments and tests to shorten lead times and increase deployment frequency.
Innovation - The prior three steps establish the technical foundation for effectively delivering ideas. The fourth step is to increase rigor around what teams deliver by optimizing for impact and ROI. Old ideas gradually become commodified and taken for granted; the way to increase value is by aiming for new insights and innovations. Fast feedback loops, adoption monitoring, and effective prioritization unlock teams’ potential for innovation.
Resilience / Adaptability / Continuous Improvement - Delivering impactful features easily will unlock the most critical capability of all: the ability to adapt and pivot as business needs change. Rigidity and long change timelines prevent such flexibility. Resilient teams optimize for learning and experimentation at the edges of the organization, continuously improving and self-correcting as needs evolve.
The Methodology Behind the Model
When designing the Five Steps to DevOps Success, we started by thinking about pain. How do we take a struggling team and help them rise to a place where they are thinking, learning, and growing? How do we stave off the atrophy that is an ever-present danger in static maturity models?
The answer, luckily, is something that pro-code and low-code innovators often possess in spades: curiosity. It’s at the root of all learning but is dulled when people are not engaged in their work. To make companies, teams, and individuals effective we must help reawaken their curiosity, not just about effective industry practices but about how our organizations can improve. We only gain knowledge when we’re motivated to gain knowledge. And we can only improve by learning.
The Thinking Process: What DevOps Can Learn from Lean Production
While curiosity is at the root of improvement, without a process to guide it, you won’t get far. Solving complex, interlinked problems often requires systematic digging into the entire organization. Overcoming the later challenges depends on overcoming the earlier challenges. So where teams lack visibility, they will tend to lack speed, which affects quality, value, and resilience.
It is important to note that you may have visibility in some areas but not in others. Similarly, you may have adequate speed in some areas but not in others. These dependencies promote an order of operations, but that does not mean you need a maturity-based approach. Instead, you can implement what’s known as a “Thinking Process” in lean production. It’s a way to identify the root cause of the constraint without creating new problems.
The Thinking Process answers the following questions.
What needs to be changed
What should it be changed to?
What actions will cause the change?
Helping you answer these questions about the pain you are experiencing as you endeavor to release awesome software into the world is why the 5 Steps to DevOps Success exists.