Introduction to Agile Methodology
Agile is a continuous learning approach that concerns two aspects: project management and product development. In particular, it is an approach to managing projects that avoids expensive upfront planning while reducing complexity and minimizing risk. Agile methods are traditionally applied in software development and IT support (e.g. service ticketing).
Some characteristics of agile projects are:
- Incremental — products are released in small, valuable increments instead of shipped all at once.
- Iterative — products (and also the product development process itself) are continuously improved through user as well as internal feedbacks from the incremental releases, so that mistakes are quickly fixed as they are found.
- Focused on value —the priority is to always work on the highest value task or activity for the product.
- Empowering — decision making is pushed down to individual members of the team.
Agile is suited for projects that have a huge component of uncertainty. This is possible through frequent customer feedbacks (thus resulting in a desirable and high quality end product) and an empowered team (thus increasing job satisfaction and sparking creativity). Furthermore, an agile approach leads to lower costs and lower risks due to its four characteristics above.
Comparison To The Scientific Method
At the core of agile principles is the scientific method. In the scientific method, there is a positive feedback loop between hypothesis generation, experiments, and learning. Agile takes it one step further and applies the scientific method not just for discovery but also for effectively accomplising the work in projects. In this sense, the iteration in agile reads: plan -> build -> release.
Comparison To The Waterfall Approach
In the Waterfall method, projects are planned and developed in multiple phases, instead of continuously iterating through small increments. In this scheme, the steps are roughly the following:
- Analyze — understand the business requirements of the customer and draft a requirement document based on that.
- Design — craft features that can meet the requirements and come out with a design document.
- Build — develop the features for the product
- Test — conduct quality assurance tests
- Release — hand over the product to the production team for product release
Here, the watefall approach follows a pipeline as typical in the manufacture of physical goods. Each step is usually handled separately by a highly specialized team in succession. The pipeline approach works well for the mass production of goods in large batches, typically enabled by economies of scale.
However, for complex projects with high degree of uncertainty, the waterfall method is not ideal because huge upfront planning is likely to be wrong due to many reasons: changing business requirements, difficult timeline estimation, dynamic market demand, etc. This clearly does not justify the exorbitant cost for the upfront planning where changes to the original plan can be even more expensive. Not to mention the large amount of paperwork required between the different phases in the pipeline (and even more for change management). Because feedback is received only at the end of the pipeline (which can take months or years), the end product may end up obsolete or useless.
This fundamental difference between agile and waterfall approaches has a big implication on the project management: the former is command and control while the latter is adaptive and distributive.