980 likes | 2k Views
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?.
E N D
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 • http://www.poppendieck.com
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 http://www.poppendieck.com/ [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 http://www.leansoftwareinstitute.com/Lean%20Execution%20-%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 http://www.poppendieck.com/pdfs/Lean_Software_Development.pdf [8] Poppendieck, Mary. (2007, May). The Challenges of bringing lean to software development. Retrieved from http://www.poppendieck.com/pdfs/The%20Truck%20Driving%20Problem.pdf [9] Poppendieck, Mary. (2001, May). Lean programming. Software Development Magazine, Retrieved from http://www.poppendieck.com/lean.htm [10] Manifesto for agile software development. (2001). Retrieved from http://agilemanifesto.org/ [11] Poppendieck, Mary. (2002). Principles of lean thinking. Retrieved from http://www.poppendieck.com/papers/LeanThinking.pdf[12] Ophir, Eyal, Nass, Clifford, & Wagner, Anthony D. (2009). Cognitive control in media multitaskers. Retrieved from http://www.pnas.org/content/106/37/15583.abstract