During the quarterly RAiD learning day on 23 Nov 2023, RAiD had the rare opportunity to host Gene Kim for a talk on what he had learnt over the last 23 years about DevOps. For those who are unfamiliar, Gene Kim is an American technology executive, author, and researcher. He is known for his work in the field of IT operations and DevOps, and is the co-author of the books The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win and The Unicorn Project: A Novel about Digital Disruption, Developers, and Overthrowing the Ancient Powerful Order.
He is also the founder of IT Revolution, a company that focuses on helping organizations improve their IT operations and is a popular speaker and has spoken at many industry conferences and events. Additionally, he is an avid researcher and has published articles on topics such as IT operations, security, and organizational culture.
But what is DevOps, why is it important, and what do we being in the Air Force have anything to do with it? And why only DevOps? There are so many other Digital terms these days, and I feel it's important to first clarify what each of these terms mean. Even for those of us leading Digital Transformation, it is not unusual to confuse and conflate DevOps, Agile, CI/CD, and especially so in the military, misunderstand what the Ops means in DevOps.
DevOps is a set of practices and culture that aims to bridge the gap between development and operations teams by automating the software delivery process and promoting collaboration, communication, and continuous improvement. It emphasizes the integration of development, testing, deployment, and operations, through the use of technologies such as continuous integration, continuous delivery, and infrastructure as code. Operations in the context of software development and IT refer to the activities and processes that are responsible for maintaining and managing the systems and infrastructure that support software applications. This includes tasks such as provisioning and configuring servers, deploying and updating software, monitoring and troubleshooting systems, and ensuring the availability and performance of applications.
Agile is a software development methodology that emphasizes iterative, incremental development and collaboration between development teams, business stakeholders, and customers. It is a way of working that aims to deliver value to the customer through fast, flexible, and adaptive development processes. Agile methodologies include Scrum, Kanban (看板), and Lean Software Development.
While Agile focuses primarily on the development side of software delivery, DevOps also includes the operations side, and the collaboration and communication across both teams. Agile methodologies can be integrated with DevOps practices to make the software development process more efficient, but they are not the same.
CI/CD (Continuous Integration and Continuous Deployment) is a practice that is often associated with both DevOps and Agile.
From the DevOps perspective, CI/CD is a set of practices that automate the software delivery process, allowing for faster, more reliable, and more secure deployment of code changes. It helps organizations to achieve the goals of DevOps such as faster time to market, improved quality, increased agility, and reduced costs.
From the Agile perspective, CI/CD is a way of working that aligns with Agile principles such as delivering value to the customer frequently, collaborating with customers and stakeholders, and being adaptive to change. By automating the delivery process and allowing for fast and frequent deployments, CI/CD allows Agile teams to deliver value to their customers more quickly and efficiently.
In summary, Agile is a software development methodology, while DevOps is a culture and set of practices that aims to improve collaboration and automation in the software delivery process. Both are important and can work together to help organizations deliver value to their customers more quickly and reliably. CI/CD is a practice that is closely related to both DevOps and Agile, and it can be considered as part of both. It is a practice that emphasizes automation and integration, which is the backbone of both DevOps and Agile methodologies. However, if you only have time to pick one concept to understand, then DevOps would be it.
Gene shared his own definition of DevOps: The architecture, technical practices, cultural norms that enable us to increase our ability to deliver applications and services quickly and safely, which enables rapid experimentation and innovation, and the fastest delivery of value to our customers while ensuring wolrd-class security, reliability and stabilty so that we can win in the marketplace. Which he summarised as, tl;dr: Better Value, Sooner, Safer, Happier.
It can be argued that all companies today are software companies to some degree, as software has become a critical component of many industries and businesses. DBS Bank CEO Piyush Gupta had remarked in a recent interview with "we started to act less like a bank and more like a tech company ..." and it just goes to show how even tradition institutions like banking need to transform in order to survive. The use of technology and software has become so increasingly important in automating processes, analyzing data, and providing customers with new and innovative products and services, that it needs to become a company's core competency.
Many companies today rely on software and technology to support their operations and to interact with their customers. For example, e-commerce companies rely heavily on software for their online storefronts, inventory management, and shipping logistics. Manufacturing companies use software for automation, control, and monitoring of equipment, and for tracking production data.
Without good IT support, many companies would struggle to remain competitive in today's digital economy. Software is becoming an essential part of business operations, and companies that are not able to effectively leverage technology and software will find it difficult to keep up with their competitors.
With this perspective of the current environment where companies compete, the adoption of DevOps enable key competitive advantages such as:
-
Faster time to market: DevOps enables organizations to quickly and continuously deliver new features and updates, allowing them to respond more quickly to changing customer needs and stay ahead of their competition.
-
Improved quality: DevOps practices such as automated testing and continuous delivery help to ensure that new features and updates are of high quality and free of bugs.
-
Increased agility: DevOps promotes collaboration and communication between development and operations teams, allowing organizations to be more flexible and adaptable to changing business requirements.
-
Reduced costs: DevOps practices such as infrastructure as code and containerization can help to reduce costs by automating the provisioning and management of IT resources.
-
Better customer satisfaction: DevOps practices such as continuous delivery and monitoring can help organizations to quickly identify and resolve issues, leading to improved customer satisfaction.
-
Better security: DevOps practices such as continuous testing, monitoring, and incident response can help organizations to identify and respond to security threats more quickly and effectively.
But while many companies understand the important and value of DevOps, what is not clear is what organisational transformation, if any, needs to be done in order to reap the benefits of DevOps. Furthermore, the seemlingly technical nature of the subject not only discourages deeper study and research but instead promotes embracing an approach to let someone else more technically inclined to figure out what to do. However, based on what Gene had surprisingly shared, the success and failure of DevOps has more to do with culture and leadership than the technology that support its. But before a discussion on the Five Ideals of DevOps can take place, I would make an appeal to the reader to peruse the two easy-to-read fiction novels written by Gene.
The Phoenix Project by Gene Kim, Kevin Behr and George Spafford is considered as one of the most influential books in the field of DevOps. It is a novel that tells the story of an IT manager at a fictional company called Parts Unlimited and the challenges he faces in turning around the company's struggling IT operations. The book uses this narrative to introduce and explain key concepts and best practices in DevOps, such as agile development, continuous delivery, and infrastructure as code.
The strength of The Phoenix Project is its use of storytelling to make complex concepts more accessible and relatable. The book is written in an easy-to-understand language and is not overly technical, and is something I would strongly recommend for those new to DevOps.
The Unicorn Project is a sequel to The Phoenix Project and continues to explore the themes of IT operations and DevOps. It is set in the same company called Parts Unlimited, but instead it tells the same story from the perspective of a senior developer who is tasked with leading a project to modernize the company's technology stack. The book introduces the concept of the "Five Ideals" of DevOps, which are Locality and Simplicity, Focus, Flow, and Joy, Improvement of daily Work, Psychological Safety, and Customer Focus. It also highlights the importance of culture and leadership in the context of DevOps, and provides practical guidance and actionable advice for improving IT operations and DevOps.
Both books are well-written and engaging, and they provide a powerful and relatable narrative for understanding the challenges and opportunities of IT operations and DevOps. The Phoenix Project is considered as a seminal work and a classic in the field of DevOps, it provides a great introduction to the key concepts and best practices of DevOps, while The Unicorn Project builds on the concepts presented in The Phoenix Project and provides more practical guidance and actionable advice, it also focus on the importance of culture.
The main sharing by Gene was the Five Ideals of DevOps as espoused by The Unicorn Project. These are based on several key concepts and principles from the field of fields of IT operations, DevOps, systems thinking, psychology, and design. The ideals are:
-
Locality and Simplicity: This ideal emphasizes the importance of breaking down large, monolithic systems into smaller, simpler components that are easier to understand and manage. It is based on the concept of systems thinking, which emphasizes the importance of understanding how different components of a system interact and how changes to one component can affect the entire system. It also draws on the principles of microservices, which advocate for breaking down large monolithic systems into smaller, simpler components that are easier to understand and manage.
-
Focus, Flow, and Joy: This ideal encourages teams to focus on delivering value to customers, to minimize distractions and interruptions, and to find joy in the work they do. It is based on the concept of flow, which is a state of mind in which a person is fully immersed in a task and is able to perform at their best. It also draws on the principles of mindfulness, which emphasizes the importance of being present and focused in the moment, and the principles of positive psychology, which focus on finding joy and fulfillment in work.
-
Improvement of daily Work: This ideal encourages teams to continuously improve their processes and tools to make their work more efficient, effective, and satisfying. It is based on the principles of Kaizen (改善), which is a Japanese term for "continuous improvement." It also draws on the principles of Lean, which is a methodology for identifying and eliminating waste in order to improve efficiency and effectiveness.
-
Psychological Safety: This ideal encourages a culture of trust and respect where team members feel safe to speak up, share ideas, and make mistakes without fear of retribution. It is based on the concept of psychological safety, which is the belief that a team is a safe place to take risks and share ideas without fear of retribution. It also draws on the principles of trust, respect, and open communication.
-
Customer Focus: This ideal emphasizes the importance of understanding and meeting the needs of customers, and using their feedback to drive continuous improvement. It is based on the principles of customer-centricity, which is the idea that organizations should focus on understanding and meeting the needs of their customers. It also draws on the principles of user-centered design, which is a design methodology that focuses on creating products and services that meet the needs of users.
Aside from the mention of microservices in the first ideal, it is clear that there not much technology embedded in them, and its more of culture, leadership, and corporate strategy. During the sharing, he discussed the importance of blameless portmortems, mindfulness, and just culture to successful DevOps, which was uncannily similiar to our discussions about Safety in Flight Operations.
Gene emphasised that the key to successful DevOps is creating a culture of collaboration, communication, and continuous improvement. He argues that the right technologies and expertise are important, but they are not enough to ensure success. Instead, organizations need to foster a culture that encourages teams to work together, to share knowledge and ideas, and to continuously improve their processes and tools.
He also stressed the importance of leadership in driving change and fostering a culture of DevOps. Gene believes that the leaders in an organization must be the ones to lead by example, to encourage collaboration, to promote a culture of learning and experimentation, and to remove obstacles that hinder the development and operations teams to work together.
In closing, I leave the reader with a quote from Gene Kim.
"It is not big beating the small anymore... it is fast beating the slow." - Gene Kim
Kim, Gene, Kim Behr, and George Spafford. The Phoenix Project: A Novel About It, DevOps, and Helping Your Business Win. Portland: IT Revolution, 2013.
Kim, Gene. Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data. S.l.: IT REVOLUTION PR, 2019.