Agile development approaches require a fundamental shift in the way we think about, manage, and evaluate projects.
It’s such a shift that often even people working within agile environments may not fully understand it.
For example, it’s amazing how many software management job postings are looking for someone who is both an expert at agile development practices and leading agile teams, and also has a proven track record of bringing projects in on time and on budget. On time and on budget sure sounds great. Especially if you’ve ever been on a project that really went sideways. The problem is, if an agile approach is used, there’s no way to actually know if it was on time or on budget. Because in order to determine those things we’d need to know at the start exactly what we were building (and even then it’s incredibly hard to estimate accurately).
With agile, instead of primarily attempting to deliver a given set of features within a given time frame, we focus on delivering as much business value as possible in the shortest amount of time possible. While maintaining quality at release levels throughout. This approach allows for visibility of actual progress, managing risk at every step, and adapting to changes in the market. From a project management standpoint it’s much more about visibility than predictability. Though paradoxically, predictability may increase as well under the right conditions.
See here for further reading.