Defining the 5 DevOps Principles: CALMS
DevOps is a ubiquitous term these days. I’ve lost count of the job ads that look for DevOps engineers and the products that sell themselves as the ultimate DevOps tool. At its core, DevOps is about principles that successful organizations use to collaborate more effectively.
It’s difficult to define what DevOps means. To help, we have something like CALMS. It’s a framework to assess an organization’s ability to adopt DevOps. Jez Humble coined this acronym in The DevOps Handbook. It stands for culture, automation, lean, measurement, and sharing.
Let’s go over each concept and talk about what they mean.
Culture
DevOps, a former colleague of mine is fond of saying, isn’t something you buy or hire. Instead, it’s a philosophy of cross-team empathy and business alignment. You want your teams to proactively take responsibility for the whole software development process, end to end. You want individuals and teams to use systems thinking to fix overarching problems in your organization, not just local issues.
Culture is, thus, a crucial aspect of DevOps. However, you can’t rush it. Culture is fragile. It evolves and grows organically. Every organization has its own pace. Change can be scary, so you’ve got to understand that some people might be reluctant in the beginning.
Without alignment, people won’t feel empowered to break barriers and stretch themselves. Don’t make the mistake of renaming some job titles to DevOps engineer and expect change to follow immediately.
Automation
DevOps isn’t a technical artifact, yet automation is one of its core tenets. To iterate quickly, you need tight feedback loops. To achieve those loops, it’s imperative to have high levels of automation.
Manual tasks don’t scale as the organization grows. Moreover, they are error-prone and slow. If your developers spend their time working on mundane busy work, they won’t have time to improve your system. The two practices that are most commonly associated with automation nowadays are continuous delivery and infrastructure as code.
Lean
Being lean means accepting that failure is inevitable. Instead of trying to prevent or punish failure, you should embrace it as an opportunity to learn. This mindset is closely related to agile software development. Practicing agile doesn’t mean you don’t have a plan, though. It means reacting quickly when new information becomes available. It also means being flexible about rejecting approaches that aren’t working.
You may notice how these principles build on each other. If your culture promotes learning from mistakes, people will naturally experiment more. If you have strong automation, it’s easier to pivot if you change direction. The lesson is to avoid focusing on one single aspect.
Measurement
Iterating fast only works if you know where you’re going. And for that, you require data. Measuring what you do in the software development process is a non-negotiable precondition to make fact-driven decisions. Otherwise, you leave the door open for politics and feelings to form the basis of your decision process.
Disciplined organizations collect data about everything. They know how their customers interact with their products. Additionally, they also know how their teams develop software.
Sharing
Lastly, sharing is the glue that ties all the previous principles together. Whenever teams gather new insights or become better at some process, they should share them freely across the organization.
A culture that supports constant sharing fosters constant learning. This is not only good because it upskills everybody, but it also encourages breaking down silos. The best example lies in the DevOps world itself. Initially, the concept started to bring development and operations closer together to deliver more value to customers.
The Meaning of DevOps
In summary, DevOps is about transforming the culture of your organization so that
- You move faster
- You’re more efficient
- You collaborate more effectively
It’s reflected in the five principles (culture, automation, lean, measurement, sharing) that I’ve discussed.
How do you get started with DevOps? There are many resources on the internet about it. However, if you’re interested in a comprehensive course about the topic, check out Cprime’s DevOps Boot Camp . This course is about understanding the meaning and the value of DevOps. It’s also about how to implement its principles in your organization.