With Digital transformation at the forefront of business strategy, the demand for software development is higher than ever before, making speed and agility the highest priority for businesses today. Most businesses have embraced Agile Development practices such as Scrum and DevOps to increase their agility when it comes to software development, however, confusion exists over how these frameworks and methodologies relate.
This article aims to provide some clarification over the dependency and relation between Agile and DevOps, providing context to help those working in Agile Development projects to more easily understand and embrace these methodologies
It started with the Agile Manifesto
Courtesy of the Manifesto for Agile Software Development (Agile Manifesto) created in 2001, the software development landscape began shifting from a fixed, document-driven, heavyweight, linear approach to an adaptable, iterative, lightweight, team-based approach.
By following the values and principles of Agile Manifesto development, teams are able to deliver increased business value by delivering quality software containing high-value features in transparent and predictable ways, that allows for change.
The relationship between Agile and Scrum
It’s worth mentioning here how Agile and Scrum fit together. While Agile defines the values and principles of Agile software development, it doesn’t prescribe a process or framework for how it should be done. This is where Scrum comes in. Scrum is a framework that prescribes how to perform Agile software development (well not only Agile software development, but that’s a story for another post). You can think of Agile as the ‘What’ and Scrum as the ‘How’ when it comes to Agile software development. I’ll cover Scrum in further detail in a future post
With Agile allowing development teams to produce functioning software in shorter iterations, there was now pressure for the downstream processes such as testing and deployments to improve. Without improvements in testing and deployments including release management, the ultimate goal of Agile; which is to reduce time to market of quality software, could not be achieved
Next up was Continuous Integration (CI) and Continuous Delivery (CD)
This need for improvement in downstream processes as a result of Agile leads to new processes and technologies intended to streamline the entire software delivery lifecycle, such as Continuous Integration (CI) and later Continuous Delivery (CD). CI was introduced to solve integration issues during the development process by having the development team frequently merging their code into the master branch and triggering automated builds against which automated tests could be executed. CD is the extension of CI, in which the release process is also automated to allow one-click deployments at any time
Extending Agile to Ops Teams with DevOps
And here’s where we clarify what DevOps is. While there is no one definition that exists for DevOps, to me DevOps is simply a holistic approach consisting of philosophies, practices, and tools to deliver high-quality software using modern software development and infrastructure processes. Many people think that DevOps is simply automating your delivery pipeline with CD and while CD is important, DevOps has a much broader context. DevOps helps to bring the typically siloed operational teams into the software development process, creating a truly Agile cross-functional mode of working
In simplistic terms DevOps can be thought about as an extension to Agile, that helps Organizations with strict release criteria and controls, increasing their agility by engaging operational teams early in the software development process.
If you are familiar with the ‘Triangle’, people, process and technology you can think of Agile Frameworks such as Scrum as the Process and People elements and DevOps as the People, Technology elements, plus a new element Data.
Regardless of your role, if you are involved in software development then I think is imperative to take the time to research and understand not only the relationship between Agile and DevOps but also their meaning and how they apply to your Organization and role.