Lean Software Process

There are two ways to increase your development efficiency. One way is to increase the value of your work. The other is to reduce the resource cost of your work. How can we apply the insights of Lean Manufacturing to reduce the costs involved in software development? Read on to find out.

A clockwork machine. Efficient. Perfect.

Lean Manufacturing is a methodology that transformed the manufacturing industry and offered a standard paradigm and language for solving common problems of ineffiency. This paradigm enables you to easily identify where costs are hidden, and creates a path forward to reduce or eliminate those costs.

As a software engineer for over 18 years, I have seen how much invisible waste is commonly involved in the process of creating and maintaining software, and how much of it is, for cultural reasons, is considered “necessary” or “unavoidable”. I’m sure you’ve heard answers like that when asking about things that seem wasteful. The insights from Lean Manufacturing are highly relevant to giving you language to discuss the precise types of waste, and common solutions to common problems. Using these insights will help you tackle the things that frustrate you, and give you a convincing voice when you discuss the problems you see with your teammates, employees, and leaders.

Every one of these types of waste can be eliminated. In almost all scenarios, the cost to eliminate the waste will pay off nearly immediately, and continue to offer long-term benefits.


Defects

Software bugs and business system defects are a big time waste. They are also preventable. Every defect was created by a person. Perhaps there is an error in the requirements. Perhaps there is an error in coding implementation.

Solution: Catch problems earlier. Provide more training. Improve tooling. Rework defect-prone processes.


Unnecessary Processes

Anything that expends resources, which doesn’t result in delivering bottom-line value, is an unnecessary process. This includes bureaucratic overhead, valueless code reviews, excess documentation, complex approval processes, and anything else that doesn’t translate into value for the stakeholders.

Solution: Stop performing them.


Extra Features

Often times resources are expended in creating features which don’t really deliver value to the stakeholders. Perhaps the wrong problem was identified. Perhaps the solution doesn’t solve the core problem. Perhaps there was a communication error so that what was created wasn’t what stakeholders thought would be created. All of these are avoidable waste.

Solution: Better problem analysis. Direct connection between creators and stakeholders. Stronger prioritzation.


Waiting

Waiting occurs when a work task can’t be completed because there is a blocker. Transitioning work forward to a new work state is helpful, but anything that blocks an active task from being completed negatively impacts the software delivery pipeline.

Solution: Improve process communication. Use own-way workflows. Well-groomed backlogs.


Unfinished Projects

When a project or task has been started but is incomplete and has stopped active development, the incompleteness is a source of waste. Status reports around the unfinished work are needed. The unfinished work will get out of sync with the rest of the system. There may be feature flags, database tables and other artifacts that add clutter and no present value.

Solution: Smaller scopes. Better planning. Stronger prioritzation.


Task Switching

A person or system that has to switch working modes incurs a cost. There is mental energy expenditure and a reset of focus needed every time a task switches. Task switching also frequently spills over into other types of waste, such as higher defect rates and more waiting.

Solution: Batching of like-typed tasks. Pomodoros. Smaller tasks scopes.


Motion

This type of waste is any information or material that needs to be transferred in order for work to be done: back-and-forth communication chains that you have in order to get what you need to do your job; cross-department meetings that are needed to transfer project information to developers, etc. Any time something must be directly transferred via active effort for work to happen is motion waste.

Solution: Make materials and information retrivable. One-way information flows. Efficient communications.


Manual Processes

Manual process waste is any repetitive non-cognitive task that is done by a person, manually. Not only is this inefficient, but it also leads to the creation of defects, since humans have a hard time staying focused on repetitive manual tasks.

Solution: Automate repetitive tasks. Remove unessential processes.


Summary

These eight types of waste are probably sorts that you have been feeling, but don’t know how to discuss about with your team. Learning to effectively identify where these happen in your organization will empower you to remedy them.

Each one of these types of waste is a place where money is being burned, instead of put in your pockets. Each one of these types of waste causes people stress at work, instead of helping people to be peaceful, calm, happy, and productive.

Once you have identified the most costly forms of waste in your organization, create an action plan using some of the common solution prescribed above. With applied effort, even over a short period of time, you can transform the efficiency of your organization.

The benefit? More value. More calm. Happier people. Less stress. Productivity you can be proud of.