What is DevOps? This is one of the most common requests one hears when discussing Agile/DevOps or listening to an Agile/DevOps presentation is the request to define exactly what is Agile or what is DevOps? Many individuals seem determined to discover an absolute definition of both. All too often many in the Agile and DevOps movements will oblige these requests and attempt to give an all encompassing definition of Agile or DevOps, we believe this is a mistake.
We believe this is a mistake because Agile and DevOps really are more of a philosophy or mindset rather than some concrete step by step method, process or tool set. To highlight this, we have to look no farther than the observation of many in the DevOps movement that organizations looking to adopt DevOps should look at Lean Manufacturing and specifically the Toyota Production System as a sort of reference as to why they should adopt DevOps. What the DevOps practitioners are failing to highlight is that yes, it is a good idea to look at Lean Manufacturing and the TPS (Toyota Production System) as sort of reference point in regards to understanding DevOps, but they should fully understand the intricacies of the Toyota Production System. What we mean by this is that Toyota fully understood that they could not simply take their values, methods, processes and tools they used in their Japanese production factories and simply impose those on one of their factories in another country such as the United States and think they would be successful. Toyota fully understood that what worked with their Japanese workforce wouldn’t necessarily work with their American workforce, due to a number of differences.
If one were to visit a Toyota factory in Japan and then an American factory you would discover that both factories practice the same philosophies, use similar tools and methods, but how they achieved this was different. This holds true in the world of Agile and DevOps, almost every organization is different culturally and has their own set of barriers to overcome, so how they achieve the Agile or DevOps philosophy or mindset will be different.
DevOps, an extension of Agile or a reaction to Agile?
In keeping with this theme, many in the Agile and DevOps movements attempt to define the differences between Agile and DevOps by illustrating that Agile starts in idea inception and ends at development handoff, then DevOps extends all the way to production. If one looks at this objectively, they would discover that this is an incorrect view of the relationship between Agile and DevOps. The reality is probably closer to DevOps being a reaction to the failure of the Agile movement. What do we mean by this? If we look closely at the early Agile founder’s beliefs, we would discover that while they didn’t specifically call out Continuous Integration, Automated Testing and Continuous Delivery as requirements for Agile, they instead assumed this would be a natural progression as organizations adopted Agile and matured. DevOps could be viewed as Agile, but calls out the upstream portion of Agile as actual requirements and forces organizations to confront the cultural barriers that caused that caused the upstream portion to never be fulfilled in most organizations.