DevOps Mindset and Principles
First and foremost DevOps is a mindset based on core principles. The most important of which is that everyone that is part of the software delivery process works together through the entire application lifecycle. And that everyone is equally responsible for designing, building and running the software.
So many people come to DevOps looking to learn practices that make them “DevOps”. But DevOps is not just adding certain practices to your software delivery process or adding a particular role to your team. Nor is it using a certain tool. Conversely, above all else "DevOps" is a shift in mindset and the adoption of a specific set of core principles.
The Mindset and Principles of DevOps
In the same way that Agile principles describe the criteria that allow you to make intelligent decisions about how your Organisation approaches the delivery of software. So to does DevOps.
Culture, Automation, Lean, Measurement and Sharing
Generally the scope and breath of DevOps is often summed up as Culture, Automation, Lean, Measurement and Sharing or CALMS for short. CALMS is a framework that allows Organisations to not only assess their ability to adopt DevOps. But also measure their progress throughout the transformation.
The CALMS acronym was coined by Jez Humble, one of the co-authors of “The DevOps Handbook”.
The CALMS Model - DevOps Mindset and Principles
DevOps is about fostering a culture of share responsibility and accountability. In addition to continual learning and experimentation. Generally this starts with having at least one group of people devoted to establishing this type of culture in a grassroots type of way. However, it is paramount that this group have the support of senior management is paramount in order to truly break down silos between teams.
Lean thinking focuses on flow through the entire value stream. So by applying Lean principles to your software delivery process you can identity constraints and disruptions as waste. And to mitigate or eliminate this waste. As a result optimising the value stream by minimizing Work-In-Progress (WIP). Making work more visible and reducing hand-off complexity and wait times. In addition to continuously delivering small increments of functionality to users.
Making automation a first class citizen of your way of working is a core principle of DevOps. So you must architect for automation where it makes sense. And by doing so you will help remove repetitive mundane tasks, create repeatable and consistent processes. As a result your teams will be able to focus on higher value work, reduce human errors. And increase the speed at which they can deliver software without sacrificing quality or reliability.
Collecting data is essential for continuous improvement. As a result teams need to collect data on their processes, deployments and environments. In order to understand their current capabilities and where improvements can be made. This data should empower teams to make more informed decisions over where to invest their efforts. In other words you must strive to build a data-driven culture.
Sharing is a large part of DevOps, sharing within and between teams (and enabled with the proper tools) keeps everyone working toward the same goals and eases friction. Shared learning, where team members learning from other member’s experiences and teams learning from other team’s experiences within the organization is vital for growth. Growth comes from both successful and failed small experiments.
To Sum Up
Ultimately DevOps is a mindset and set of principles that shape the end-to-end process that you take to deliver software. CALMS is a conceptual model that you can use to help establish and build a DevOps mindset with your organisation and teams.