Here’s a question I get asked often: Is it Agile and DevOps? Or is it Agile vs. DevOps? You’ll find that the answer changes from person-to-person and day-to-day. The truth is, Agile and DevOps can be apples and oranges in some scenarios, and two peas in a pod in others; they each serve a specific function that can either work together hand-in-hand or operate individually.
Understand yet? OK, let’s simplify—how does Agile compare to DevOps, and what are their respective functions?
What is Agile?
Think of Agile like a coin: On one side, you have the mindset, or the “BE,” if you will. It is the brainpower behind the action, as explained by the values and principles set forth by the Agile Manifesto. On the other side of this coin—the “DO” side—Agile defines the varieties of process frameworks and role definitions in which to accomplish the “BE.” These are the governing tools that allow the “BE” to be enacted effectively. Without the “BE,” the “DO” is rarely effective.
According to the Agile Manifesto, Agile is defined by the following four values and 12 principles:
- Individuals and interactions over processes and tools;
- Working software over comprehensive documentation;
- Customer collaboration over contract negotiation; and
- Responding to change over following a plan.
- Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
So, now that we’ve covered what Agile is, what is it not? Contrary to a widely held belief, Agile is not just Scrum, Kanban or any other specific development framework. While it’s true that these frameworks do complement Agile, Agile is a standalone concept. In the same vein, Agile involves more than just building a product backlog for a development team; it is an entire mindset shift that is meant to reshape the way that a team—which can be from any department, not just IT or web development—produces work.
It’s also not just the literary definition of agile, which is the ability to move quickly or easily. While Agile does emphasize producing quality work faster, it’s only one facet of a much larger work strategy.
What is DevOps?
Unlike Agile, there is no defined methodology, framework or manifesto—and likely, there never will be. Instead, the priority lies in the order: people, then process, then tools. And, depending on different models, this can be accomplished in a number of different ways. But whichever method is chosen, the outcome must support minimal disruption and optimize the communication between the development and operations teams.
DevOps follows three key “ways” and three specific focus areas to help teams deliver software in the most reliable way possible:
The Three Key Ways
- Systems Thinking
- Systems thinking emphasizes the performance of the entire system, as opposed to the performance of a specific silo of work or department. This can be as large as a division or as small as an individual contributor.
- Amplify Feedback Loops
- Creating the right to left feedback loops. The goal of almost any process improvement initiative is to shorten and amplify feedback loops so necessary corrections can be continually made.
- Culture of Continual Experimentation and Learning
- Creating a culture that fosters two things: continual experimentation, taking risks and learning from failure; and understanding that repetition and practice is the prerequisite to mastery.
The Three Focus Areas
A common misconception is that DevOps is dependent on other development methodologies—such as Agile, XP or Waterfall—to be effective. But the truth is, it can be effective on its own because it carries its own culture and ways to accomplish software delivery; it doesn’t require a framework or methodology to deliver like Agile does. Each of the previously mentioned frameworks will feed into DevOps to reinforce an ecosystem of reliable software delivery.
DevOps is also not just about prioritizing speed or creating a software delivery pipeline—it’s about establishing a reliable order that leads to consistent, quality software delivery.
Most practitioners will find themselves working primarily with either Agile or DevOps depending on their backgrounds. And, over the years—given the dogmas attached to each of these—clients are finding it harder and harder to understand how these two can work together.
Stay tuned for our next blog, where I’ll explain how DevOps and agile can work together to provide a seamless software creation and delivery process, while providing excellent quality code and more reliable deliveries to customers.
Want to learn more about DevOps and agile, and what they can do for your company? Contact us!