Agile and DevOps: Optimize Your Development and Operations
There is a common misconception that Agile and DevOps cannot work together. That thinking does a disservice to everyone in the software development and delivery field. In fact, both approaches significantly add to the pillars of transparency, inspection, and adaptation. Both enable product teams to better develop, deliver, and sustain complex products.
Let’s review how businesses benefit from adopting the Agile and DevOps principles, culture, and practices.
Is producing and operating software simple, complicated, or complex?
Before we look at Agile and DevOps, let’s first look at software as a whole. If we review software development and operations through the Cynefin framework’s lens, where would it fit? The Cynefin framework is a sense-making framework that helps decision-makers make sense of their contexts and act accordingly.
The four domains that it represents are:
- The simple/obvious/clear domain represents the “known knowns”; the relationship between cause and effect is clear: if you do X, expect Y
- The complicated domain consists of the “known unknowns.” The relationship between cause and effect requires analysis or expertise; there is a range of right answers.
- The complex domain represents the “unknown unknowns.” We can only deduce cause and effect in retrospect, and there are no right answers.
- The chaotic domain, cause, and effect are unclear.
The Cynefin Framework
Let’s look at some examples in the real world. Building a bike is simple, while building a car is complicated. Putting that car on the road with many other vehicles increases the likelihood of incidents, making it complex.
Executing complicated work in a linear and sequential manner is possible with something like a Waterfall methodology. But software delivery and operations usually fall into the complex domain. And for that, we need an incremental and iterative approach like Agile.
What is Agile?
According to Agilealliance.com, Agile is “the ability to create and respond to change. It is a way of dealing with, and ultimately succeeding in, an uncertain and turbulent environment. Agile software development is an umbrella term for a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software Development and the 12 Principles behind it. Ultimately, Agile is a mindset informed by the Agile Manifesto’s values and principles. Those values and principles guide how to create and respond to change and how to deal with uncertainty.”
Simply put, Agile software development allows teams to deliver quickly, collaborate often, and continually improve their product.
What is DevOps?
DevOps represents the culture and practices of collaboration between development and operations teams. The DevOps movement preaches breaking the silos in which traditional organizations work (Dev team, QA team, Ops team, etc.). Instead, these teams work together towards a common shared goal. DevOps’ early adopters coined the CALMS acronym — Culture, Automation, Lean, Measurement, Sharing.
The DevOps practices go through the whole Software Development Life Cycle (SDLC), considering it an endless cycle. The practices of Continuous Integration (CI) and Continuous Delivery (CD) are paramount.
Generally, there are three ways, or principle underpinnings, of DevOps. They are:
The First Way: Flow/Systems Thinking — The First Way emphasizes the entire system’s performance. The focus is on all business value streams that IT enables.
The Second Way: Amplify Feedback Loops — The Second Way is about creating the right to left feedback loops. Almost any process improvement initiative aims to shorten and amplify feedback loops so teams can continually make necessary corrections.
The Third Way: Culture of Continual Experimentation and Learning — The Third Way is about creating a culture that fosters two things: continual experimentation, taking risks, and learning from failure.
Agile and DevOps: Combine and Conquer
Let’s look at how Agile and DevOps complement each other. To start, the Agile Manifesto includes several fundamental principles:
“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
“Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”
These two principles correspond very closely to the DevOps First Way outlined above. By embracing systems thinking and CI/CD practices, we achieve early and continuous delivery of valuable software. DevOps and Lean practices of Value Stream Mapping focus on the value and eliminate the waste across the SDLC process. That enables fast delivery and rapid ideation.
“Working software is the primary measure of progress.”
This principle corresponds to the DevOps Second Way, which is about providing a consistent feedback loop. Early feedback reduces business and technical risks.
“At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”
Finally, this principle aligns with the Third Way of DevOps, continuous improvement (Kaizen).
By adopting the continuous delivery mindset following Agile and DevOps practices, we can provide value to our customers faster. It makes us more responsive to internal or external factors and lowers the business risk by introducing small, incremental changes.
These practices also help us adopt a product mindset rather than a project mindset.
What do statistics say?
The 14th annual State of Agile survey provides insights into the application of Agile across different areas of the enterprise and about Value Stream Management. It also talks about DevOps:
- 76% of respondents stated that they currently have a DevOps initiative in their organization or are planning one in the next 12 months
- 90% of respondents said DevOps transformation was important in their organization
The Accelerate State of DevOps Report 2019 research provides insight into software development and DevOps practices applied by industry. It’s backed by scientific studies spanning six years with over 31,000 survey responses from working professionals. It is the most extensive and longest-running research of its kind, providing an independent view into the practices and capabilities that drive high performance.
The report states that the top-performing companies have:
- 208 times more frequent code deployments
- 106 times faster lead time from commit to deploy
- 2604 times faster time to recover from incidents
- 7 times lower change failure rate
Agile and DevOps: Final Thoughts
In the end, Agile and DevOps both strive towards the same goal: produce a product or service that provides value to clients and customers. Software development is complex. But by adopting and implementing Agile and DevOps principles, cultures, and practices, we deliver higher quality software at an accelerated rate. We also reduce risk and increase customer satisfaction.
Mark Schwartz said it best in A Seat at the Table: “In the confusion of all the different ways of practicing Agile and Lean, it is easy to forget the underlying principle, which is simply that, in an uncertain, constantly changing environment, we must continuously learn and adapt.”
To learn more about our DevOps practice, visit our Cloud & DevOps page.
Original post found here.
Authored by Daniel Rankov:
Daniel is Cloud & DevOps Manager for MentorMate, where he leads the Cloud Center of Excellence (CCOE). Daniel has been doing cloud environments architecture and implementations based on the public cloud for several years. Daniel is very passionate about the public cloud as well as the DevOps culture and practices. He is also an organizer of AWS Bulgaria User Group.