The Business Case For Agility
Seminar Description:
Mary and Tom Poppendieck put forth 7 principles of lean software development in their seminal text: Lean Software Development: An Agile Toolkit for Software Development Managers. These 7 principles are:
- eliminate waste
- build integrity in
- amplify learning
- localize responsibility
- defer commitment
- deliver fast
- optimize the whole
This seminar presents the case for why we must develop software consistent with the Agile methods of Scrum and Test-Driven Development. Four aspects of Agile methods in particular are investigated:
- Iterative development. The best way to eliminate waste is to not build things that are not needed. This implies an iterative process where priorities are continuously re-examined.
- Scrum. Lean’s workcell concept is manifested in Scrum’s cross-functional team. Scrum’s emphasis on team also includes the principles of amplifying learning and localizing responsibility.
- Automated testing. Test-Driven Development is consistent with the lean’s autonomation principle of a smooth flowing production line that is stopped anytime there is an error to get at the root cause of the problem. This follows the principle of build integrity in.
- Writing quality code that can be refactored. Deferring commitment is an integral part of Agile coding. By writing just what you need now, you do not build in structure until you later discover what is truly needed.
This seminar provides insights into how lean guides many current agile processes. This provides both a business case for Agile methods as well as giving developers insights into how to better follow Agile methods.
Outline:
- The seven principles of Lean Software development
- Eliminate waste
- Build integrity in
- Amplify learning
- Localize responsibility
- Defer commitment
- Deliver fast
- Optimize the Whole
- The Lean-Agile Connection How lean implies an iterative process
- Lean and Scrum: Work cells and cross-functional teams. Building code as an integrated process of analysis-design-code-test.
- Automated testing: Building code only after its acceptance requirements have been specified Eliminating waste by managing change.
- Conclusions