Many organizations ask us, why we chose Agile. This post is an attempt to compile my thoughts on the answer.
For us, it was the need of the hour... Agile came as a perfect solution for the problems we were facing in software development (discussed below). These problems prompted introspection and Agile had common sense approach to a lot of those issues...
Problems we were facing in software development
1) knowing what to build
- fat documents, UML had all failed
"we wished we could just get the dev teams to talk to the sponsors/end users"
2) knowing when we'll be done
- upfront planning and estimations were bogus... always off...
"we wished we could update our estimates during the project lifecycle"
3) knowing exactly how we'll do it (at the finest level of detail)
- we spent countless hours in predicting our system design (Big Upfront Design) and always had surprises during development that forced us to change our design
"we wished we could design as we go"
4) development time was the shortest period in the project
- sponsor discussions, requirements elaboration, visual design, detailed design, syndication etc. took long time and that put pressure on development team to rollout ASAP
"we wished we started development from the first day IT was engaged with sponsors"
5) most of the work happened towards the end of the project
- 80-20 rule implemented in the wrong way :) 80% of the work was done in 20% of the time (towards the end of the project)
"we wished we could produce software in a rhythm throughout the project"
6) focus on process instead of product
- we had countless reviews to ensure proper artifacts were created and signed-off, prescribed process (waterfall and Unified Process) was followed
"we wished we could do just enough to start and do more as needed"
ceremony vs. essence
7) change management
- we used to finalize requirements before starting development and every small change started a long change management process that was wasteful and created negative energy between the development and sponsor teams
"sponsors wished they had infinite flexibility to change their minds at any time during the project"
8) our product launches were delayed and costed more
- no one trusted our detailed plan and always added 50 - 100% more time/$$ for delivery date/cost
"we wished we could be more accurate in our planning"
9) our users/sponsors thought they knew exactly what they wanted
- by the time they saw what was developed, they always changed their minds
"we wished we could show the product early to them and co-design it with them"
Agile gave us a "natural" way to build software that addressed these issues, a framework to build better products with simple common sense approach on process (e.g. helps us to know what to build, how to build, when will it be built).
Agile brought back the basics of good teamwork and collaboration. It enabled:
- good communication. After all "good software needs good communication"
- short feedback loops - which helps in reducing the risk of mistakes and misunderstandings
- rhythm in development
- predictability in estimations on cost/delivery
- focus in building the most valued features first
- flexibility to change our minds on both functional and technical design to eventually build a better product
- focus on building the product (and not change management procedures, sign-off process, requirement documentation standards, etc.)
Is it time for you to adopt Agile?
Well,I think if you hear any of these words in your software development organization, its at least time for some introspection...
Month long QA
25+ page Word documents for requirements or design
First product demo towards the end of the project
Detailed plan in Microsoft Project