Lean methodology was originally used in vehicle manufacturing — but it’s now an increasingly popular methodology in software development.
But what exactly is lean software development?
Here’s what companies need to know about implementing lean software development on their teams.
Lean software development comes from a set of principles outlined in The Toyota Way that originate from the Toyota Production System. In 2003, the book Lean Software Development: An Agile Toolkit made the first attempt at translating those principles to software engineering.
The original Lean Software Development book recommends a lot of specific practices, but the key principle from which all others derive is value stream mapping. Value stream mapping looks at a project timeline and highlights only activities that directly add value for the customer.
Everything else is waste and could theoretically be eliminated, including:
For companies to successfully implement lean software development methodology, they should know the basic principles. The primary principles of lean software development include value stream mapping, continuous improvement, and elevating problems through the andon mechanism.
Also sometimes referred to as “VSM,” value stream mapping uses diagrams and symbols to show the complete information and material flow needed to deliver a product to a consumer.
It details all steps and actions needed to get a product from its idea stage into a customer’s hands — and in the case of software development, at a consumer’s fingertips and on their screens. Again, it details only what adds value for the consumer.
There are two important parts to value stream mapping: Current state map and future state map.
Current State Map: This shows the current state of your product and documents any existing problems with the current flow of information and materials.
Future State Map: This shows the idealized flow of information and materials you want on your team.
When implemented over time, value stream mapping helps your team identify where waste occurs and how to improve efficiency to give the consumer the final product they value.
Lean is founded on kaizen, the idea of continual improvement. Continuous improvement is exactly what it sounds like — making improvements on a regular basis.
In a lean methodology specifically, continuous improvement comes through:
Value stream mapping plays a large role in continuous improvement, as it helps give teams powerful data that they can assess to evaluate where changes should be made.
However, these changes aren’t necessarily large. In fact, with lean, these changes are meant to be small, yet incremental. Teams work together to assess problems and processes and improve them.
These changes are also meant to be sustained over time, so they have a lasting positive impact on software development team systems.
The Japanese term for “lamp,” andon highlights processes and elevates problems as they arise. It alerts the team leader of problems so they can be solved with minimal interruption.
In a vehicle manufacturing setting (where andon began):
Andon allows others to keep working and only halts the belt if an issue is not resolved within a cycle. This provides minimal interruption for people at various workstations.
The process is similar in software development — teams are alerted of an issue so they can develop a plan to solve it, and the rest of the team can continue working on other issues as necessary. It minimizes interruptions and helps keep working conditions the same for those not directly affected by the issue.
Software management tools can play a key role in alerting teams of problems as soon as they arise.
When teams are alerted of problems with the andon mechanism, they can solve them in a way that interrupts other processes as little as possible — but still gets the issue resolved quickly.
After understanding the important principles of lean software development, teams should be mindful of the kinds of waste they may encounter.
One of the primary aims of lean methodology in software development is to minimize waste, so it’s important for them to know the different kinds. Once teams know the types of waste they have on their team, they can develop ways to make their developers and systems more efficient. More on that later.
With value stream mapping, continuous improvement, the andon mechanism, and identifying waste, lean gives you a complete overview of the software development lifecycle. It shows you where your downfalls are and how to become more efficient.
Other methodologies tend to focus on efficiency relative to historical trends, or compared to other organizations. This can be helpful, but it will only take you so far. Lean, however, can take you the rest of the way.
With lean, as you analyze your business, flag problems, and identify waste, this reveals gaps where your team has an opportunity to reduce it.
You can implement new systems, methodologies, and tools that help your teams work smarter, — not harder — and with less rework. Your team learns to continually adapt, picking up new skills and implementing new systems and tools as necessary.
This is a great time-saver and investment in your team’s skills, as your developers spend less time rewriting code and more time learning to create software that works efficiently in the first place.
In software development, other methodologies can fall into the trap of being a process for the sake of process — not because it’s delivering real value. Lean, however, is fully aligned with the business goal of delivering value for customers at the lowest cost above all else.
As you focus on what customers value, reduce waste, and elevate problems with the andon mechanism, this allows you to deliver a top-quality product (app or website) at the lowest cost. You continually identify opportunities to implement new systems that make your software and team more efficient.
Additionally, it forces your team to focus on only what’s essential and wanted by customers — instead of spending time on unnecessary features.
Because one of the main functions of lean is to produce a product with the least waste possible, software development companies that want to operate successfully in this framework need to be aware of the 12 kinds of lean waste in software engineering.
The 12 kinds of lean waste software development teams need to know include:
Once companies have a thorough understanding of the different types of lean waste, they modify their practices and reduce it on their teams. Learn more about the 12 types of lean waste here.
Agile has revolutionized the software industry during the 21st century and replaced waterfall as the predominant method of software engineering. More recently, The Lean Startup transformed how people think about efficiently developing new technology products.
The key differences between agile software development vs. lean are:
The good news is that lean enhances agile rather than replacing it (like agile replaces waterfall), so you can incrementally add elements of lean without having to make major changes.
Trial and error is sometimes inevitable in software development — but lean software development helps companies minimize waste and work the most efficiently.
Knowing the benefits, key principles, and types of waste software developers may encounter in lean methodology will help them successfully complete projects with minimal rework.