Any roles involved in a project that do not directly contribute toward the goal of putting valuable software in the hands of users as quickly as possible should be carefully considered.” – Stein Inge Morisbak
Does anyone remember the days when the Waterfall model was still around and widely adopted by the enterprises? Over the years most developers have stories of how they realized that it wasn’t giving the best results, that it was slow and inflexible as it followed a sequential process. Fast forward a few years and the principles of Kanban and scrum methodology organically evolved and gave rise to the Agile approach to software development –and we were all on board in a flash. Suddenly, software development teams were able to shift from longer development cycles to shorter sprints, fast releases, and multiple iterations.
But the evolution was not over, as we now know. As Agile shone a spotlight on releasing fast and often, enterprises started loving the opportunity to be more flexible and to speedily incorporate the feedback of their customers. However, this also revealed some drawbacks with the Agile approach. Though the development cycle was faster, there was a lack of collaboration between the developers and the operations team and this was adversely impacting the release and the customer experience.
This gave rise to the new methodology of DevOps which focused on better communication among development, testing, business, and the operations team to provide faster and more efficient development.
So now software development organizations face a choice –should they be Agile? Or do DevOps? Or perhaps somehow both? Let’s look at both approaches more closely, starting with filling in the essential backstory.
The Agile Approach Explained
Software Development approaches like the Waterfall model took several months for completion, where the customers would not be able to see the product until the end of the development cycle. On the other hand, the Agile approach is broken down into sprints or iterations which are shorter in duration during which certain predetermined features can be developed and delivered. There are multiple iterations and after every iteration, the software team can deliver a working product. The features and enhancements are planned and delivered for every succeeding iteration after discussions (negotiations?) between the business and the development teams.
In other words, Agile is focused on iterative development, where the requirements and solutions are developed because of collaboration between cross-functional and self-organizing software teams.
What is DevOps?
This is the age of Cloud and SaaS products. That being the case, DevOps can be defined as a set of practices enabling automation of processes between the software development and the IT teams for building, testing, and deploying the software in a faster and more efficient manner. DevOps is based on cross-functional collaboration and involves automation and monitoring right from the integration, testing, releasing, and deployment along with the management of infrastructure.
In short, DevOps helps in improving collaboration and productivity by integrating the developers and the operations team. Typically, DevOps calls for an integrated team comprising developers, system administrators, and testers. Often, Testers turned into DevOps engineers are assigned the end-to-end responsibility of managing the application software. This may involve everything from gathering requirements to development, deployment, and gathering user feedback to implementing the final changes.
How do they compare (or contrast)?
- Creating and deployment of software:
Agile is purely a software development process. That means, the development of software is an inherent part of the agile methodology. Whereas Devops can deploy software which may have being developed using other methodologies, based on either Agile or non-agile approaches.
- Planning and documentation:
The Agile method is based on developing new versions and updates during regular sprints (a time frame decided by the team members). Besides, daily informal meetings are key to the Agile approach, where team members are encouraged to share progress, set goals, and ask for assistance if required. To that extent, the emphasis on documentation is less.
On the other hand, DevOps teams may not have daily or regular meetings but plenty of documentation is required for proper communication across the teams for effective deployment of the software.
- Scheduling activities and team size:
Agile is based on working in short and pre-agreed sprints. Traditionally sprints can last for a week to 1 month or so at the extreme. The team sizes are also relatively smaller as they can work faster with fewer individuals working on the effort.
DevOps can comprise of several teams using different models such as Kanban, Waterfall model, or scrum where all of them are required to come together for discussing regarding software deployment. These teams could be larger and are by design much more cross-functional.
- Speed and risk:
Agile releases, while frequent, are significantly less than what DevOps teams aim for. There are DevOps products out there that release versions with new features multiple times in an HOUR! The application framework and structure in Agile approach needs to be solid to incorporate the rapid changes. As the iterative process involves regular changes to the architecture, it’s necessary to be aware of every change related to the risks to ensure quick and speedy delivery. This is true of DevOps also, but the risk of breaking previous iterations is far greater in DevOps as the releases are much more frequent and follow much faster on the heels of one another than in the Agile approach.
DevOps is a reimagining of the way in which the software needs to be configured and deployed. It adds a new dimension to the sharp end of the value chain of software development i.e the delivery to the customers. There is some talk about that that DevOps will replace Agile, but our view is that DevOps complements Agile by streamlining deployment to enable faster, more effective, and super-efficient delivery to the end users. That’s a worthy goal –so why choose between the two!