Estimated reading time: 5 minutes
A long time ago, Waterfall style project delivery was the delivery method of choice. But the Agile-powered DevOps revolution changed how firms develop and maintain software. Furthermore, Digitalisation made process improvement and rapid innovation even more possible. So, how does Agile and DevOps interrelate?
Waterfall Delivery: The Old Way Of Doing Software Development
Traditionally, software companies used the waterfall delivery method to map out projects and manage milestones. At the top level, this approach consisted of a series of sequential tasks, each building on the last. Organisations would begin with alignment, then move on to the design, execution, validation, and UAT before going live.
There was no circling back. Project managers would map out the development process ahead of time, defining how work would unfold and expectations for all stakeholders. Designs had to be perfect before execution or validation could proceed.
However, as you might imagine, the approach was often infeasible. Planners would regularly make mistakes in the early stages that reverberated throughout the rest of the project. It was hard to implement changes once work started. Turning the proverbial ship around was challenging because each step built on the last. Rewinding meant going back to the drawing board.
The lack of transparent and regular status updates also caused problems for teams following the waterfall methodology. Management would often only release progress reports couched in the broadest terms, leaving developers unsure how to respond or react.
Putting these factors together, problems early on in projects tended to magnify over time. Small design issues snowballed into serious issues that undermined projects.
How Agile Is Different
Seeing these issues, agile attempted to do things differently. Whereas waterfall projects followed a set plan, agile was a series of sprint cycles that permitted self-correction.
As before, the agile method began with the alignment phase. Then came a series of cycles running from design to execution to validation to UAT and then back to design. Project managers did not set a rigid path forward. Rather, they ensured that teams stuck to an agile cycle cadence, usually consisting of biweekly or monthly sprints.
Because of this, agile brought a fundamentally interactive approach to project implementation. Deliverables were incremental, and there were regular opportunities to go back to the drawing board, fix things, and prevent issues from cropping up later. Over time, products improved to the point where they could go live.
On the surface, agile sounds like “figuring it out as you go along” but that’s a mischaracterisation. It still requires a clear path to completion and emphasises goal-planning. The difference is that it permits a level of flexibility that lets teams change their approach if it becomes clear that the original plan isn’t working whereas waterfall methodologies don’t.
Agile And DevOps: A Match Made In Heaven?
Superficially, agile and DevOps look similar. Both involve interactive pipelines and highly flexible development models, designed to bring high-quality software to market faster. However, there are differences between the two. Summarising:
- Agile is a project management system that controls software development
- DevOps is a system that brings code into production and then optimises it
Both processes relate to each other, but they are not the same. Agile is the foundation for DevOps, but it cannot replace it.
Put another way, agile controls software development while DevOps focuses on bringing effective code into production. Both are essential to the software development cycle, but they emphasise and focus on different things.
Agile is primarily about connecting people to processes and resources that can speed up high-quality development. The method lets teams circle back to fix problems that waterfall approaches would find hard to address.
By contrast, DevOps is a set of practical tools, philosophies, and approaches that let organisations deliver apps and services faster. Like agile, it is cyclical in nature and lets engineers update their plans based on changing circumstances or client requests. Projects move between “development” and “operations” stages iteratively over time. During the development stage, engineers plan the project, begin coding, build the software and then test it, using quality control methodologies. Then, during the operations phase, they deploy, operate, and monitor it.
After monitoring via visualisation or logging, the process can start again. Teams can learn from version 1.0 to inform the development of version 1.1 or 2.0. They can then use version control and source code to begin developing the next generation of the software..
Unfortunately, there is a common misconception in tech circles that agile and DevOps cannot work together. Many view them as mutually-conflicting systems that operate along separate paradigms.
However, this belief is false. Agile and DevOps use complementary methodologies for planning, building, and maintaining complex software products. From a practical and business perspective, they are both useful. In fact, DevOps grew out of agile, borrowing many of its methods and philosophies.
Virtualisation is a common feature across both methodologies. In DevOps, the technology lets teams test software in a simulated environment, seeing how it performs across vast parameter space, running the gamut of devices on which consumers are likely to use the software. Developers can engage in real-time testing, seeing how various factors will impact the entire system.
In agile, virtualisation can improve agile’s testing strategy. It eliminates roadblocks that might disrupt agile and parallel development.
Both agile and DevOps share broad software development lifecycle alignment. For instance, both methodologies seek transparency, shorter build cycles, internal and external feedback, and operational awareness. They also both emphasise the importance of quality assurance and testing.
However, these similarities do not imply incompatibility. Rather, they are an outgrowth of similar philosophical underpinnings.
Agile and DevOps interrelate closely, but there are subtle differences between them. Agile is more concerned with people and processes, while DevOps focuses more on delivering high-quality code. You can think of agile as a higher-level set of strategies and approaches, with DevOps focusing more on specific aspects of the software development lifecycle.
The approaches are not mutually exclusive. In fact, organisations can implement both, though there is likely to be some overlap.