Why enterprises fail at DevOps: 3 keys to success

The things you need to do to improve productivity and DevOps practices in large organizations are very different than they are for companies that have to coordinate work across only 5 to 10 people.

In fact, if you're in a large company and try to follow in the footsteps of smaller, nimbler firms, you're very likely to fail. The perspective you have on DevOps and how to improve flow in your organization depends largely on the size of your organization and the coupling in your architecture.

Much of what you've likely heard about DevOps practices applies to loosely coupled architectures. Most people believe that if you have a tightly coupled architecture, then you should go to a loosely coupled architecture first. But that's a difficult and painful effort that takes a lot of time.

Instead, you can apply DevOps principles to tightly coupled architectures to address inefficiencies in your development and delivery processes. First, understand how DevOps practices differ at large enterprises. Then follow the following the three tips below for success.

World Quality Report 2017-18: The state of QA and testing

How DevOps differs in large organizations

One reason why applying DevOps principles in large, tightly coupled organizations tends to be more valuable than it is in small teams is because the inefficiencies across hundreds of people are more pronounced.

With a 5-to-10-person team, it’s really about empowering the team. Smaller teams can come together with grass-roots efforts to improve the way they develop, qualify, and deploy code on their own. Although they may need some help removing roadblocks and require some extra support, the role of the executive is not as important as it is for large enterprises.

With a small team, it's about giving them the support and infrastructure they need and then holding them accountable for the quality of the business results—all the way out to production—and putting more operational-type capabilities on the team.

[ Special coverage: DevOps Enterprise Summit 2017 ]

If you're in a large, complex enterprise, however, that doesn't work as well, because you don't have small teams that can independently develop, qualify, and deploy code. It requires coordinating work across tens or hundreds of people, and to do that you need a more structured approach for how you build up, qualify, and release your code.

1. Executive leadership is key

You need an executive or a group of executives to work with the team to coordinate creating and optimizing the deployment pipeline in order to ensure that everything is working well together.

Executives need to be involved in developing the plan so that they own working with the organization to prioritize and implement changes. Executives also have to work with the team on an ongoing basis to understand what's working and what needs to be improved next.

2. Break down your architecture into subsystems

In addition to strong executive leadership, a large organization has other tasks it must complete to improve DevOps processes. The company needs to break its architecture down into smaller, more manageable pieces—subsystems. Then it needs to create a deployment pipeline that builds those subsystems up into stable releases with appropriate automated quality gates. This in turn helps reduce the cost and complexity of the testing.

Breaking the architecture into subsystems also helps with the triage process because issues are localized to the subsystem or application that created them. Because the deployment pipeline doesn't need to pass through complex test environments in loosely coupled organizations, those organizations experience fewer deployment issues. 

3. Understand what needs to be improved, and apply metrics

This approach helps you localize the identification of issues as early in the deployment pipeline as possible to improve the efficiency of the triage process and reduce feedback time for developers. It also documents how code flows from a business idea to production for complex systems, which is the first step toward understanding the processes that need improvement.

Once you understand how that comes together, you can start mapping it with metrics that tell you where to find the biggest opportunities for improvement. Then you can start improving that over time—and continually improve that process.

It's a systematic approach of defining how code goes from a developer's box all the way into production and then putting metrics on it to tell you what you need to fix.

It's a matter of scale

More and more large companies are excited about DevOps and the many potential benefits of embarking on a DevOps transformation. The challenge many of them have, though, is figuring out where to begin and how to scale DevOps practices over time in large enterprises.

The general DevOps principles are the same for large and small deployment pipelines; practices are what differ, depending on the size of an organization. In principle, DevOps is about how to improve the frequency of deployment while maintaining all aspects of quality, which requires coordinating work across people.

However, the practices that you use for coordinating the work across hundreds of people can and should be different than what works in smaller firms. Understanding these differences prepares you to understand the impact of the movement to DevOps in more complex, larger organizations and the approaches you should use.

World Quality Report 2017-18: The state of QA and testing

For more on this topic, come to my workshop, "Starting and Scaling DevOps in the Enterprise," at DevOps Enterprise Summit, where I'll talk more in depth about how to analyze your deployment pipeline to target your first improvements to address the largest inefficiencies in software development and deployment.

I'll also explore the different approaches necessary for deployment pipelines, coordinating the work of small teams versus what is required for coordinating work across very large and complex organizations with many teams.

[ Special coverage: DevOps Enterprise Summit 2017 ]

Topics: DevOps