Lean Software Development: Theory and Principles
Lean Software Development: This article explains Lean Software Development (LSD) in a practical way. Next to what it is (definition and origin), this article also highlights the principles and a short summary. After reading it, you will understand the basics of this information technology developement tool. Enjoy reading!
What is Lean Software Development?
Lean Software Development is a software development method based on the principles of Lean Manufacturing.
The method is emerging within the software industry with the support of a pro-lean subculture within the agile community.
The flexible framework focuses on optimizing development times and resources, eliminating waste and delivering what the product needs. This Lean approach is often referred to as Minimum Viable Product.
Lean Software Development, the definition and origin
The term Lean Software Development was introduced by Mary Poppendieck and Tom Poppendieck, in their 2003 book of the same name.
The book explores traditional Lean principles, as well as a collection of 22 tools compared to associated agile activities. The authors’ involvement with the agile community has led to more acceptance of the concept.
Lean is based on the Toyota Production System. At the end of the last century, car manufacturer Toyota found a way to produce cars in a streamlined way. Any action that did not contribute to the production process was removed, making wasted time and resources a thing of the past.
Eventually, the concept was adopted in many other industries and organizations and became known as Lean. The method was linked to software development in the 2007 book.
Lean Software Development principles
This Software Development method is based on the same principles as Lean:
- Eliminate waste
- Built-in Integrity
- Enhance learning and knowledge sharing
- Keep options open
- Team Empowerment
- Optimization Oriented
- Fast delivery times
The Lean principles in relation to Lean Software Development (LSD) are explained below.
Eliminate waste via Lean Software Development
Like the folks at Toyota, the Poppendiecks believed that waste is the biggest culprit in any manufacturing process. For this reason, they also decided to make it the first principle for their Lean Software Development model. Waste reduction directly defines the whole purpose of Lean.
In software development, the following types of waste affect the efficiency of the development process:
- Too many tasks in the log
- Unnecessary codes and functions
- Vague development requirements (software requirements)
- Quality issues
- Unnecessary bureaucracy
- Duplication (code/data)
After each iteration, meetings are held by project managers to discuss progress. Team members report the status of the project and indicate bottlenecks. They also make suggestions for the changes needed to make the next iteration run optimally.
Lean strives to prevent issues, instead of dealing with them when they arise. Effective quality management is leading throughout the entire process in all possible areas. A good way to do this is to run small iterations.
Each action is then immediately followed by a rating. The time between different phases is limited as much as possible and assessments are regularly discussed in a flexible manner.
An example of this principle in software development is Pair Programming, where 2 developers work on a task. Thanks to their experience, they are well able to come up with effective solutions and can offer more quality together than alone.
Strengthen learning and knowledge sharing
This method originated from Lean manufacturing, in which the goal was to develop a simplified pipeline production that did not require extensive knowledge. However, in software development, learning was never central.
With Lean Software Development, developers reflect directly on pieces of code and then incorporate all the lessons they have learned from the process. Pair Programming is applied to ensure that not just 1 developer learns all best practices.
Keep options open
It sometimes happens that an application or system turns out to be completely unsuitable for a market when it is launched. This can have several causes, but one of them is that the market is constantly changing and getting new needs.
The Lean application within software development recognizes this danger. It therefore prescribes to always leave room for change by postponing irreversible decisions until all knowledge has been gathered to determine that the product is still relevant.
The goal of the method is to make software development flexible so that developers can always act according to the latest knowledge without undoing previously performed actions. The importance of this principle should not be underestimated, as all projects have to deal with with uncertainties.
Rather than constantly controlling employees, Lean Software Development focuses on team member empowerment and respect. Developers are given the freedom to make important decisions based on the knowledge they have while writing the code and their personal judgment about a situation or product.
Team empowerment contributes to team flexibility and allows for changes to be implemented faster than in a closely monitored work environment.
Fast delivery times
Defects sometimes accumulate in the software development process. Breaking large jobs into smaller jobs makes it easier to identify and eliminate the causes of these defects.
The bigger the system, the more people are involved and the more parts are developed by multiple teams.
That is why it is important to have well-defined relationships within the production process. Components of a system must be able to interact smoothly and flawlessly.
Optimizing the whole
According to the authors of Lean Software Development, Tom and Mary Poppendieck, micro-optimization is still too common. This is very unproductive.
Managers choose to divide each problem into multiple cohesive parts that must then be solved by different teams without optimizing the systems themselves.
Lean Software Development therefore stands for optimizing the entire system.
Lean Software Development metrics
Lean metrics measure the performance of a system and are used to provide a holistic view of the overall health of a system.
The basic metrics for agile and lean processes are lead time, cycle time, team speed, and open/close ratios. Some of the most well-known metrics are briefly explained below. The values help in making decisions about process improvements and planning.
The lead time statistic indicates how long it takes for a task to be completed from the moment it is requested. It is also used to indicate the time it takes from idea to delivered product.
If a team wants to respond faster to customer needs, it is important that the lead time is shortened. This is achieved, for example, by simplifying the decision-making process.
Lead time includes the cycle time below.
The cycle time indicates how long it takes to make a change in the software system and implement the change in the production process.
Teams working in short iterations according to Lean and Agile principles can reduce cycle times to minutes instead of months.
Team speed reflects how much work a team completes in a single iteration. This number is used for planning, not measuring a team’s performance.
Speed is an inappropriate way to measure success because it often gets in the way of quality.
Open / close ratios
Open / close ratios show how many production problems are reported and how many are immediately closed again. The long-term trend is more important than the short-term figures.
Lean Software Development summary
Lean Software Development has been developed from the philosophy of Lean Manufacturing, which originated from the Toyota Production System after adoption in the business world and beyond. This method was introduced in Tom and Mary Poppendieck’s book of the same name.
The method has the same 7 principles as Lean Manufacturing. Eliminating waste is the most important of these.
In addition, it is important to build a system in which problems are tackled in a flexible and fast way.
The third principle is about creating knowledge sharing, something that is not done enough in software development, according to authors Tom and Mary.
Principle four reflects the flexibility of agile: keeping options open. By postponing irreversible decisions as long as possible, it remains possible to make changes that keep the product relevant.
Team empowerment is chosen over team control in this Lean approach to software development. The developers must be able to do their thing in short iterations and discuss developments directly with fellow developers or their project manager.
The sixth principle concerns delivery times. Breaking large tasks into small pieces makes it easier to identify the causes of problems, which in turn makes it easier to deliver products quickly.
Principle 7 tells the developer to focus less on micro-level optimizations.
Now it’s your turn
What do you think? Do you recognize the explanation about Lean Software Development? Is this method applied in your your work environment? Do you think the principles of Lean Manufacturing are appropriate for software development? Do you think the method can be improved by adding other techniques?
Share your experience and knowledge in the comments box below.
- Poppendieck, M. (2007). Lean software development. In 29th International Conference on Software Engineering (ICSE’07 Companion) (pp. 165-166). IEEE.
- Poppendieck, M., & Cusumano, M. A. (2012). Lean software development: A tutorial. IEEE software, 29(5), 26-32.
- Ebert, C., Abrahamsson, P., & Oza, N. (2012). Lean software development. IEEE Computer Architecture Letters, 29(05), 22-25.
- Poppendieck, M., & Poppendieck, T. (2003). Lean software development: an agile toolkit. Addison-Wesley.
How to cite this article:
Janse, B. (2022). Lean Software Development. Retrieved [insert date] from Toolshero: https://www.toolshero.com/information-technology/lean-software-development/
Original publication date: 03/14/2022 | Last update: 11/29/2023
Add a link to this page on your website:
<a href=”https://www.toolshero.com/information-technology/lean-software-development/”>Toolshero: Lean Software Development</a>
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?