The goal is to release high-quality code faster. It seems that when Agile and DevOps are used without a clear value stream management plan software is released without confidence.
Many companies worldwide use a blend of DevOps and agile methods to help elevate their value stream management and by extension their app releases. They use DevOps to increase collaboration between development and operations teams. DevOps also helps companies constantly test and deliver their apps. Agile methods focus on customer feedback and rapid releases. Agile is also focused on improving constantly changing code. The two methodologies are not that different though they both have different focal points.
The ultimate goal is to release high-quality code faster. Often however it seems that when these methodologies are used without a clear value stream management plan that software releases go out missing a level of confidence that both developers and testers desire.
A quick example
Let’s say your team completed a sprint, and is ready to push their code to production. After asking your team including the manager about getting the code to production you hear:
There is nothing left to do. All tasks are complete, and all of the testing is done. The truth is that no one knows what will happen once you push to production. Sure, everything might be fine, but there might also be some issues that will creep up.
The increasing complexity of Software Delivery
As software delivery rises in complexity it also rises in importance. No matter what your industry, product, or service you must offer some level of web or mobile app to your customers. And that’s not all. It is no longer enough to deliver the software you must deliver a high-performing version of it. It is a complicated challenge to take on.
Today’s CIOs are tasked with creating more business value with less. As a result, their goals of pursuing high productivity in software delivery sometimes falls flat. Where they fail is in the difficulties in aligning business units with developers, QA, and IT while increasing release velocity and quality. As we have noted in another blog post this is a difficult and pressure-filled position to be in.
Enter Value Stream Management
VSM helps you overcome software development complexities by taking a look at all of the steps in your SDLC process from idea to production. That process overall is what is called the value stream. Within each step, a VSM process will identify and highlight bottlenecks, silos, and other inefficient processes on the road to releasing your app to end-users.
A value stream is anything in your SDLC that is necessary from ideation to delivering a final product to your users. By placing this focus on value streams, you are ensuring that your customers are the most important part of your software development efforts. It makes sense as creating delightful experiences for your customers is what grows organizations. Bue before you can delight anyone you need to have control from end-to-end of all of the streams through your company.
Here are a few ways to gain control of your value streams.
- Connect processes teams and tools to break down silos.
- Use real-time metrics
- Encourage collaboration across teams
- Embed leadership into every step of the SDLC process
- Coordinate workflows and automate them where appropriate
By the power of all of these combined, you will identify which steps of your SDLC process add value and which create waste. You can then optimize each step to better flow through the value stream. Everything you learn from reviewing your processes will become your value stream map which shows every SDLC step. The map also brings business, technical, and testing leaders together to view the full breadth of your software release process.
It is not only the people who help you release apps with confidence. It is also the tools they use. These tools only give your SDLC process and DevOps methods potential. To deliver on that potential you need an SDLC that is focused on the customer and that brings all teams together from product owner to manual tester. With this in place, your development process will bring confidence to the quality of your releases.
Make the SDLC work for you
With your value stream map in place, you can reach your organizational goals by optimizing your value stream. In any software development lifecycle, it might seem like the end goal is velocity. That is not exactly the case and it is certainly a way to rob your teams of their confidence. No one wants to be pushed to release versions quickly without seeing the whole picture. The real goal is to get new value to your customers in a minimal amount of time. The difference is nuanced in that it is not only about speed it’s about speed and quality. You can go as fast as you like but if you do it poorly the entire company will suffer. However, with your value stream map in place, you will be able to see which steps require optimization. That will lead to an increase in release velocity.
Let’s say that in your sprints you spend more time fixing bugs than you do developing new features. In that case, you can see that your desire to release with velocity is not allowing you to release apps with confidence. The focus needs to be on quality. The speed will come.
Feedback from without or within
Sometimes in an Agile environment, the feedback comes from without. As you release your apps your users will report back on your app’s functionality which will guide your teams in their development and testing efforts.
It is helpful but the real work is coming from within and the best way via feedback loops throughout your SDLC. This is an area where value stream management becomes necessary. If you are reviewing the code while writing it, building it, testing it, and deploying it you will need to make sure that the loops are running at peak efficiency and accuracy. Not only that but the way that a value stream management platform delivers end-to-end visibility across the value stream all of the feedback insights necessary to preparing your release app with confidence will be at your fingertips. With the data at hand, you will be able to innovate faster and make better decisions relating to your releases.
Integrating Feedback into the SDLC
Before moving forward, you should take a look at where you are and where you have been in the SDLC. This comes in the form of performance reviews that will give you a picture of your production environment. This review is an important feedback loop in the process. The most important thing you can do for your web or mobile app is to find any performance issues before your customers do and also to use that performance as a baseline for your next sprints.
It is also an important aspect of managing your value streams. By integrating a level of feedback throughout your organization you will enable teams to measure their streams and compare with others. It will give everyone insights into their processes with performance metrics that can be shared across the organization.
Part of the process includes checking up on:
- Recurring application errors
- Web request performance
- Poorly performing SQL queries
- Performance regression testing
Improving code as you code
There is no better time to discover and prevent bugs than when you are working on them. One very simple way to improve your code changes is to have someone review them. I know it seems simple but it’s true, having someone look over your code and ask questions is the type of feedback loop that is not only helpful but does not take a lot of time to implement.
Additionally, there are automated ways to check your code that take out any human error.
If you have an automated build and deploy server it means that you no longer need to ask a team member to build and push new code manually. Tools like Jenkins are perfect to help automate this process and make sure that no human error comes into the picture.
Unit testing of course is a great way to test some of your more complex scenarios. Executing these tests before deployment will help validate your build.
With a value stream management system in place, all testing and stakeholder reviews will be completed during the SDLC. Your software delivery will then be in a state of continuous improvement as each team member and leader follow the guidelines set forth by the value stream management system.
Play the collaboration game with QA
We are big fans of QA around here. They receive far too little credit and far too much criticism from business leaders and developers who seem to think that QA’s reason for being is to make life harder by finding and pointing out code errors. It is literally their job and no it is not fair.
What if, you worked with QA though? Like for real.
Start by sharing information and collaborating with the QA teams. If you share all the most important details and let them know what they should test for it will go a long way in helping you discover any pesky bugs. Similarly, as we suggested reviewing previous sprints to help plan ahead do the same with QA. See how they help your app performance improve between builds.
When releasing apps having your builds go through both human and automated testing will enable you to release with more confidence.
The VSM feedback loops to release apps with confidence
With value stream management’s reliance on metrics, it is important to point out that there is so much more to it. Developing the feedback loops we discussed above is made simpler and more efficient when combined with BI insights that will come from your VSM. Feedback loops like VSM will unite teams around a converged toolchain and empower every step of your development and release process. The trick is to make each loop bring value otherwise they should be examined and eliminated.
With VSM, release managers will improve the value stream and by extension the SDLC by scoping and planning releases. They will also assess risk, and implement automation to improve SDLC efficiency and there is where you will have your web and mobile apps released free of risk and full of confidence.
Read this whitepaper to see how Digital.ai Continuous Testing is the perfect agile solution for your automated testing.