The difference between DevOps and Agile?
What’s the difference between Agile and DevOps? This is a commonly heard question, and yet not a very useful one. It is not helpful to present it as DevOps vs Agile, as if these were competing companies, and a customer could only buy one of them. Instead, there is every reason to embrace both, for they should work together. It’s almost like being asked if you would like burger or fries, gin or tonic, salt, or pepper. Bringing both to the table will deliver the best results.
Many of the messages and several of the tools and techniques are common across Agile and DevOps, especially the need for consultation, collaboration, and feedback. Any arguments over whether to do Agile or DevOps should be entirely subordinated to the question ‘are we doing what our company needs us to?’
What is Agile?
Agile started with a ‘manifesto for Agile software development’, created in 2001 that articulated the importance of delivering things of use and ensuring software is created and amended to maximize value, i.e., make and keep it useful. The manifesto made it clear that the traditional elements of software development do have value, but delivering and collaborating have even more value. It states that we believe in;
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
It is a reaction against what was seen as a traditional IT project approach that set out to fully define the requirements as a first step, and then proceed to build what had been set down. Even if those initial requirements were perfectly understood and documented and the software designed and built perfectly. Still, it is almost inevitable that the delivered product – typically delivered months or even years later – is not a fit for the actual requirements at the time of delivery. Things change, and Agile sets out to recognize that and adjust the requirements constantly as factors shift.
The Agile development life cycle is, in turn, supported by frameworks that deliver Agile realities. Most commonly, Scrum and Kanban are used. So commonly, in fact, that, for most people and purposes, they are considered essential elements of Agile. Scrum is based around 2-4 week-long ‘sprints’ of work emphasizes frequent small releases, with rapid feedback encouraging continual amendment of requirements to match changing needs. Kanban visualizes the potential requirements and facilitates prioritization and packaging to match customer needs. Kanban and Scrum and Agile all fit in perfectly with the aims and intentions of DevOps.
What is DevOps?
DevOps is about combining technological support and automation, combined with a cultural shift in IT attitudes. Agile can support DevOps by providing a mechanism for all the ‘three ways’ DevOps comprises: supporting the faster flow of releases, generating feedback, and encouraging experimentation through the iterative approach.
Many DevOps training courses include Agile (and scrum and Kanban) as essential elements of DevOps – attend a DevOps Foundation course, and you will be taught Agile and Scrum terminology. Sit the exam, and you will be questioned on it – to get the DevOps qualification requires knowledge of Agile. The idea of one being an alternative to the other is simply not logical.
DevOps builds on Agile
Where DevOps does expand the Agile ideas is in adding in the shared responsibility that comes from merging development and operations roles into a single team (or structure of teams). Agile is a software creation approach and supports that element of DevOps, especially reinforcing the need for automation of all routine aspects of the work and specifically mandating Continual Integration and favoring Continual Delivery, Deployment and Release. So in that context, Agile is a component of DevOps, essential but not enough to deliver all the benefits. What DevOps significantly adds to the Agile message is the active engagement of all parts of the build, deliver, and support lifecycle.
Agile DevOps
The Agile methodology was developed for software creation and update environment but has value in a much wider range of situations. Implementing any new approach that will require improvement, refinement, and modification works well with Agile techniques. Using the Agile techniques, Kanban boards, backlogs, and such are, in fact, directly applicable to implementing DevOps itself in an organization. No-one can implement DevOps overnight – it requires culture change and, therefore, an incremental approach, with quick wins, feedback, and adaptation. This makes Agile the ideal approach for DevOps implementation: a good realization of the synergy the two have. Consider this approach and let go of the DevOps vs Agile mindset.
Summary:
DevOps vs Agile
What’s the difference between Agile and DevOps? This is a commonly heard question, and yet not a very useful one. It is not helpful to present it as DevOps vs Agile, as if these were competing companies, and a customer could only buy one of them. Instead, there is every reason to embrace both, for they should work together. The Agile development life cycle is, in turn, supported by frameworks that deliver Agile realities. Most commonly, Scrum and Kanban are used. So commonly, in fact, that, for most people and purposes, they are considered essential elements of Agile. Scrum is based around 2-4 week-long ‘sprints’ of work emphasizes frequent small releases, with rapid feedback encouraging continual amendment of requirements to match changing needs. Kanban visualizes the potential requirements and facilitates prioritization and packaging to match customer needs. DevOps builds on Agile. Kanban and Scrum and Agile all fit in perfectly with the aims and intentions of DevOps. No-one can implement DevOps overnight – it requires culture change and, therefore, an incremental approach, with quick wins, feedback, and adaptation. This makes Agile the ideal approach for DevOps implementation: a good realization of the synergy the two have.