Agile and DevOps have both amassed a cult following. Books — fiction and nonfiction (little known fact: the Werewolves and Vampires in Twilight are meant to represent DevOps and Agile) — have been written about them. Conferences have been themed around them. Countless internet arguments have been started about them.
Based on that context alone, you may find yourself thinking there’s a chasm of differences that separate the way these "rivals" approach project management for software development.
But, in reality, they’re not that different. In fact, for larger businesses and SaaS enterprises, it’s less of a mortal combat and more of a sibling rivalry.
The origin stories of Agile and DevOps share an undeniable link: the 2008 Agile Conference.
First, let’s go back to the ’90s [Editor’s note: 1990 is as far away from us as it was from 1960, which is really fun to think about if you’d like to feel the heavy weight of age pushing down on your shoulders], when manufacturing industries were being re-imaged with new technologies, but software was still an afterthought to hardware. Many software developers at the time were increasingly frustrated by unproductive, disorganized software development practices and some of them gathered in 2001 in northern Utah to create a better way (it was like Burning Man, but without the drugs and the dust and the giant burning effigy). These developers would come to be known as the fathers of Agile and included aerospace engineer Jon Kern, Extreme Programming pioneers Kent Beck and Ward Cunningham, and 14 others. The conference marked the beginning of Agile as a methodology for improving software development processes and would inspire hundreds of conference presentations over the next two decades.
One such event was the 2008 Agile Conference in Toronto. There, developer Andrew Schafer scheduled an ad hoc meeting for anyone interested in talking about “Agile infrastructure.” But only one person attended: Belgian engineer Patrick Debois, who would officially coin the term DevOps, thanks to this meeting of the minds.
A year later, at the 2009 O’Reilly Velocity Conference, Paul Hammond and Flickr engineer John Allspaw would further develop the idea of a bridged development and operations methodology. Unfortunately, Debois wasn’t able to attend the conference to meet Hammond and Allspaw, but he caught a livestream of their presentation on the collaboration of dev and ops at Flickr. Their talk inspired Debois to host his own event in Ghent, Belgium—called DevOpsDays—where he would officially label the new Agile system administration philosophy DevOps.
From day one, DevOps has had its roots deeply interwoven with Agile principles. But as DevOps developed more and more into its own beast, differences between the two began to emerge, and, with those differences, separate camps of supporters amassed.
On the one hand, Agile methodology emphasizes continuous change and evolution through process improvements. It focuses on fast, seamless software development by empowering engineers on small teams to share skill sets and work within frameworks such as Scrum and Kanban to ship code quickly.
On the other hand, DevOps focuses on continuous testing and development by driving communication, integration, and collaboration on an enterprise-wide scale across large IT teams. Its supporters advocate for breaking down barriers between the two sides of IT and deploying new products using continuous delivery.
So why the sibling rivalry? Because people often reduce both Agile and DevOps to their flashiest, most controversial parts: Scrum and continuous delivery, respectively. These two approaches can feel like opposites, with Scrum emphasizing two-week development pushes and CD pushing for daily, sometimes hourly, releases.
While it can be fun (for some people) to get into epic Slack arguments about the nuanced differences between the two, dwelling too hard on what separates them and insisting on an “either/or” strategy isn’t productive.
At their most basic, both methodologies are about streamlining software and hardware development through collaboration. However, they do so at two different, complementary layers of an organization. You can’t solve productivity issues that plague an entire horizontal by streamlining only the top (DevOps) or bottom (Agile) half alone.
When team leads or department heads feel pressured to choose between the two, the right hand of the business effectively robs the left, and vice versa. This results in money and effort going into fixing one half of the pipeline, but nothing changes, because there are still issues upstream or downstream in the other half.
The reality is that DevOps is essentially an extension of Agile that expands lean methodologies beyond software development teams into operations to create a cross-functional organization. If you focus too much on keeping Agile and DevOps horizontals separate, you undercut the benefits of both by creating unnecessary walls within your organization.
While Agile and DevOps have tactical differences, they both set out to solve a core issue (albeit at different scales): miscommunication. While the methodologies have different ways of going about how to create better collaboration between teams, there are four main strategies and focus areas they share:
When companies shift their focus to understanding the ways that DevOps and Agile are similar, it’s easy to see how the two can be combined to shore up processes and achieve similar goals.
DevOps and Agile complement each other because they are similar philosophies but are applied at different levels of an enterprise. Together, they drive both inter-team collaboration and inter-departmental (Dev and Ops) collaboration. Basically, they’re little Russian nesting dolls of development efficiency.
DevOps and Agile cut process fat by forcing organizations to create documented, automated processes to support operations and development workflows. DevOps does this by emphasizing documentation and automation that fills existing process and communication gaps so every IT project follows the same flow between teams and is checked thoroughly to ensure that nothing falls through the cracks. Agile ensures efficient work at the team level by emphasizing daily check-ins between developers to avoid stalled code, accounting for all projects and deadlines through Kanban systems, and breaking projects down into their core parts.
To get the most out of both, companies should lay an Agile framework like Scrum or Kanban on top of the integrated teamwork structure from DevOps. This not only ensures effective top-down and cross-organizational communication but also
Organizational silos are bad news for internal and external app development at every level. Agile and DevOps in tandem will break them down and result in better communication, collaboration, and innovation.
DevOps, with its focus on testing and automation, provides the infrastructure and plumbing needed to Agile to be applied at scale.
At its core, DevOps insists on frequent testing of each project component early and often. This ensures that no one part of your hardware or software will threaten your system or app as a whole down the line when deployed (or we should say, not threaten as much). Additionally, the core integration of automation into the DevOps methodology ensures that this testing is done consistently to upload QA at each step, and reduce the time it takes to perform each test.
Agile is easily bootstrapped for a variety of use cases, but primarily focuses on best practices for small teams and getting code out the door as quickly as possible versus as securely as possible. This is fine for individual features that can be quickly corrected, but too loose to be applied to large, enterprise projects with complex project maps.
When a company implements both, they get a robust application structure and better application suites based on pre-set scopes from the Agile side. At the same time, DevOps will deliver the necessary security and quality checks to make sure changes don’t endanger larger projects, which contributes to better quality overall.
Once again, DevOps and Agile are two sides of the same value-driven coin. On one side, DevOps focuses on integrating feedback from and delivering value to a company’s stakeholders. On the other side, Agile aims to quickly implement change requests from end users to deliver more customer value.
Both do so by emphasizing frequent review and comment cycles. Traditionally, developers and engineers had to wait until after releases to get feedback from shareholders—whether internal or external—about issues or improvements. By using both methodologies at once, operations and development teams can seek out this feedback at more frequent intervals to deliver a better product that drives business and customer value at once.
Note: Companies need to decide early on what to do if shareholder and customer feedback conflict, however. Top-level buy-in for DevOps and Agile will ensure consistent and clear governance for handling feedback.
The teams responsible for developing hardware and software are frequently, and famously, at odds with one another. Delays from one side adversely impact the other, and last-minute changes in app requirements or server environments can hamstring projects indefinitely.
DevOps practices make each side more efficient by enforcing better best practices and more documentation clear up project scopes and make specs easier to follow. But often communication silos still exist because of the sheer size of operations and development teams and the volume of work being done by each.
Agile principles can break down these communication barriers and make it easier for dev and ops teams to sync on key project updates to avoid delays or broken code later on. By implementing Agile practices like the Scrum daily stand up or visual Kanban boards that improve status tracking, more time can be spent building and innovating.
Additionally, Agile emphasizes the need for every engineer on a project to be able to sub in the skills of his teammates. This means that each developer or engineer must have enough of an understanding of the work done next to do them to do it themselves. When level of collaboration becomes commonplace, companies enjoy high-quality de facto communication between individuals, teams, and departments because people are more aware of the work happening around them.
By combing Agile and DevOps, companies can use tools like from Agile frameworks like Kanban and Scrum to ensure that all teams, regardless of skillset, are kept in the loop.
Automation is at the core of the DevOps methodology. It not only ensures that testing is done quickly and consistently, but that valuable engineering time isn’t wasted on repetitive work that can be done by software instead.
Despite Agile’s focus on cutting process fat to lean out software development pipelines, it doesn’t share this innate focus on automation as a way to drive efficiencies. In fact, many Agile teams often waste time getting stuck in the code review and testing stages of development. Additionally, Agile sometimes focuses too much on getting code out the door and not enough on what happens to it once a feature leaves the building.
DevOps can fix this. When companies automate code review and quality assurance testing, they give back valuable time to their developers while also ensuring higher-quality code. This results in code shipping faster and builds deploying with more consistency and less risk.
Both DevOps and Agile are focused on delivering a value-driven product to end users quickly, whether internally or externally. This means that the two require much less compromise to implement when rolled out together, compared to doing either one with legacy/waterfall methodologies (which would struggle to meet DevOps and Agile timelines).
While DevOps operates on a larger, enterprise scale than Agile, its release schedule is more ambitious, with teams typically releasing product daily or even many times a day to achieve continuous delivery. However, because Agile focuses on continuous integration (that is, testing frequently and integrating feedback quickly) based on fast-paced two-week sprints, the release schedule of DevOps can fit neatly within longer Agile project timelines.
Despite what the internet would have you believe, there’s no one way to do development and project management correctly, especially as an enterprise business. Instead of trying to make your workflows and teams fit neatly within the borders of the hottest methodology, embrace both to realize the best operational ROI.
If you’re looking for more ways to improve your use of DevOps and Agile, check out us, Clubhouse. We make it easier to plan and build the best product possible—no matter what framework you use. Even if it’s neither of these.