Introduction to Lean Software Development


Published on

Published in: Technology, Business
  • Be the first to comment

Introduction to Lean Software Development

  1. 1. Introduction to Lean Software Development<br />Michael Vax<br />pragmatic dreamer<br /><br />
  2. 2. Origins of Lean<br />James Womack<br />Source:<br />
  3. 3. Lean Principles in Software Development<br />Eliminate Waste<br />Build Quality In<br />Learn Before Commitment<br />Deliver Fast<br />Empower Team<br />See the Whole<br />Mary Poppendieck<br />
  4. 4. Eliminate Waste<br />Definition of waste: <br />Any effort or process that does not add value to a product. <br />
  5. 5. Project Switching<br />Productivity drops as team members project switch<br />Copyright Ken Schwaber5<br />
  6. 6. Value Stream Maps<br />Copyright © Poppendieck.LLC<br />
  7. 7. Inventory<br />Inventory in s/w is a partially done work:<br />Unimplemented requirements<br />Unsynchronized code<br />Untested code<br />Undocumented code<br />Undeployed code<br />It is expensive to manage inventory and <br />Software Inventory contains perishable goods<br />
  8. 8. Build Quality In<br /><ul><li> Quality Control vs. Build In Quality
  9. 9. Stop the line mentality</li></ul>Cost of Bad Quality<br />Cost more to add functionality<br />Support cost skyrocket<br />Free services giveaways<br />Unhappy customers<br />Long release cycle<br />Missed release dates<br />Wasted time on managing defect queues<br />Bad morale <br />Buggy product is a liability not an asset<br />
  10. 10. 1<br />Predictable <br />Release Time<br />3<br />New Functionality<br />2<br />Difficult to modify code,<br />New bugs are introduced<br />3<br />No visible progress <br />can be achieved<br />1<br />2<br />Time<br />Poor Quality Costs Money<br />Burndown Chart … the velocity of turning requirements into potentially shippable increments of functionality. <br />The core functionality line shows the impact of continued poor quality practices from the era of opacity. Although poor quality may be necessary at the start of a company, it is not a sustainable practice.<br />
  11. 11. Optimize regression testing<br />
  12. 12. Learn Before Commitment<br />Development Project<br />Knowledge<br />Start<br />End<br />Time<br />Decisions<br />Time<br /><ul><li>The last responsible moment
  13. 13. Delaying irreversible decision until uncertainty is reduced has economic value
  14. 14. Option is a right but not the obligation to do something in the future</li></li></ul><li>Deliver Fast<br />The best measurement of s/w development process capability is the Average Cycle Time<br />Reducing cycle time:<br />Minimize the Number and Size of Things in Process<br />Limit Work to Capacity by using a Pull Schedule approach<br />Optimize regression testing and deployment<br />
  15. 15. Queuing Theory<br />Measured in cycle time<br />Steady rate of arrival<br />Steady rate of service<br />Slack<br />Copyright © Poppendieck.LLC<br />
  16. 16. Phantom of 100% Utilization<br />100% <br />In a complex unpredictable environment 100% utilization decreases throughput as there are no resources to react to unexpected events<br />
  17. 17. Minimize the Number and Size of Things in Process<br />A.<br />$$$$$<br />B.<br />$$$<br />C.<br />$$$$<br />
  18. 18. Pull Schedule<br />Team takes (pull) features from prioritized backlog<br />Allows for quick response in case of emergencies<br />Empowers the team and frees a lot of management time<br />
  19. 19. Empower Team<br />In software development, the most valuable assets are the people involvedEngaged, thinking people provide the most sustainable competitive advantage.<br />Teams Thrive on Pride, Commitment, Trust, and ApplauseWhat makes a team? Members are mutually committed to achieve a common goal.<br />Provide Effective LeadershipEffective teams have effective leaders who bring out the best in the team.<br />
  20. 20. Managers vs. Leaders<br />
  21. 21. Self-Organizing Teams<br />Self-organization does not mean that workers instead of managers engineer an organization design. It does not mean letting people do whatever they want to do. It means that management commits to guiding the evolution of behaviors that emerge from the interaction of independent agents instead of specifying in advance what effective behavior is.<br />~Philip Anderson, The Biology of Business<br />Although project teams are largely on their own, they are not uncontrolled. Management establishes enough checkpoints to prevent instability, ambiguity, and tension from turning into chaos. At the same time, management avoids the kind of rigid control that impairs creativity and spontaneity.<br />~Takeuchi & Nonaka<br />
  22. 22. Optimize the Whole<br />The overall capacity of the system should be balanced against the capacity of the bottleneck<br />
  23. 23. Misbalanced Flow<br />Requirements<br />Development<br />Architecture<br />CTO<br />Director of <br />Product management<br />Architectural<br />Council <br />VP of Development<br />(Dev, QA, RE)<br />
  24. 24. Cost Accounting<br />Cost accounting was created to accurately manage men and machines used in assembly lines<br />Main goal is to reduce cost<br />Assumes that local efficiency leads to global efficiency<br />Cost of labor is treated as a variable cost<br />Assembly line workers were easily replaceable. Not true for software<br />
  25. 25. Throughput Accounting<br />Net Profit = Throughput – Operating Expenses<br />Throughput Accounting measures how effectively the system moves the investment value through the system and converts it to the Throughput<br />
  26. 26. Want to Learn More?<br /><br /><br />778-668-9134<br />