Plutora Blog - Agile Release Management, DevOps, Value Stream Management
The Agile + DevOps Effect: 6 Keys to Software Delivery EvolutionReading time 7 minutes
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 evolutionary outgrowth of Agile. It’s exposing new audiences (IT Operations) to the Agile way of thinking and doing things.
The New 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 stream management.
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…
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
Lean principles are centered around delivering value 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 where there’s persistence is absolutely critical to success.
When ThoughtWorks went 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 monolithic codebase
- Long-term product vision – teams started thinking about modularity, 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 the product team.
The Puppet Labs State of DevOps Report 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.
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.
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 stream management 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 repeat using value stream mapping to understand your process. Then look for a value stream management tool 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.