The most important decision when undertaking any development project is how to approach the project as a team. There are two major development methodologies to choose from - agile or waterfall. This decision will determine how the actual tasks of a project are organised and executed.
Agile projects are typically more flexible, delivered much quicker and far cheaper, but they also have less predictable results. On the other hand, waterfall projects can take much longer to develop and are typically more expensive.
The agile model is a sequential, linear and iterative approach whilst the waterfall approach flows steadily through these phases like a waterfall. Both are sound methodologies, but each takes a different path to the finish line.
Agile projects are completed iteratively whilst waterfall projects are more sequential. Each methodology has its own advantages and disadvantages, but the choice depends on the project type and circumstances.
According to a recent HP survey, 54% of agile users claim their largest reason for using agile over waterfall is that it enhances collaboration and teamwork.
There are significant differences between agile and waterfall and it is not always possible to choose between the two. Waterfall could be relevant to nearly any kind of IT project whilst agile requires specific conditions and is not applicable to larger projects.
Most of the conditions required for agile projects to succeed relate to the working environment and specific practices that can or cannot be employed by the entire project team, not only those responsible for development.
Waterfall might be a better option when there is limited customer interaction. It is ideal for projects with dispersed teams, fixed scope and budget. Requirements are defined at the beginning of the project and can change through various phases.
The agile methodology is ideal for developing apps for new markets, where customer needs cannot be defined upfront. It is ideal when dealing with uncertain conditions.
With agile, high-level features are identified and broken down into discrete items, defined and developed within iterations. Requirements are usually defined around each iteration, rather than at the beginning of the project.
However, some development projects just don't suit a true agile approach but any project can benefit from some of the practices commonly found in this methodology. For example, when key deliverables cannot be defined and accepted sequentially and incrementally, then it is unlikely that agile can be used.
Agile is flexible and highly adaptive, ideal for projects that require a level of complexity and uncertainty. Waterfall is better suited for projects that require maintaining stringent phases and deadlines where stakeholders require sign-off at each stage.
The final decision lies within the scope, requirements and nature of each specific development project. There is no 'one size fits all' model, each has its benefits.