Interested in bringing GitHub Enterprise to your organization?
Start your free trial for 30 days and increase your team’s collaboration. $21 per user/month after trial expires.
Curious about other plans?
By now, most people in technology are familiar with the term DevOps. What we call “DevOps” will often differ between organizations, yet one thing remains the same: DevOps is defined…
By now, most people in technology are familiar with the term DevOps. What we call “DevOps” will often differ between organizations, yet one thing remains the same: DevOps is defined by people building software and how they work together, not simply by what’s in their toolchain.
As part of GitHub’s Professional Services team, I’ve had the opportunity to see the way many companies have adopted DevOps and what it looks like for teams in their day-to-day work. Here’s what we’ve learned—and some common DevOps misconceptions we’ve encountered along the way.
DevOps has been defined in many ways: a set of practices that automate and integrate processes so teams can build, test, and release software faster and more reliably; a combination of culture and tools that enable organizations to ship software at a higher velocity; a culture, a movement, or a philosophy. None of these are wrong, and they are all important aspects of DevOps—but they don’t quite fully capture what’s at the heart of DevOps: the essential human element between Dev and Ops teams, when collaboration bridges the gap that allows teams to ship better software, faster.
For organizations, DevOps provides value by increasing software quality and stability, and shortening lead times to production. For developers, DevOps focuses on both automation and culture—it’s about how the work is done. But most importantly, DevOps is about enabling people to collaborate across roles to deliver value to end users quickly, safely, and reliably. Altogether, it’s a combination of focus, means, and expected results.
Once we understand what DevOps is, it’s easier to identify what it isn’t—let’s look at a few misconceptions you may have heard before.
Sometimes we hear teams say, “We use [tool X] or automate [X process], so now we’re doing DevOps!” But as noted above, tooling and automation are part of how you implement DevOps (the means), not DevOps itself. It’s a collaborative human endeavor, and our tooling—and the automation it supports—is how we get this work done. There are many tools in this space; while it’s tempting to immediately adopt a specific set of DevOps tools or a prescribed toolchain to try to shortcut your DevOps journey, choosing the right tooling for your organization is key to your success.
One of the most common myths we hear is that Agile and DevOps are the same. While it’s easy to confuse the two, processes like Agile are part of how to DevOps, not what DevOps is. Agile, Lean, Extreme Programming, and other “work fast, ship often” models are just a few of the many ways teams can make DevOps successful. Agile ships software faster, but it doesn’t ensure collaboration with other teams in the software lifecycle, and can overwhelm test, QA, and operations teams if they’re in a siloed organization.
In practice, DevOps is different for every organization, as each brings its own unique constraints, strengths, talent, and goals; the tools and processes that worked in one company won’t necessarily translate into success for another. Although there are common practices and principles for successful DevOps transformations, it’s not pre-packaged in a box, and there are many ways that companies can successfully implement their own.
While it’s true that DevOps delivers value for organizations, helping them develop and deliver innovation to their end users with speed, stability, and reliability, there’s so much more to it. DevOps started, in part, as a way to make software more humane. By automating our workflows, people can focus more on the task at hand. This brings more joy to our work and decreases burnout.
There are a few key concepts and principles that every successful DevOps program shares. Combining these with the right tooling, process, and culture will help teams find DevOps success. While DevOps will look different for each organization and team, here are a few starting pointers:
DevOps programs are built on shared principles, and organizations will implement DevOps in different ways.
There isn’t one “perfect way” of approaching DevOps that’s better than another, but there are tendencies and common pitfalls that can make particular approaches more challenging than others.
DevOps starts with your people, then is put into practice by building with your team’s culture, goals, strengths, and constraints in mind. Understanding these will drive how you design your specific processes, guide how you choose your DevOps tools, and shape which DevOps best practices you adopt—all leading your organization to its own definition of success.
There’s no one “right” way to implement DevOps. And like everything else in technology—and anything involving humans—DevOps tooling and practices will change. By standardizing and automating your infrastructure, application delivery, and policies as code, you’ll be ready to adapt quickly—helping your team do their best work faster, while staying competitive.