Lean Software Development Nathan Decker February 4, 2010
Overview What is lean development? The basics of lean development Origins of lean software development Principles of lean software development Recap References
What is lean development? Implementation of lean manufacturing principles into a software development model Goal : Reduce the waste in a system and produce a higher value for the final customer
What is lean development? Similarities to Agile Development Agile Manifesto refresher: Developers shall value Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over customer negotiation Responding to change over following a plan Based on, yet a basis for Agile projects
Basics of Lean Development Muda Any activity that uses of resources, but adds no value Examples of waste Partially done work Extra processes Defects
Basics of Lean Development Value What the customer wants the product to do 45% of all software features go unused What do customers really need?
Basics of Lean Development Value Stream All actions required to bring project from creation to completion Types of actions Add value No value added, but unavoidable No value added, avoidable
Basics of Lean Development Flow Product is in motion at all time Compare this with a classic batch + queue methodology Which is more efficient?
Basics of Lean Development Pull No product is made until the customer requests it Requires a process that flows Pros: Correct number of items every time Easier to customize products Cons: No inventory to draw from
Basics of Lean Development Pursuit of perfection After a project flows… keep improving it Long-term improvement and short-term improvement Luckily, perfection is not a reachable goal!
Origins of Lean Software Development Lean development at Toyota Original author : Taiichi Ohno Inventor of Just-In-Time manufacturing “Costs do not exist to be calculated. Costs exist to be reduced.” Taiichi Ohno Implementation at Toyota Lean vs Batch and Queue
Origins of Lean Software Development Adapted by Mary and Tom Poppendieck Lean Software Development: An Agile Toolkit
Lean Software Development Lean applied to software Iterative cycles Feedback vs Forecast Essentially, an implementation of the Agile Manifesto Based off and a basis
Principle 1: Eliminate Waste Remove all wastes that add no value to project Three types of waste Waste in code development Waste in project management Waste in workforce potential
Wastes in Code Development Partially completed work Can become outdated and unusable Solution: Iterative cycle with modular code Defects Correction and retesting Solution: Up-to-date test suite, customer feedback
Wastes in Project Management Extra processes Wasteful/ Unnecessary documentation Solution: Documentation review Code Handoffs Loss of knowledge Solution: Don’t handoff code Extra Functions The customer doesn’t want or need a feature Solution: Continuous interaction with customer
Wastes in Workforce Potential Task Switching The danger of multi-tasking Solution: Focus on a task each release Waiting for instructions or information Developers are too expensive to be sitting around! Allow developers to make decisions, access to information
Principle 2: Amplify Learning Learning is not compulsory... neither is survival. Deming Full knowledge is impossible, need to learn as project is developed The customer should be learning too!
Principle 2: Amplify Learning Use the scientific method Create hypothesis Conduct rapid tests of possible solutions Compare results Implement the best solution Also used: Six Sigma Lean Six Sigma / Six Sigma with lean
Principle 3: Delay Commitment Decisions are often made on incomplete or incorrect information Delay until the last responsible moment Benefits: More knowledge for decision Leave options open
Principle 4: Empower the Team Make decisions as “low” as possible Shift from complete documentation to goals and guidelines Developers closest to code know the problem best Developers can get feedback for personal improvement Developers must be experienced in domain “The best executive is one who has sense enough to pick good people to do what he wants done, and self-restraint enough to keep from meddling with them while they do it.” Theodore Roosevelt
Principle 5: Deliver Fast Customers change their mind. Solution: Deliver so fast, they don’t have time to! Short release cycles About two weeks Requirements: Don’t overload developers with requests No partially completed work
Principle 5: Deliver Fast Doesn’t fast delivery lead to hasty, buggy code? Don’t confuse speed with rushing to get something done on time! Speed vs Schedule Flowing processes Development Knowledge gathering
Principle 6: Build Integrity In Perceived Integrity Does exactly what the customer wants, even if they don’t know it yet Again, continual interaction with the customer Conceptual Integrity The product works smoothly and functions well
Principle 7: See the whole Optimize the entire product, not just parts Short delivery cycles can lead to optimized parts, sub optimized whole Don’t worry about scope! By focusing on what customers want, scope will handle itself Don’t have customer overestimate what the product will do
Recap Lean development is focused on removing waste from a system and improving value for the customer Principles of Lean software development Eliminate Waste Amplify Learning Delay Commitment Empower the Team Deliver Fast Build Integrity in See the whole
References [1] Poppendieck.llc Retrieved from [2] Womack, J.P., & Jones, D.T. (2003). Lean thinking: banish waste and create wealth in your corporation, revised and updated. New York: Free Press. [3] Womack, James, & Jones, Daniel. (2005). Lean solutions: how companies and customers can create value and wealth together. New York: Free Press. [4] Ødegård, F. (2007). Lean execution: six questions for software executives. Retrieved from %20Six%20Questions%20for%20Software%20Executives.pdf [5] Middleton, Peter, & Sutton, James. (2005). Lean software strategies. Productivity Pr. [6] Poppendieck, Mary, Poppendieck, Tom. (2002). Agile software development ecosystems. Addison-Wesley Professional.
References [7] Poppendieck, Mary. (2003, Fall). Lean software development. C++ Magazine, methodology issue, Retrieved from [8] Poppendieck, Mary. (2007, May). The Challenges of bringing lean to software development. Retrieved from [9] Poppendieck, Mary. (2001, May). Lean programming. Software Development Magazine, Retrieved from [10] Manifesto for agile software development. (2001). Retrieved from [11] Poppendieck, Mary. (2002). Principles of lean thinking. Retrieved from [12] Ophir, Eyal, Nass, Clifford, & Wagner, Anthony D. (2009). Cognitive control in media multitaskers. Retrieved from