Managing Agile Software Development Products or Projects? Jeff Nielsen May 18, 2006
www.agilemanifesto.org The popularity of agile software development has increased dramtically in recent years
Project managers grapple with how to make the transition Agile Development Waterfall Iterative Iterative/ Incremental Parallel Flow 4
Adopting agile development requires more than changing some practices 5
Agile development requires a different way of thinking about software projects Significant problems cannot be be solved with the the same kind of of thinking we we used when we we created them. --Albert Einstein Changing your thinking is the first step to helping your projects be more agile 6
Three ways to think differently about software projects 1. Accept requirements change as inevitable and desirable 2. Trade the illusion of control for the comfort of predictability 3. Think products, not projects 7
1. Accept requirements change as inevitable and desirable 9
The result of trying to freeze software requirements Standish Group study on Features & Functions Used in a Typical System (2002) Nearly two-thirds of the features built are rarely or never used! 10
Three Big Requirements Problems Knowing what you want Edit mode vs. create mode Communicating what you want Written vs. verbal vs. face-to-face Changing what you want Allow for learning 11
2. Trade the illusion of control for the comfort of predictability 13
Loosen control over requirements Traditional Approach Agile Approach Fix: Scope Time Resources Estimate & Adjust: Time Resources Scope 14
Loosen control over the plan In In preparing for for battle, I I have always found that plans are useless, but planning is is indispensable. --Dwight Eisenhower 15
Loosen control over people s day-to-day activities 16
3. Think products, not projects Projects Up-front funding Fixed scope Success = cost/schedule/scope Team disbands at completion Products Incremental funding Scope expected to evolve Success = profit/market share Teams stays with product Mary Poppendieck, March 2006 18
A successful software system evolves over many years 19
The best software is produced by teams that care 20
You want to reach a state of flow Short, predictable cycle times Cost of change fairly constant how long between? 21
Agile development involves different values and principles Phased-Based AGILE Plan Driven Infrequent Client Communication Deliver Once in Big Bang Fashion, Typically 9 12 Months Develop in Distinct Phases with Interim Paper Deliverables Develop in Layers: Presentation, Persistence, Business, etc. View Programming as Construction Integration of Different Layers Occurs at End of Build Phase Testing as Separate Phase at End of Project, Typically Emphasizing Functional Level High Cost of Change Learning Driven Continuous Client Communication Deliver in Short, Business-Focused Releases, Typically 2 3 Months Develop in 2-Week Long Iterations and Deliver Working Code Develop in End-to-End Functional Slices View Programming as Design Continuously Integrate Code Throughout (Hourly Builds) Fully-Automated, Continuous Testing at Both Functional and Unit Level Low Cost of Change 23
Being successful with agile development requires thinking differently 1. Accept requirements change as inevitable and desirable 2. Trade the illusion of control for the comfort of predictability 3. Think products, not projects 24
Thinking differently will help you know how to act What can you do differently this month, this week, today? One person can be the catalyst 25