What is lean software development?
Lean Software Development is a combination of lean manufacturing principles with the software development process. In todayâ€™s world this has become one of the fasting growing business fields to incorporate lean principles to drive improvements in their design and development processes, delivery to their customers and their bottom line. So, what exactly is lean manufacturing? Well, according to Toyota, who developed the Toyota Production System (TPS) which is accepted as a world class standard for the application of Just in Time (JIT) or lean principles as a business philosophy and methodology, they simply define lean as developing the capability to â€œIncrease customer value by reducing waste (muda)â€. I can hear you saying â€œthis cannot be true, itâ€™s too simple. I was expecting a more complex explanation of leanâ€ In fact, the complexity comes from peopleâ€™s perceptions and lack of understanding, not from lean itself. So, how does this apply to software development?
â€œLean Software Development seeks to achieve the same results as Toyota. It strives to reduce waste in the form of defects that are caused by coding problems, rework due to debugging issues, over processing, waiting or delays, etc., to try to shorten project cycle times. The purpose for doing this is to give more flexibility so a business can focus its resources on generating profits for themselves and increasing value for their customers.â€
Some believe that lean software development requires more attention to detail than when implementing lean manufacturing methods into other industries. This may be true but one thing we do know is that every business lives or dies due to the service they deliver to their customers. If a software business misses their delivery window for a new product by one day it can spell financial disaster. It can be an even harder pill to swallow if a competing software company beats them to market with a similar product. Whoever is the first to get their product in front of customers will be an outright winner in the marketplace. Lean principles are helping software companies to increase the velocity and quality of their development processes, to reduce costs and defect rates.
In an article in C++ Magazine Methodology Issue (Publication Fall 2003) called â€œLean Software Developmentâ€ written by Mary Poppendieck she said this about eliminating waste:
All lean thinking starts with a re-examination of what waste is and an aggressive campaign to eliminate it. Quite simply, anything you do that does not add value from the customer perspective is waste. The seven wastes of software development are:
- Partially Done Work (the â€œinventoryâ€ of a development process)
- Extra Processes (easy to find in documentation-centric development)
- Extra Features (develop only what customers want right now)
- Task Switching (everyone should do one thing at a time)
- Waiting (for instructions, for information)
- Handoffs (tons of tacit knowledge gets lost)
- Defects (at least defects that are not quickly caught by a test)
- Reference: http://www.poppendieck.com/pdfs/Lean_Software_Development.pdf
The basic ideas of lean manufacturing can be applied to any business environment, equally they are being utilized very successfully in lean software development.