© ThoughtWorks, 2008 Improving Productivity and Quality With Agile Patrick Kua
© ThoughtWorks, 2008 The Software Development Crisis…
© ThoughtWorks, 2008 Who’s happy with:
Requirements not met
Software taking too long before it can be used
Unhappy Users
Unhappy Developers
What’s working to fix this?
© ThoughtWorks, 2008 Agile
© ThoughtWorks, 2008 What is Agile?
XP Scrum Lean DSDM Crystal …
© ThoughtWorks, 2008 A guiding manifesto…
© ThoughtWorks, 2008 The Agile Manifesto
© ThoughtWorks, 2008 The Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: – Individuals and interactions over processes and tools – Working software over comprehensive documentation – Customer collaboration over contract negotiation – Responding to change over following a plan. That is, while there is value in the items on the right, we value the items on the left (bold) more.
© ThoughtWorks, 2008 What leads to poor productivity? Poor Communication Too much planning (no delivery) Constant Handover Priorities changing
© ThoughtWorks, 2008 How does agile help? Poor Communication Too much planning (no delivery) Constant Handover Priorities changing Timeboxed iterations Constant feedback Daily stand ups Customer involvement Iteration Showcases Iteration planning games Release planning Pair programming Cross functional teams Iteration planning games
© ThoughtWorks, 2008 What leads to poor quality? Late Testing Overcomplicated designs No process improvement Delaying Integration No knowledge transfer Lack of Standards
© ThoughtWorks, 2008 How does agile help? Late Testing Overcomplicated designs No process improvement Delaying Integration No knowledge transfer Lack of Standards Code standards Collective Ownership Continuous Integration Frequent Releases Refactoring YAGNI Test Driven Development Automated acceptance tests Unit tests Daily stand ups Pair programming Behaviour driven development Retrospectives Informative Workspaces Pair programming
© ThoughtWorks, 2008 Example practices
© ThoughtWorks, 2008 Continuous Integration
© ThoughtWorks, 2008 Testing
© ThoughtWorks, 2008 Customer acceptance tests Unit tests supports... “TDD produced code that passed between 18 and 50 percent more external test cases than code produced by control groups not using TDD.” IEEE Article: Software Architecture Improvement through TestDriven Development by David S. Janzen
© ThoughtWorks, 2008 Refactoring
© ThoughtWorks, 2008 Pair Programming Constant code reviewing Very efficient – second person prevents drift – X hours longer vs. 15X hours bug fixing (source:
© ThoughtWorks, 2008 Reinforcing Practices
© ThoughtWorks, 2008 WARNING!
Only following practices…
Coach
© ThoughtWorks, 2008 Summary Agile Discipline Quality Speed Productivity
© ThoughtWorks, 2008 Questions?