The author | Christopher Lee&Sean d. Mack

The translator | sweet

If you’ve ever had a question about the history, structure, principles, or benefits of Agile or DevOps, you’ll find the answer in this two-part article, the first one focusing on the history, differences, and benefits of Agile and DevOps.

Agile and DevOps may seem different on the surface, but if you focus on their goals, they are actually very similar. Both aim to create value for customers faster and change market demand faster. DevOps takes the principles introduced in Agile and extends them to deployment and operations beyond code.

Agile and DevOps have the same goals, so you’ll find some overlap in practice. In many ways, the intersection of DevOps and Agile relates to the culture of collaboration and the modern technology practices and processes that have emerged from this culture. This can be seen more easily in processes such as continuous testing and small volume production, where exposing workflows and system telemetry helps ensure rapid delivery of work products to customers, accelerating the delivery of value to customers, while making the work as visible as possible.

Agile and DevOps focus on delivering customer value, not to provide more functionality, but to deliver the right value-added functionality to the end customer as quickly and efficiently as possible. DevOps takes agile concepts and extends them, so you can enhance agility by implementing DevOps practices.

What is DevOps? What is Agile?

Before starting to explore the relationship between DevOps and Agile, it’s important to have a common understanding of what these terms mean. Although there are many definitions, they can be understood fundamentally as a set of principles from which engineer culture and practices can be derived.

Agile has been around longer than DevOps, and its definition is more mature. First defined in the Agile Manifesto in February 2001, the Manifesto contains the following definitions:

  • People and interaction over processes and tools
  • Working software prioritizes public documentation
  • Working with customers takes precedence over negotiating contracts
  • Responding to change is better than following a plan

Although there have been attempts at DevOps manifestos, none has achieved the kind of widespread acceptance that agile manifestos have. As a general concept, DevOps values collaboration, with a particular focus on cross-functional and accountability between development and operations teams. Agile coach Anthony Gardiner says, “I test, I code, I deploy, I get up on weekends and fix bugs — I make my code better so I don’t have to get up on weekends.” DevOps can be thought of as an approach to providing value to customers, with a focus on collaboration and small volumes, continuous integration, automation, continuous testing, and continuous delivery.

While there is no single definition, Gene Kim, Kevin Behr, and George Spafford describe DevOps’ “three ways” in their seminal book, The Phoenix Project. These three approaches are at the heart of many DevOps practices.

Kim later expanded on these methods in the DevOps Handbook, which he co-authored with Jez Humble and Patrick Debois.

These three methods include:

Methods a Systems thinking Emphasize the performance of the entire system, not the performance of specific jobs or departments — as large as a department or as small as a single contributor.
Method 2 Enhanced feedback loop Create feedback loops from right to left. Shorten and enhance feedback as the goal of the process improvement plan so that necessary corrections can be made continuously.
Methods three A culture of continuous practice and learning Create a culture that fosters two things: continuous practice, risk-taking, and learning from failure; The other is to understand that repetition and practice are prerequisites for mastery of something.

history

Back in the 1990s, Agile had been around much longer than DevOps, which didn’t appear until nearly two decades later. However, both sets of principles have their roots in lean manufacturing, which dates back to the 1940s. While DevOps continues to grow in popularity, Agile is still better known than DevOps. Google Trends says there are about three times as many searches for “agile” as there are for “DevOps.”

Agile’s roots can be traced back to lean processes in the 1940s, including Kanban, a way of visualizing the workflow of parts of Toyota’s production system. The theory of limitation was also developed later. However, agile software development methods really took off in the 1990s, when a group of software developers were plagued by the highly rigorous processes involved in waterfall development. This often leads to software projects taking months or even years to fail. In the 1980s and 1990s, several iterative software development methods were born as alternatives to the waterfall approach, including Extreme programming (XP) and Kanban. In 1995, Scrum practices for agile development were introduced. Then, at the famous Snowbird Mountain Resort conference in 2001, a group of thought leaders came together to write the Agile Manifesto. Many of these changes and practices have evolved since the original manifesto, including modern Agile. While Agile lays down general principles, there are many ways to practice agile principles, with Scrum and Kanban being two of the most popular (see Kanban VS Scrum: Which is the Best Agile Project Management Framework for their differences).

DevOps is a more recent set of principles, deriving from some of the same concepts in lean manufacturing. The term “DevOps” was first introduced in 2009 when Patrick Debois held “DevOps Days” in Belgium. In 2013, Gene Kim (author), Kevin Behr (author), and George Spafford (author) wrote their book Project Phoenix, which proposed many of the concepts that form the basis of DevOps. With the launch of the DevOps Enterprise Summit in 2014, DevOps continues to expand into enterprise environments. Today, DevOps continues to grow and evolve alongside Agile.

The key difference between

While Agile and DevOps share a lot of similarities, it’s important to note that their focus is different. While Agile focuses on building applications, DevOps extends this focus to building and operating applications. DevOps takes many of the concepts of agile and extends them beyond the build process and into production. It is this extension that makes the real difference.

If there is a difference, it is mainly in the focus. Agile coach Martin Corbett said, “Agile focuses on breaking down work to deliver more value to customers as quickly as possible, while DevOps focuses on projects that extend code from build to deployment, such as continuous deployment.” In addition, Agile focuses on building working software and collaboration between development and QA, while DevOps focuses on collaboration between development, QA and operations.

While many people look for differences between Agile and DevOps, the reality is that the two approaches have very similar goals and underlying principles, and ultimately have more similarities than differences.

DevOps is an extension of Agile

In many ways, DevOps can be seen as an extension of agile, or even a natural evolution of agile. In the waterfall development process, there is a clear handoff (which is enforced). Agile, as an ongoing process, requires a new approach, and DevOps helps bring that approach to life.

The concept of full stack engineers, popularized in DevOps, is the best answer to this need for small batch releases that are at the heart of lean and Agile best practices. To reduce handovers, the engineer must know all parts of the system so that any member of the team can understand the operational requirements without having to deliver them to another team. Similarly, cross-functional teams must become the norm so that small, independent teams can deliver fully functional products without additional handovers to the operations team.

In addition, agile continuous processes require a degree of build and deployment automation. Most of these are provided in DevOps’ CI/CD practices and tools. CI/CD requires the rapid deployment of fully tested and functional code to customers. Therefore, it is easy to see CI /CD as a natural evolution necessary for agile practices. These practices continue to evolve, reducing release cycles from weeks to days to hours.

On the other hand, if you have a two-week QA cycle that only starts after development is complete, it’s hard to get the code out in a week or two. Also, time consuming things like change approval, resource release, hardware purchase and installation can prevent you from shipping code on time. Not to mention, you may have a lot of handovers, or a long and onerous release process. How do you do a two-week iteration and a two-month release process? The obvious answer is DevOps.

This is not to say that agile cannot be achieved without DevOps. Agile existed long before DevOps, and there are certainly agile teams that don’t follow many DevOps practices. As Noah Cantor said, “You can do agile practices and DevOps practices, but you can’t adopt agile principles or DevOps principles because they’re too similar to be separated.” This is not to say that they are inseparable, but that agile was both a precursor to DevOps and a source of DevOps influence.

benefits

Lean has always been at the heart of DevOps, just as Agile grew out of it. DevOps is the same way, so it’s not surprising that the two have a lot in common. DevOps takes Agile concepts and extends them beyond code deployment. DevOps takes these concepts and applies them to the management of applications and services. It leverages and optimizes agile principles and uses strengths that agile organizations have long recognized.

It’s not DevOps for DevOps sake, or DevOps for Agile. According to the 2017 DevOps Status Report, high-performance DevOps teams saw a 46-fold improvement in deployment speed, a 44-fold reduction in delivery time, a 5-fold reduction in change failure rates, and a 96-fold reduction in average recovery time (MTTR). In organizations with mature DevOps practices, these numbers are clearly underestimates.

As we look at each area where Agile and DevOps overlap, DevOps amplifies agile practices, and we want you to take some concrete steps to move your organization forward. One of the most critical steps in building collaboration is to set common goals. With common goals, you can ensure that development, operations, and QA are all working toward the same goal.

Small batch deliveries provide another great opportunity to drive DevOps practices to accelerate organizations. In processes such as Scrum or Kanban, operational tasks and operational ideas are integrated into the work. If you are using Scrum, you can also consider using Kanban, which is easier to adapt to the operational process.

No matter which method you use for small deliveries, you probably want to make sure you’re using the same system to track the work of the entire team. With a unified tracking system, you can ensure that there is no backlog and reflect all planned and unplanned work authentically, making it easier for you to make work visible. As a key tenet of Agile, we can also extend the concept of making work visible to show operations work, system operations, and architectural support. Organizations can also share this information across teams through information radiators, such as kanban.

As you look to build a more collaborative culture, treat every failure as an organizational learning opportunity. Establish rituals in this culture, such as blameless hindsight, hackathons and rewards for failure.

There are organizational implications for the overlap discussed in this article. Including QA in Agile and DevOps means we have to start building cross-functional teams and developing people with a wide range of knowledge and skills. This overlap was developed with the concept of the “full stack engineer”. While everyone knows that everything may not be realistic, we can certainly work to ensure that everyone on the team has shared responsibilities and goals, including quality and operations, if they are willing to take charge and learn.

There are many ways to adopt agile principles and reinforce them with DevOps, but the most important is the consistency of organizational culture. If teams do not agree on their goals, the team approach defined in Agile cannot be extended to operations beyond deployment. If all technology delivery teams follow the same goals, you can immediately start breaking down these silos between organizations. If we can start breaking organizational silos through Agile and intensify this work through DevOps, we will have a truly high-performance organization.

“Due to space reasons, this article has been split into two, and the next one will focus on several commonalities between DevOps and Agile, so stay tuned.”

About the Choerodon toothfish

Choerodon is an open source multi-cloud technology platform based on open source technologies such as Kubernetes, Istio, Knative, Gitlab and Spring Cloud to integrate local and Cloud environments and achieve consistency in enterprise multi-cloud/hybrid Cloud application environments. Platforms help organizations manage the software lifecycle by providing lean agility, continuous delivery, container environments, microservices, DevOps, and other capabilities to deliver more stable software faster and more frequently.

Choerodon has opened an official wechat group. Please join the group with Choerodon wechat (ID: Choerodon-C7N)

You can also learn about the latest developments of toothfish, product features and participate in community contributions through the following community channels:

  • Liverpoolfc.tv: choerodon. IO
  • BBS: forum. Choerodon. IO
  • Github:github.com/choerodon
  • Yards cloud: gitee.com/choerodon