Standing on the shoulders of giants....
We often hear George Santayana's adage:
"Those who do not understand the past are destined to repeat it"
Study history or you're going to screw up. Good advice, but rather on the negative side of the Kharmic spectrum.
Less often do we hear Sir Isaac Newton?s more positive sentiment:
"If I have seen further it is by standing on the shoulders of Giants"
Newton's adage is the one that came first to mind when I encountered a great article by Craig Larman and Victor Basili entitled:
Iterative and Incremental Development: A Brief History
Larman and Vasili's article is packed with great examples of how IID (which is essentially the same as Agile programming) has been successfully used for decades on large scale mission critical projects.
For example, from the recollections of Gerald M. Weinberg, who worked on project Mecury, comes this quote:
"We were doing incremental development as early as 1957, in Los Angeles, under the direction of Bernie Dimsdale [at IBM?s Service Bureau Corporation]."
"I do remember Herb Jacobs (primarily, though we all participated) developing a large simulation for Motorola, where the technique used was, as far as I can tell, indistinguishable from XP."
The article goes on to list numerous projects and researchers who have successfully used Iterative and Incremental Development over the years. Counter to the impression that Agile programming is only suitable for small scale projects, we learn that it may in fact be the best solution for large scale projects (paraphrased from David Parnas and Paul Clements):
- A system's users seldom know exactly what they want and cannot articulate all they know.
- Even if we could state all the requirements, there are many details that we can only discover once we are well into implementation.
- Even if we knew all these details, as humans we can only master so much complexity.
- Even if we could master all this complexity, external forces lead to changes in requirement, some of which may invalidate earlier decisions.
Larman and Vasili conclude with the following:
"...IID concepts have been and are a recommended practice by prominent software-engineering thought leaders of each decade, associated with many successful large projects, and recommended by standards boards."
Yet, even though the value of IID is well known among literate, experienced software engineers, some commercial organizations, consulting companies, and standards bodies still promote a document-driven single-pass sequential life cycle as the ideal. We conclude with this recommendation: In the interest of promoting greater project success and saving taxpayer dollars, let's continue efforts to educate and promote the use of IID methods."
Read the whole article...or better yet, mail it to your boss.
(Cross posted at The Thoughtful Programmer)