I'm tempted to half-seriously define a "Software Engineering History Maturity Model". Its stages would be characterized by the sophistication of someone's understanding of where the "waterfall" lifecycle came from.

Level -1: hasn't heard of the term.

Level 0: believes that waterfall is just "the way software is developed". Or, if an Agilist, "the way software used to be develop before Agile".

Level 1: believes that waterfall is a product of software engineering, which itself was invented to solve the software crisis a few decades back. That is why it's the right way to develop software. (Or, if an Agilist, the wrong way, since obviously the crisis is still with us and therefore software engineering doesn't work.)

Level 2: believes that waterfall was invented in 1970 by Winston Royce and enthusiastically adopted by the recently formed software engineering community; it was then and for a long time remained the best way to develop software, and still is except under particular circumstances where you might prefer other models. (If an Agilist, under most circumstances.)

Level 3: believes that waterfall was a misunderstanding of the 1970 Royce paper, due to the author of DoD 2167 taking a look only at the first page of that paper, and was enshrined as standard practice after DoD 2167 mandated a strict sequential process, a caricature of the "reasonable" waterfall which includes feedback loops and prototyping and remains a damn good idea for some software efforts, except all those where spiral, iterative and incremental are more applicable.

(Level 3 can be abbreviated to "has read Larman's book on Agile and iterative development".)

Level 4: has actually read some primary sources, such as the 1968 NATO conference proceedings, and noticed that sequential processes were already well known at that time, but iterative models were openly discussed as well; has come to doubt that a "software crisis" ever existed as more than a marketing device; is deeply puzzled at an "official" history which hinges on someone totally misunderstanding a relatively obscure paper from a few years later and, undetected by the rest of a community of smart people, totally derailing an entire industry for decades. Doesn't even know what to think of waterfall anymore.

Level 5: has actually taken a deep dive into primary and secondary sources contemporary with the various relevant decisions, including the 1996 Dagstuhl workshop where a few major figures of the software engineering movement tried to get historians to work with them to grant legitimacy to their so far nonexistent "official" history of the movement; has noticed how Barry Boehm was the one who dragged the Royce paper out of obscurity back in 1987, at the ICSE conference, just one year before the publication of DoD 2167, and is wondering at this odd coincidence. Despairs at how badly the software profession sucks at making sense of its own aims, insights and history.

(Just as with software maturity models, the higher you go the fewer individuals there are at this particular maturity level. Just as in software, "maturity" here should be understood to mean "how close you are to where I am now", and has nothing to do with actual maturity.)


If you liked this post, consider supporting me by buying my book: http://leanpub.com/leprechauns
Shared publiclyView activity