One of the main factors in determining a Project Management approach for a software development project is learning how to achieve a balance between predictability and responsiveness for a given organization. While each business domain shares similarities, each organization has its own culture, goals, and business drivers which define strategies for success.
Traditional Project Management (waterfall) approaches software development assuming that the events affecting a project’s outcome are focused on providing long-range predictability as related to cost, schedule, and features. The complete project is planned up-front, often leaving very little or no scope for changing requirements. Generally, it is assumed that an optimal and predictable solution exists. Traditional approaches can work well when the risks are low and the technical scope and project definition are well-known and not likely to change too often.
Agile Project Management emphasizes flexibility and responsiveness at the expense of predictability by focusing on continuous alignment and delivery of customer requirements through working software. Agile methodologies are based on rolling wave planning utilizing incremental and iterative delivery where the product features with the highest priority are developed first. By providing working software frequently in fixed time boxes (iterations), an Agile project can validate business value more rapidly than a traditional project approach. In addition, frequent customer feedback leads to an increase in overall product satisfaction by delivering results based on the overall vision and business value. Agile methods can work well on many types of projects, but are most effective where project risks are high and the project definition is continuously changing.