Agile at the right level
There has been lots of criticism that "Agile" is a poor way to run any form of IT development project, with the following comments being made to substantiate the statement:
- No one uses "agile" in real world engineering
- It doesn't scale
- It's "new"
Indeed everyone seems to think that Royce's original article in the 1970s was an example of a working project delivery method and miss that he presented it as a broken model. Even in the early 1990s when I was going through my undergraduate Computer Science degree it was misused in the same way, and I cannot help but feel that if that myth was not abused how many more IT projects might have been successful.
Examples of early iterative programmes
The two sides of the "space race" in the 50s and 60s are good examples of iterative development especially given the high level pressures the two sides placed themselves under
- Intense Competition
- New problem domain
- Aversion to failure
Both the United States and the Soviet Union had high level goals that placed failure, this is shown by the following one of the three goals of the Mercury programme:
To recover both man and spacecraft safely
Unfortunately for just as I was starting to sit down and write up my take on the above and how they used iterative development models to deliver I found that Dan Brown had already written about it!
So I will not repeat what Dan said, although in my experience many projects try to use the same methodology for all aspects of the project, instead of looking at what method would be best used at which level.
By level I mean within the development of individual modules/applications, within a release
The US Space Programme
The Soviet Union Space Programme