The Agile + DevOps Effect: Keys to Software Delivery Evolution
Jan 30, 2019
Agile and DevOps are both iterative methodologies that focus on moving quickly. With Agile, you’re trying to test your assumptions as soon as possible so that you can fail early and fail fast. With DevOps, you’re creating a culture of continuous improvement, automating everything, and trying to bring value to the customer as soon as possible.
In Merging Fail-Fast Agile with Well-Planned DevOps, Vladimir Fedak compares Agile and DevOps to two side of the same coin. He notes,
“Merging these two paradigms is no easy deal, yet if applied correctly, your Agile development teams can benefit greatly by becoming much more competent and competitive in the fast-paced business world we live in.”
From this perspective, DevOps can be thought of as an evolutionaryoutgrowth of Agile. It’s exposing new audiences (IT Operations) to theAgile way of thinking and doing things.
TheNew Paradigm of Agile + DevOps: 6 Principles
There are many factors that
contribute to a successful Agile + DevOps implementation, but today we will
focus on 6 key concepts: Lean thinking, product-oriented teams, microservices
architecture, automated governance, measurement, and value streammanagement.
Lean provides a solid and well-tested foundation for Agile + DevOps, while microservices and automated governance empower product-oriented teams to go fast and deliver value to the customer. However, executing on the vision is only half the battle. It’s crucial to set KPIs and capture metrics to determine if the new methods are truly benefitting the business.
For some context on what can be achieved with Agile + DevOps, a survey of 1,770 senior business and IT executives showed that organizations that add DevOps practices to an Agile environment improve new business growth by 38% more than using Agile alone. Agile + DevOps also increases operational efficiency by 23%, compared to using Agile alone.
Sounds great, right? Well, as usual, the devil’s in the details…
1.Lean
At its core, Agile + DevOps is the logical progression of
the Lean principles set forth by the Toyota Motor Corporation in the 1970s.
These principles include:
Creating value for the business
Eliminating waste (muda)
Continuous improvement (kaizen)
Respect for people
Excellence
Lean principles are centered around deliveringvalue to the customer. It’s critical to practice minimum viable products,
build, measure and learn, minimize work in progress, and maximize flow. These
principles provide a proven framework that will help guide you towards a better
methodology for developing software and using Agile and DevOps together.
2.Organization: Project vs. Product
Project-oriented teams are temporary teams that work on a
given project for anywhere from a few months to a year. Project team members
belong to different groups or functions and are assigned to certain activities
within the project. Once the project is complete, the team is disbanded and the
members move on to new projects. The end result is that the application is
created and cared for up until delivery, at which point it is handed to a
Product Manager. For this reason, project thinking tends to be more effective
for small companies with few distinct products.
Product-oriented teams have a broader perspective, where
they focus on the customer and the continued success of the product. They run
product development and support on a long-term basis for the duration of the
product’s life. They own implementing, executing, and maintaining the product. Having a long duration of ownership wherethere's persistence is absolutely critical to success.
When ThoughtWorkswent from project aligned to product aligned, they saw benefits like:
Increased ownership and responsibility
Code and design consistency across the product
Easier to maintain smaller products as opposed to a monolithiccodebase
Long-term product vision – teams started thinking aboutmodularity, reusability, scalability, etc.
The structure of an organization with product-oriented teams looks like this, with product teams surrounded by shared services and shared capabilities.
This diagram brings up a common question regarding the
need for specialists. For an example, does every product team have to have a
security expert? Well, yes and no. There's a security function in the
organization that has security experts. But everybody on the product team needs
to understand the best practices to develop secure software from the beginning
to the end.
Every time you start a new project or kick off a new
product development, the shared services team should be part of the kickoff.
The shared services team helps shepherd the product along the way. Everybody shares in the success of theproduct team.
The Puppet Labs State of DevOpsReport
talks about product-oriented teams being critical to success. This is a very
important aspect to moving forward, breaking down silos, and making your team
more effective in an Agile + DevOps context.
3.Architecture
Microservices architecture empowers product-oriented
teams, enables Agile release strategies, and simplifies test and maintenance (because
componentized architecture is smaller and more contained, it tends to be easier
to manage).
However, don’t do microservices for the sake of microservices.Perform an intelligent analysis of
your application and break up various pieces of it as necessary. In the case of
a relatively stable Legacy application, it’s possible that it doesn't need to
be changed. If you're starting from a green field, it might make sense to start
off with a monolith, do a MVP (Minimum Viable Product) that way, then break the
monolith up into microservices.
The bottom line is this: only do microservices if they’ll deliver value to your customer.
4.Automated Governance
Automated governance at key control points is another
component of Agile + DevOps. Try to automate all the scanning of code. Build
artifacts in an artifact repository, or automate the release out the door if
you're using Plutora. Try to automate these things as
much as possible so that your end-to-end goal posts are the only places where someone
has to manually check and catch issues.
5.Measurement
Every step in the CI/CD pipeline is rife with opportunities for a KPI to be captured. It’s important to capture as many of these KPIs as possible so that you can apply them to your process. KPIs to track might include: lead time to production, defect resolution time, number of code branches, production downtime, mean time between failures, rework rate, unplanned work rate, etc.
This step is essential for optimizing the software
development lifecycle, delivering value to customers, and measuring the success
of Agile + DevOps initiatives.
6.Value Stream Management
Value streammanagement enables you to capture every step of your development process and
its accompanying metrics, so that you can then apply a KPI to it. Eventually,
this process allows you to see all of the progress being made, from the amount
of lead time to the amount of process time. You can pinpoint the problem areas
that need to be sped up or optimized across multiple
product lines, not just a single stream of work. It provides a top-level view
of what’s happening in the organization.
With a value stream management product, you can see the
entire pattern of work flowing through your tool chain. The right value stream
management tool should provide you with analytics, optics, and various
viewpoints -- whether you're a release manager, developer, or product manager.
The whole idea is to refine, reduce, measure, and repeatusing value stream mapping to understand your process. Thenlook for a value stream managementtool
that can create a live representation of what's going on rather than just a
static representation. Think about implementing change, delivering results, and
measuring impact. Once you measure that impact with KPIs and see how your
customers are responding, then it’s time to think about the next step to
improve.
All Roads Lead to the Customer
Ultimately, Agile + DevOps is a way of thinking that requires a cultural shift in the organizations it serves. People within the organization need to understand what their roles are for delivering value to the customer. A software engineer’s job is to create a product that’s going to be used by customers. By the same token, operational folks that are hosting, managing, and enabling the production of software need to realize that they are also serving the customer. In order to keep pace with market demands and pull ahead of competitors, the whole organization must get on the same page about delivering value to the customer.
Interested in learning more? Check out our on-demand webinar featuring Forrester Senior Analyst Chris Condo, Eliminate Black Box Development with Agile, DevOps, and Value Stream Management.
Download our free eBook
Mastering Software Delivery with Value Stream Management
Discover how to optimize your software delivery with our comprehensive eBook on Value Stream Management (VSM). Learn how top organizations streamline pipelines, enhance quality, and accelerate delivery.