Lean software development, types of waste, Lean principles, House of Lean, Lean software development principles, Value stream mapping, Kaizen
Lean is a systematic method to eliminate waste and maximize the flow of value through a system. Lean employs the practice called Value Stream Mapping, that shows the places where value is created in a system and how it flows through the organization. Waste is the effort spent on anything else other than the creation of value.
Types of waste in Lean
- Muda – major form of waste, efforts spent on work that absorbs resources, but does not create value
- Mura – waste coming from unevenness, instead of a continuous flow, switching context, stopping and starting
- Muri – unreasonable waste, coming from the burnout of people, processes or system
The theory of constrains is a methodology for optimizing the flow of value by identifying the limiting factor in a system, improving it until it is no longer the bottleneck and repeating the process. It identifies the bottlenecks that reduce throughput of a system. System thinking is the focus on optimizing the entire process and the overall delivery of a system is improved by measuring and managing throughput, que length and operating expenses and focusing on eliminating the bottlenecks.
Lean thinking and the House of Lean
Lean thinking is a business methodology coming from the history of Japanese manufacturing techniques. It is also a mindset that approaches and handles work in a lean way, meaning value to the customer is given the utmost focus. Lean thinking is about changing how you see your business and how you recognize business operations.
The House of Lean visualizes the structure of Lean when implemented in organizations. It shows the Lean method as a house whose components work together to achieve the desired goals. Just as its name suggests, House of Lean anchors itself on the concepts, strategies, and principles of Lean manufacturing. This visual representation guides organizations in optimizing their manufacturing and operations using the Lean method. It focuses on solving problems and continuously evolving through innovative principles and practices.
Lean principles
- small deliverables and limiting work in progress
- information radiators and visibility into flow
- gathering, broadcasting and implementing customer feedback
- empowered development teams free to experiment and improve
Value stream mapping
Value stream mapping is is a common Lean technique used to identify waste. A value stream is a sequence of steps that describe how product or service is built and how value is added through the work and information flows. Value stream mapping is used to identify improvements in a value stream.
Kaizen continuous improvement
Kaizen – continuous improvement – is an approach to creating continuous improvement based on the idea that small, ongoing positive changes can reap significant improvements. Kaizen is based on cooperation and commitment and stands in contrast to approaches that use radical or top-down changes to achieve transformation.
The seven Kaizen cycle steps:
- involve employees
- identify problems
- create solutions
- test the solution
- analyze the results
- standardize and adopt if successful
- repeat the cycle
Lean Software Development
Lean Software Development is a collection of principles (derived from Lean Manufacturing and Six Sigma) focused on minimizing waste, visualizing the workflow, revealing inefficiencies and removing bottlenecks, which was created by adapting Lean techniques to software development industry.
Lean manufacturing is a set of techniques, management style working culture and production environment coming from Toyota automotive factory and has its origins in the post World War 2 era, when the buying power was low and there was a high demand to rebuild factories and manufacture products with maximum efficiency, while reducing waste in the production system.
The seven principles of Lean Software Development
- Eliminate waste – identify after each iteration and develop a plan to eliminate unnecessary code or software features, more tasks than can be completed in the task log, bureaucratic processes and quality issues
- Built in quality – use software development practices like pair programming and test-driven development to ensure built in quality and integrity
- Amplify learning – every engineer shares the knowledge gained with the other engineers, performs code reviews, learns continuously and questions assumptions
- Decide as late as possible – delay commitment as long as possible, experiment and learn as much as possible before committing to irreversible decisions, incorporate functionality as late as possible to prevent the need to redo work
- Deliver as fast as possible – launch product increments quickly, receive customer feedback fast, use it to create a strategy for improvement, fail fast and learn from the results
- Empower the team – respect people, create a productive and collaborative atmosphere, encourage healthy conflict, proactive communication and constant feedback
- See the whole – examine the process from start to finish and make it as efficient as possible, optimize the entire Lean value stream focusing on the big picture
Types of waste in Lean software development
- partially done work
- extra features
- relearning
- handoffs
- delays
- task switching
- defects
Lean software practices
- Seeing waste
- Value stream mapping
- Set-based development
- Pull systems
- Queueing theory
- Motivation
- Measurements
- Test-driven development