Someone recently asked me about the difference between Agile and DevOps and when you use one over the other. It occurred to me that this may be a common question and warranted a blog post.
Agile is What You Are; DevOps is Something You Do
There are many ways to be agile; Scrum, XP, Kanban, and Lean to name a few. But an agile development team does not guarantee delivery of value to the customer in a timely manner.
DevOps is a concept where the development team has takes responsibility for everything from design and development through delivery, regardless of the agile methodology. At the end of the iteration, the customer has access to the value delivered by the team.
It is common for a development team to deliver a new release, but the customer does not have access to the new features in that release until the artifacts pass through Quality Assurance (QA) \ certification and are scheduled for deployment by Operations. Product updates may occur every two weeks, but QA and Operations can delay the delivery to the customer, sometimes as much as months.
I have personally been on projects where the development team will create a new version every two weeks, only to have QA and Operations delay the release until 3 months later. Additionally, the quarterly releases to the customer were not even the latest versions from the development team because QA took several weeks to certify each release.
The concept of DevOps brings the agile practices of the development team to testing and operations. For some, this gives complete responsibility to the development team, which causes concern for established QA and Operations teams. QA and Operations may respond by adopting agile practices, but this usually means delays are shortened, not eliminated.
A Real-world Example
Version 23 of a product, for example, may take 2 weeks to pass through QA and another 2 weeks to be scheduled by Operations for production deployment. In the meantime, the development team will have just released version 25 assuming the same 2 week iteration time box. This means releases are always a month behind the development team.
What happens when QA finds an issue?
A Difficult Goal To Reach
DevOps is much easier for greenfield projects without separate QA and Operations teams because they can avoid the "turf wars" which commonly occur when a project management asks to bypass the QA and Operations teams. Even then, development teams normally do not have the skills and experience to properly test and certify code for production environments. They also do not normally have the experience required to schedule deployments in a production environment without risking other systems.
QA and Operations responsibilities are critical and require special skills and mindset. Not all developers are ready for all the specialized work it takes to handle DevOps. Setting up a development environment is one thing, maintaining a reliable production environment is something else. It will require developers to learn new skills and to practice discipline for DevOps to achieve the same level of reliability separate QA and Operations teams provide.