Many models and perspectives describe the complexity of an organization. In the end, it all boils down to people interacting with technology using processes. Sociologist Dr. Ron Westrum provided a typology of organizational cultures, including a generative type. Key characteristics for a generative culture include:
Encouraging these characteristics in the culture of an organization allows capacity, quality and innovation to grow. A CI/CD pipeline aids in facilitating the tools and processes to make these characteristics possible. A CI/CD pipeline is often perceived as a way to bundle and distribute software. It is the modern way to deploy software using automation instead of doing it manually. From a technical perspective, this is valid. Yet, the key concept of a CI/CD pipeline is to provide consistent quality and early feedback. By continuously monitoring the existing (quality) performance, you gain insights & data on how to improve deployments and the controls being applied.
Using the triad of people, process and technology, let us see what a CI/CD pipeline means for an organization and how it impacts the quality of the software delivery process.
Continuous integration is the practice of integrating new work with the current work. Each change triggers an automated build process that executes a series of checks to confirm the integrity of the entire software package. Continuous delivery is a set of practices to get changes into the hands of the users in a safe, quick, and sustainable way. More information on the details of the technical parts of CI/CD can be found in this blog on how Continuous Integration is part of Continuous Delivery.
These technical activities contribute to the quality and consistency of software delivery by replacing manual, labor intensive actions and providing fast-feedback on the quality and functionality of the software. While valuable, these items on their own are not enough to turn the company into a high-performance organization. The Continuous Integration/Continuous Delivery pipeline is just the technical artifact that brings technology, people and processes together.
In its core CI/CD is the place where we define and monitor what quality is. In order to become a true generative organization we need to take a look at the process and people aspects as well.
Processes are important in an organization as they act as the interfaces between different business contexts and domains. They minimize the cognitive load of these interactions by providing guidance in the expectations to everyone involved. Where the technical CI/CD pipeline codifies large parts of how we do things, processes structure the procedures around software delivery. For example, a process might describe and enforce who can review and approve pull requests. In a way it is the automation of the procedures.
Processes are typically designed to fit in a certain context. Contexts will change over time, reducing the effectiveness of a process. Automation alone doesn’t save the day as it can’t adapt when the surroundings change. Therefore, high-performance organizations place a strong emphasis on continuous improvement & continuous discovery.
The goal of continuous improvement is to instill a culture of step by step improvements through learning and experimenting. The efforts of continuous improvement should focus on increasing effectiveness whilst reducing complexity. Every change or addition to the system should make it simpler. Preventing additional complexity might take a bit of time initially, but pays off in the long run.
However, continuous improvement focuses on improving an existing approach. To prevent processes ultimately slowing you down, it is necessary to look for more fitting ones within a new context. This activity is called Continuous Discovery. Continuous Discovery is about continuously mapping your goals to collected data and identifying alternative, better-fitting processes to align them.
Instilling this culture of Continuous Improvement and Continuous Discovery is a responsibility of all involved. Leadership is a key enabler in supporting a culture where it is safe to fail, share information, and collaborate. Teams should constantly attempt to sieze the opportunity to change and improve their way of working. Retrospectives should focus on the process followed rather than the outcome.
Organizations should strive to be generative. A generative organization can produce something, or give rise to new possibilities. It produces ideas or new ways of working. Simply put, they make new things possible. Rather than just counting on management to come up with new ideas, ideas originate from the entire workforce. An emphasis is placed on “we should” rather than “we must”. Improving you technology and processes alone is not sufficient.
Another important aspect of generative organizations is that they are not surprised by failure and can absorb stressors. This third view on CI/CD can be described as Continuous Illumination and Continuous Discipline.
Continuous Illumination is about providing access to gaining knowledge, sharing knowledge between teams and the external world, and constant alignment to the mission and vision of the organization and product. However, merely providing training options is not enough. There should be a conscious effort to combine the right mix of theory and hands-on experience by encouraging a culture of sharing, easy access to documentation, and asking the difficult questions.
Continuous Discipline is about teams rehearsing procedures and increasing their problem-solving skills. The best way to achieve this is by rehearsing incidents and recovery. These exercises should be recurring and focus on becoming more effective in the event of unexpected problems. Embracing blameless post-mortems, providing clear understanding of roles and responsibilities, and rehearsing for failure will contribute towards a generative culture. More information and useful pointers on this topic can be found on Google’s site on Site Reliability Engineering.
CI/CD in DevOps is not only about automating the software delivery process. A focus on solely the technical part is a limited view. Given the triad of people, process and technology, we should consider all mentioned concepts as well.
Dr. Nicole Forsgren wrote in Accelerate:
Investments in technology are also investments in people, and these investments will make our technology process more sustainable.
An organization is a complex organism and the same goes for the software delivery process. Optimizing the process of creation and delivery requires a holistic view of the entire ecosystem.
CI/CD pipelines bring trust and safety to failure by embedding guards that prevent faulty products being promoted to production. We believe that optimizing all these continuous disciplines aids in becoming and staying a high-performance organization.