What Is Lean Software Development?
Lean software development (LSD) is an agile framework or a set of principles and practices that emphasize delivery value and reduce software development waste.
Join the DZone community and get the full member experience.Join For Free
Lean software development (LSD) is an agile framework or a set of principles and practices that emphasize delivery value and reduce software development waste. LSD limits queues and helps to eliminate unnecessary stages in the workflow. It focuses on improving quality, amplifying learning, and continuously improving by optimizing time and resources.
A Brief History of Lean
LSD originates from the manufacturing movement. It was implemented by Toyota Production System to eliminate the non-efficient use of time and resources. Back then, the term "lean" was suggested as well. Gradually, different manufacturing organizations have started implementing this approach in their industries. In 2003, lean software development appeared. It was first mentioned in relation to software creation in the world-known book by the same name written by Mary and Tom Poppendieck.
Principles of Lean Software Development
LSD represents lean software development principles that encourage us to identify ways to reduce waste (e.g., overproduction and handoffs). There are seven principles.
- Eliminate waste
- Boost learning
- Decide late
- Deliver fast
- Empower people
- Build integrity in
- Assess the whole
Let's explain what they are in simple words.
7 Lean Software Development Principles
The following seven concepts concentrate on how much value is delivered rather than how much work is completed. The faster you deliver a quality product to the customers, the sooner you get feedback to learn from it and identify the needs. In addition, the better you learn the customer's reaction, the deeper your perception of what they want is.
Eliminate waste. According to lean methodology software development, things that do not bring any value or make a difference to the end-user can be removed. They are a waste. In other words, it is what you spend money and time on without making a profit from it—for example, partially done work, task switching, unused code, delayed integration, defects, handoffs, waiting, etc. How to know whether a specific activity is a barrier that slows down the flow or not? First, identify whether the desired result can be achieved without accomplishing it or not. If the answer is yes, the activity can be omitted.
Boost learning. Strive for the ongoing improvement and pursuit of perfection. The team members do not only accumulate knowledge and experience but also share them with one another. It is about developing, introducing, and working on concepts together. The team in the lean software development model should have a deep understanding of what the users want and need rather than how the team imagines it to be. Specify the value in the eye of a customer. Iteration cycles, integration testing, and short immediate customer feedback sessions are a part of it: less documentation but more coding and real-time feedback.
Decide late. Avoid making decisions heavily based on assumptions and hypotheses with uncertainty. The main idea behind this principle is to wait as long as possible before making an irreversible decision, which is difficult to change. Ideally, any decision should be reversible. With a set-based approach and the fact-based solutions supported by insight rather than guesswork, you have nothing or less to redo later. Real-time data and feedback drive the decisions.
Deliver fast. Short iterations and fast delivery provide sooner feedback and ensure the team is on the right track, fulfilling the customer's current need. Rapid delivery is not equal to bad quality. Indeed, it helps to explore the product you deliver to the market and make the vital corrections quicker.
Empower people. In lean methodology, a human factor is essential. A team is more than a resource or a group of people working together. They are motivated individuals, listen to each other, and lead lean software development companies to achieve higher goals rather than keeping track of a manager's activities. The easiest way to show respect to the team is by emphasizing different perspectives, giving permission to take decisions within the organization, and evaluating the significance of their contribution to the product. In addition, a continuous feedback loop between managers and employees drives improvement.
Build integrity. Integrity relates to quality. There are two types of integrity in development – perceived and conceptual. Perceived integrity is how a user observes and feels about the product (price, maintenance, advertisement, etc.). Conceptual integrity is responsible for how smooth central components in the product work together as a single unit. In lean development, integral architecture is built on refactoring – simplicity in design, efficiency in code (no repetitions), and no extra features which are redundant or not required.
Assess the whole. A team in lean management in software development has a deep insight into the overall developing process and the field in general – from generic ideas to complex strategies. To solve problems, they assess the whole system rather than separate parts by identifying the flow of value. As a result, the way performance is measured, everyone in a company collaborates and makes the system's most effective use.
Practices of Lean Software Development
Lean development practices or lean software development tools (according to Poppendieck) are similar to what is introduced in agile. However, they focus on analyzing value at every stage and maintaining rapid improvement rather than creating a perfect process, which is impossible to achieve.
Some of the main tools are:
- Learning to see waste;
- Learning to reduce waste;
- Increasing feedback loops;
- Set-based development;
- Establishing pull systems;
- Applying for Queueing theory;
- Willingness to make an effort in a team;
- Measurements to optimize the system as a whole.
To Sum up Lean Management in Software Development
Thanks to its core principles and tools, implementing the lean software development concept appears to be a universal method for optimizing a workflow for any IT environment or IT company.
Published at DZone with permission of Anna Smith. See the original article here.
Opinions expressed by DZone contributors are their own.