Agile software development has become a major craze in many IT and engineering circles. At their best, agile processes provide faster development times with fewer bugs. At worst, such processes produce software that cannot be maintained and documented and doesn't meet client needs.
Agile development processes focus on short sprints of development and testing as well as more distributed planning, customer involvement, and constant review. The general outline of the process, from top down, includes:
- Business strategy alignment.
- Market and general product definition.
- Product specific direction creation.
- Release planning.
- Development sprints.
- Feedback and evaluation.
Each of these broad categories includes different activities and all involve organizations and stakeholders. When dealt with as a flexible and dynamic process, agile can benefit the development cycle. When motivated by philosophical rather than pragmatic reasons, it can consume resources without producing positive results.