CI/CD / DevOps / Sponsored

How to Lead Teams to DevOps Maturity

26 Feb 2019 9:27am, by

CircleCI sponsored this post.

Rob Zuber
As CTO of CircleCI, Rob helps make big technical decisions and keep teams happy and out of trouble. When he’s not testing and continuously improving with the CircleCI team, Rob enjoys snowboarding, Funkadelic and a viscous cappuccino.

In my previous two articles, I explained why DevOps maturity is a goal worth pursuing, how it can benefit your organization, and went over some common roadblocks.

Now, we’re finally ready to dig into the three pillars of DevOps maturity and why they’re so important. I’ll also share how to get them flourishing in your organization. In case you might be inclined to choose a favorite, I want to point out that these areas are interconnected and they grow together. Each supports the other in a virtuous cycle, and when you improve one, they all benefit.

To review, the three pillars of a mature DevOps organization are:

  • A culture of collaboration and trust.
  • A focus on automation and tooling.
  • A commitment to measurement and continuous improvement.

Now let’s dig into why these are so vital.

A Culture of Collaboration and Trust

If you don’t have a culture of collaboration and trust, you might have a culture of blame and silos. Besides the fact that blaming just feels pretty bad, you’ve also got information hiding. When team members don’t feel like it’s safe to share the information they have because they fear getting blamed, then no one can move up the improvement ladder. That’s a huge limiting factor. Silos are a different problem, but with a similar result: they also limit innovation by limiting access to information. Think about it this way: dev and ops used to be silos. Then we brought them together.

In a simple DevOps culture, developers are tasked with operations. This seems fine on the surface. But the problem is that all the people in the organization with experience in operations are literally sitting somewhere else. This is a silo, and learning everything from scratch is not the most efficient way of learning. We’ve now got a huge missed opportunity.

In an ideal scenario, when dev and ops come together, they’re coming together not to do each other’s jobs, but to learn as much from each other as possible. Fostering a culture of collaboration and trust means we can all solve problems faster. It means we’re working together and putting all the knowledge onto the table: giving more people the chance to notice patterns, leverage historical context, and solve the problem at hand.

Get started:

  • Hire people you trust, and give them clear accountability. In order to create a blameless culture, you first have to have a culture that trusts that all the actors are acting in good faith, and in the best interest of the org and those around them, and they’re making the best use of all the information and context they have at the time.
  • Share the truth, fix what’s broken. Psychological safety is imperative for the cycle of improvement. When people fear blame, they are incentivized to hide key information, and teams spin their wheels and waste resources fixing the wrong thing.

Automation

The next pillar is automation. Any automation requires investment, and that investment requires a culture that respects time, people, and craft. Automation, therefore, means you’re supporting the learning of your team in service of solving new problems. The team isn’t free to solve interesting new problems until you’ve automated away the old problems, so investing in automation is not just a way forward to efficiency, but a way to show respect to your team members’ curiosity and desire to grow. Help them get out of the weeds so they can solve tomorrow’s problems instead of resolving today’s.

Get started:

  • Make the task interesting and enlightening. Yes, automation is partly to save time, but for people in our space, the automation itself is a craft: Respect and enjoy the process, and not only will you learn, but it will make work more enjoyable. Recently at CircleCI, I was running our uptime calculations, and I decided to learn a new Python statistical analysis framework for data visualization. I did it partly because I wanted nice charts, but partly because I wanted to learn something new. Now, that’s a tool I can use to do anything I want.
  • Plan for repetition. The mistake we often make is thinking, “well, I’m just doing this the one time.” Accept that almost anything you do is going to be repeated, and look for ways to automate those steps so you can focus on what matters.

At CircleCI, we recently released CircleCI Orbs in order to make the task of authoring configuration easier, faster, and repeatable across projects and teams. Whenever possible, use readymade tools like these that automate your work (or create your own tools). Automation doesn’t just save your time, but allows everyone to collaborate and benefit from each other’s work. So don’t stop at automating your CI, look for ways to automate your entire development process so you and your team can move on to more fulfilling tasks.

Measurement and Continuous Improvement

The final pillar is measurement and continuous improvement. Continuous improvement is all about feedback. And you won’t get feedback without automation (see what I meant about interconnectedness?).

Let’s say you wanted to know, “How often does this process work successfully?” If it’s a manual process, it’s likely to be different every time, with a high occurrence of error. Automating that process lets you see how long it takes, its success probability, and exactly where problems are likely to occur. Automated systems give you reliable feedback, and that feedback is how you improve.

Get started:

  • Start small. Measure something you weren’t measuring before. Pick a thing and get better at it.  By starting small you can learn (how it works, where the pitfalls are, etc.), but you can also demonstrate. By seeing the impact, you can make better decisions about whether the impact is worth the investment and exactly where the value is.
  • Make it discrete. Much like agile processes and continuous delivery, when you have small increments of value, it’s much less painful to stop. If something important comes up, you have a discrete unit of value, not a half-finished project.
  • Fix something small, but don’t fix something inconsequential. Choose something important. Allow people to see some results from making small improvements, so you can get them to see that making small improvements is good. This will help you get people on board for making bigger improvements.

These three pillars working together become a virtuous cycle that drives your organization further along the maturity curve. And by practicing these tenets with your entire team, you are creating practices that scale, and learning at a much faster clip.

Feature image via Pixabay.

A newsletter digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.