Jonathan Rasmussen replied recently to a question on the Scrum list, saying that you can pick your feature set and let the date move, or pick the date and let the features move. Roy Morien asked “Why isn’t this obvious”, noting that it sure seems that people don’t get it.
Historically, software projects have had no API. You gave a software team an unchangeable list of requirements and an immutable date. The project was done in phases such that nothing was useful until all phases were finished for everything: analyze, design, code, test. Along the way, the project produced no measurable output and could not be controlled in any useful way.
As the manager became more and more concerned that things weren’t going well, their only available approaches were to add people, which is usually not possible and doesn’t work anyway, or to add pressure, which doesn’t work either.
Incremental projects using approaches such as Scrum offers of course do have an API. They produce completed features which can be counted, and you can control very nicely what gets done by the date just by selecting the features to do next. (You still can’t improve things by using pressure, however.)
However, well-crafted incremental projects don’t let the manager control scope: they put that in the hands of business-side people, product planners and the like, who used to be passive –and unhappy– recipients of whatever the software project actually did.
So software managers now have a very odd job to do, if they have a job at all, since they are not really able to manage anything. The date and scope are set by the business side, the team’s practice is guided by a coach or ScrumMaster, the team makes all the technical decisions, adding people still won’t work, and pressure still doesn’t work.
No wonder they are confused..