Article

Low-risk releases: Removing 7 common wastes from your software development life cycle

December 11, 2019

Even a well-functioning software development process is subject to waste. The same bottlenecks, inefficiencies and issues that present themselves on a manufacturing production line will exist in your software development “factory.” For your organization to become a highly-efficient software factory, you need to address waste in a systematic way.

Here are the seven most common areas you’ll find waste in your software development life cycle (SDLC) and how you can solve them with a DevOps approach.

1. Overproduction

In your SDLC, overproduction might come from your team producing a large set of bug fixes or features in staging that are not ready to deploy. Your process keeps humming along and the team keeps building, growing the pool of updates sitting idle. If the team were to deploy everything in staging all at once, you’d risk overwhelming your users with excessive feature additions and changes.

 

How to solve overproduction with DevOps

If you get into a position where your team is producing features at high velocity, look into your overall flow and reconsider shifting focus from quantity to quality. Shifting some time and effort to addressing bug fixes faster, for example, could create better quality software with less defects and a better pace for delivering features to the customer.

2. Stagnation

While it may not technically cost much to store stagnant software “inventory,” it's still unfinished work the organization paid for but is not seeing returns on. And the more partially completed work tickets that start piling up, the greater your potential cost when you try to address them later.

 

How to solve inventory issues with DevOps

Examine how you’re prioritizing work. If you find, for example, that developers have multiple unfinished projects, and none of them are getting done, their scope of work is too broad. Devote resources and time to proper backlog refinement and story adjustment.

3. Motion

Motion is the movement between phases, transferring software from one stage of the software development life cycle to another. Each transition is an opportunity for a roadblock to introduce waste into your process.

 

How to solve motion roadblocks with DevOps

Identify common (and anticipated) bottlenecks and be mindful of how they would affect the flow of software. Prioritize removing those bottlenecks so you don't have developers sitting around waiting for something else to happen before they can begin working.

4. Preventable defects

You can never truly be “defect-free” in product development cycles. There is no "end state" of your software; it's constantly evolving to respond to technology innovations, changing threat landscapes and more. In a year, your software won’t look the same as it does right now, and that’s a good thing. But that doesn’t mean you can’t avoid preventable defects that create rework and increase customer frustration.

 

How to address defects in DevOps

By rigorously applying a process to improve software flow, you'll build in quality and see fewer defects. A primary driver of quality is small units of work and automated testing processes. A well-built testing process will catch defects quickly, and if the unit of work is small, the changes needed to fix it will require minimal effort.

5. Feature bloat

Too many features will make your software overwhelming to use in any practical way. The more feature bloat you have, the greater the chances of something going wrong.

 

How to solve over-processing with DevOps

Proper backlog and task grooming can prevent runaway feature sets from being deployed. If your team has time to produce new features the customer doesn’t need, they have time to work on identifying and preventing defects. While this work may not be as fun for a developer, it's a better use of time.

6. Wait time

Waiting is waste in its purest form. Wait time is any bottleneck in the process (such as integration, testing or deployment) that will cause others to delay or slow their work process.

 

How to decrease wait time in DevOps

Focus on creating and maintaining your value stream map by looking at the time between each step in the process. (For example, the gap between deploying from stage to production.) Get a plan together to use automation to reduce wait times between those steps, prioritizing the gaps that require the least amount of effort to solve. Most issues with wait time will be removed with automation or a policy change in a process. For example, removing a human approval process for something that can be checked by other means.

7. Transport

No value is added in the transport phase. It's simply moving the created product to its destination. But, the opportunity for waste is high. In software, “transport” ecompasses the time between software being built, tested and approved for release and the moment when the customer uses it.

 

How to solve transportation issues with DevOps

Transport issues with software usually point to issues with integration, where artifacts are in motion. Implementing automated and painless integration processes will allow you to push software into an environment for test and deliver it as soon as its deemed customer-ready.

 

Now that you know the common areas you may find waste, keep a lookout and take action when you see the warning signs. Map your waste against your SDLC to help you take a structured approach to analyzing your flow and address inefficiencies with purpose as they arise. Reducing waste within your process will help you increase velocity, the value you deliver to customers and your company’s bottom line.