Lean Software Development
What is Lean Software Development?
Lean Software Development is an Agile methodology that adapts the Lean practices and principles of the Toyota Production System to Agile work. The methodology is based on several basic beliefs:
- Errors occur because of the system that people work in, not because of the people themselves; the system allowed errors to occur because it is flawed or incomplete
- The people doing the work are closest to it, so they best understand how it can be improved
- Trying to improve each individual step in the process is less important than improving the process as a whole; improving individual steps may actually impede other process steps
- The most efficient teams are ones whose work is limited to their capacity
- Successful systems limit the amount of time between idea generation and delivery to customers
- Limiting inventories and the amount of work-in-process can improve team efficiency
In many ways, Agile is an application of Lean principles:
|Lean principle||Agile application|
|Have teams collaborate to optimize work||Create self-organizing teams|
|Implement practices “just-in-time”||Wait until work is needed to analyze, design, and execute|
|Determine what customers value||Collect feedback in iteration reviews and incorporate adjustments into subsequent iterations|
|Deliver value to customers quickly||Create products as increments and release them to customers as early as possible|
|Build quality into the system||Develop generalists who can test for quality and implement test-driven development|
|Configure work into groups or cells that can complete all of the tasks needed to finish the work in “one-piece flow”||Develop teams that agree on a definition of “done” and can produce increments that satisfy all selected requirements|
|Reduce error in the system||Incorporate feedback from iteration retrospectives to improve work|
|Minimize complexity and non-value-added work to increase the speed of delivery to customers||Plan individual increments and iterations to address only the work immediately needed|
Optimizing the Whole
In Lean Software Development, management and teams work together to “optimize the whole”—they focus on improving the work of the entire organization rather than focusing on improving the work of individual teams. They plan product releases to deliver value to customers and to deliver value to the business itself. They implement Lean practices across the organization, coordinating management, production, and delivery work to one goal—minimizing waste while increasing quality and the speed of delivery.
Value Stream Mapping
Agile methodologies are very good at encouraging agility in teams but, to be effective, practitioners need to look at an organization’s entire process—from product concept to customer delivery. Lean practices encourage this approach by developing value stream maps. Value stream maps are graphic representations of all of the work and work processes an organization completes to create and deliver products. It lists all of the process steps as well as the delays and non-value-added work that create waste in a system. By visualizing the system as a whole, teams can minimize cycle time and eliminate waste to improve the total time it takes to deliver value to customers.
Kanban is a lean practice that focuses on the flow of work in projects. As teams complete increments, work is “pulled” from a work queue to begin new iterations. New work is added to the queue to fill empty spots. Kanban manages the work-in-progress during a project, and eliminates potential waste by limiting the need to estimate parts of a project that may not be attempted.
Kanban is briefly explained in the following video from bti360:
Lean Portfolio Management
Because Lean practices encourage practitioners to look at an organization as a whole, they are particularly useful in managing company portfolios. Lean portfolio management ensures that an organization has the right mix of products in production while correctly matching that production to the capabilities of its teams. It helps organizations allocate resources to the right projects or tasks at the right time, preventing the misallocation of resources to noncritical tasks and projects. It helps companies improve processes to ensure that projects work together to provide the most value to the organization. It looks at all of the organization’s product lines and ensures that all of its teams work effectively to produce high quality products that will have the greatest return on investment* for the company. Lean portfolio management isn’t about maximizing resources to their fullest extent; it’s about delivering value to customers and to the business.
To test your understanding of the content presented in this assignment, please choose the correct answer
1. Which of the following statements is true?Choose only one answer below.
a. Errors are caused by the people in systems, not the systems themselves.
b. Improving the individual steps in a process will optimize the system as a whole.
c. Successful systems limit the time between the delivery of value and the generation of ideas.
Correct. Successful systems limit the time between idea generation and the delivery of value to customers.
d. The people doing work are too close to the work to be able to evaluate it properly.
2. Which of the following practices helps teams view end-to-end processes in an organization?Choose only one answer below.
b. Value stream mapping
Correct. Value stream mapping provides a graphical representation of an organization’s entire process, from concept to delivery.
c. Lean portfolio management
d. Lean process evaluation
3. Lean portfolio management ________.Choose only one answer below.
a. helps organizations select the right products to produce
Correct. Lean portfolio management ensures that companies select the right products and helps teams improve the processes to produce those products.
b. ensures that organizations invest only in projects that result in positive cash flow
c. looks at projects to ensure that they work independently to improve business
d. ensures that organizations use their existing resources to their fullest extent