501 likes | 804 Views
Lean Software Development. James Manning. Outline. Lean History of Lean Lean Manufacturing Lean Software Development Where to start. What is Lean?. Process of eliminating waste from within a project, process, or company. History. Toyota Production System – 1948 - 1975
E N D
Lean Software Development James Manning
Outline • Lean • History of Lean • Lean Manufacturing • Lean Software Development • Where to start
What is Lean? • Process of eliminating waste from within a project, process, or company.
History • Toyota Production System – 1948 - 1975 • Developed by TaiichiOhno, Shigeo Shingo and EijiToyoda • Toyoda – produce automobiles for the general public of Japan. • Very similar to Henry Ford – 30 years later • Utilized Ford and W Edwards Deming • JIT production
History • Toyota became one of the top 10 companies in the world • 2007 - became the largest car manufacturer • TPS Focused on eliminating three kinds of waste • Muri • Mura • Muda
Muri • Overburdened/Unreasonable/Absurdity • Employees • Safety, Ergonomic - standard of work • Searching for tools – having required tools • Waiting for help – empowering the team • Equipment • Overuse • Ford – Muri and not production line
Mura • Unevenness – lacking flow • Utilize resources, materials, and machinery as efficiently as possible • JIT • Pull system • Piggly Wiggly (1916) • JIT inventory
Muda • Wastefulness • Broad term • Anything that Does not directly add value to the end user • Unneeded processes or steps • Unneeded equipment • Unneeded employees • Ect.
Lean Manufacturing • Seven Types of Waste • Defects • Over-production • Transportation • Waiting • Inventory • Motion • Processing
Can this be applied to Software? • Lean Software Development • Mary Poppendieck & Tom Poppendieck • Term introduced in The Poppendiecks’ book • Titled Lean Software Development
The Poppendieck’s Mary Poppendieck Tom Poppendieck • MS, MathematicsUniversity of Maryland • BS, MathematicsMarquette University • PhD, PhysicsUW – Madison • BS, PhysicsUW - Madison
Principles of Lean Software Development • Eliminate Waste • Amplify Learning • Delay Commitment • Deliver Fast • Empower the Team • Build Integrity In • See the Whole
Eliminate Waste Lean Software Development Lean Manufacturing • Partially Done Work • Extra Processes • Extra Features • Task Switching • Waiting • Motion • Defects • Inventory • Processing • Overproduction • Transportation • Waiting • Motion • Defects
Partially Done Work • Tendency to become obsolete • Gets in the way • No idea if it will even work with the system • Bottle Neck • Ties up resources • No value to customer • Disrupts Flow
Extra Processes • Do all forms of required paperwork add value? • If required • Keep it short • Keep it high level • Do it off line • Good Test – Someone is eager to use for coding, testing, or writing manuals • Strive for most efficient, effective way of transmitting information
Extra Features • Feature creep • Extra features “just in case” the customer will use them • Each extra feature need to be: • Tracked • Compiled • Integrated • Tested • Maintained • Every extra feature: • Increases complexity of code • Is a possible failure point • Could be obsolete before it is used
Extra Features • Frode L. Ødegår – List for quantifying value • What percentage of functionality in your products goes mostly unused? • What percentage of functionality serves mostly to sell the product? • How much of your development budget was expended on developing these features? • Quantify performance characteristics of your product and relate these numbers to impact on the customer's performance. • Rank candidate product features and design ideas by their quantifiable impact on customer value.
Task Switching • Assigning multiple people to multiple projects • A significant amount of time is wasted in the transition of tasks • More teams and projects = more interrupts • More task switching • Fastest to finish multiple projects • Do them one at a time
Waiting • Common delays: • Email responses • Climbing leadership chains • Starting a project • Excessive requirements documentation • Problems: • Customer cannot visualize value early • Commitment – not waste
Motion • How readily available are others to answer developer questions • Motion to walk to answer get a question answered • Lean development offices can help eliminate this waste.
Defects • A defective product has little to no value to an end user • AmtWaste = (DefectImpact)(TimeUndetected) • (Large Defect)(3Hours) < (Small Defect)(3Wks) • Ways of eliminating waste: • Find defects quick • Test immediately • Integrate often • Release to production soon
Principles of Lean Software Development • Eliminate Waste • Amplify Learning • Delay Commitment • Deliver Fast • Empower the Team • Build Integrity In • See the Whole
Amplify Learning • 4 Tools to Amplify Learning • Feedback • Iterations • Synchronization • Set Based Development
Feedback • Most effective way of dealing with troubled software projects • Types of feedback: • Run tests asap • Check out ideas by writing code (spike solution) • Prototypeinstead of more requirements • Create web front to legacy system to try it out
Iterations • Full Iteration: • Designed • Programmed • Tested • Integrated • Delivered • Facts > Forecasts • More feedback from customer
Synchronization • Communication with other subsystems or devices • Develop interfaces first
Set Based Development Point-Based scheduling Set Based Scheduling
Set-Based Development • Apply set based development to software • Develop multiple options • Communicate Constraints • Let solutions emerge
Principles of Lean Software Development • Eliminate Waste • Amplify Learning • Delay Commitment • Deliver Fast • Empower the Team • Build Integrity In • See the Whole
Delay Commitment • Delay = waste? • Procrastinating = waste? • Idea: • Wait until the last moment to make a critical decision • Make decision on fact rather than forecast • Large commitment not left to chance • Not always going to be easy – Customer generally wants commitment
Delay Commitment • Methods of delaying commitment • Share partially complete design information. • Organize for direct, worker-to-worker collaboration. • Develop a sense of when decisions must be made. • Develop a sense of how to absorb changes • Avoid Repetition • Separate Concerns • Encapsulate Variation • Defer Implementation of Future Capabilities • Commit to Refactoring • Use Automates Test Suites
Principles of Lean Software Development • Eliminate Waste • Amplify Learning • Delay Commitment • Deliver Fast • Empower the Team • Build Integrity In • See the Whole
Deliver Fast • Just In Time • Feedback • Prototyping • Create value as soon as possible
Empower the Team • Eliminates waste from: • Waiting • Climbing management chains • Firefighter • Prepared • No time to ask remote commanders • Anti-pattern • Empowering employees who are not trained • Employee being blamed for when things go wrong
Build Integrity In Perceived Integrity Conceptual Integrity • Pleases the user without user asking • Google • All parts of the system work together – smooth well functioning • Cash vs. Credit card
Build Integrity in • Boeing 777 “Working Together” Program • Fuel tank out of reach of fuel trucks caught early • Methods: • Test early • Test often • Test exhaustively • Automated tests delivered
See the Whole • Look at the whole process • Mary Poppendieck • “Lean thinking suggests that optimizing individual parts almost always leads to sub-optimized overall system” • 80% of defects – how the system is developed
Where to Start • Start as soon as possible • Can be applied to a project or process in progress
Road Map • Marry Poppendieck • Begin Where you are • Find your biggest constraint • Envision your biggest threat • Evaluate your culture • Train • Solve the Biggest Problem • Remove Accommodations • Measure • Implement • Repeat
Conclusion • Lean Software Development • Elimination of waste • Improve: • Productivity • Efficiency • Bottom line
References • Abilla, P., & Poppendieck, M. (2007, June 9). Lean for Software. shmula. Retrieved March 28, 2011, from http://www.shmula.com/lean-for-software/401/ • Ladas, C. (2009, June 15). Introduction to Lean Software Development. Shaping Software . Retrieved March 28, 2011, from http://shapingsoftware.com/2009/06/15/introduction-to-lean-software-development/ • Fiore, C. (2005). Accelerated product development: combining lean and Six sigma for peak performance. New York, NY: Productivity Press. • Layton, R. (2010, August 12). 80-20 Rule: 80 percent of Product Features Are Never Used. Klean. Retrieved March 28, 2011, from http://www.klean.dk/weblog/80-20-rule-80-percent-of-product-features-are-never-used • Poppendieck, M. (2003, April, 25). Lean Software Development. LeanEssays. Retrieved March 28, 2011, from http://www.leanessays.com/2003/04/lean-software-development.html
References • Poppendieck, M. (2001, May 1). Lean Programming. LeanEssays. Retrieved March 28, 2011, from http://www.leanessays.com/2010/11/lean-programming.html • Poppendieck, M. (2004, June 24). An Introduction to Lean Software Development. LeanEssays. Retrieved March 28, 2011, from http://www.leanessays.com/2004/06/introduction-to-lean-software.html • Principles of Lean. lean.org - Lean Enterprise Institute| Lean Production | Lean Manufacturing | LEI | Lean Services |. Retrieved March 28, 2011, from http://www.lean.org/WhatsLean/Principles.cfm • Shalloway, A. (2007, August 8). Lean Anti-Patterns and What to Do About Them. Agile Journal. Retrieved March 28, 2011, from http://www.agilejournal.com/component/content/553?task=view • Ødegår, F. (2007, December 30). Lean Execution: Six Questions for Software Executives. Lean Software Institute. Retrieved March 28, 2011, from www.leansoftwareinstitute.com/wp-content/uploads/2007/08/Lean-Execution-Six-Questions-for-Software-Executives.pdf • Poppendieck, Mary , and Tom Poppendieck. Lean software development: an agile toolkit. Reading, Massachusetts: Addison-Wesley, 2003. Print.
Thanks for you time • Questions?