Archeological Dig
Posted by Uncle Bob on 11/11/2009
I was going through some old files today, and I stumbled upon some acetate slides from 1995. They were entitled: “Managing OO Projects”. Wow! What a difference fifteen years makes! (Or does it?) ...
In 1995-99 I was frequently asked to speak to managers about what a transition to OO (usually from C to C++) would do for (or to) them. I would spend a half day to a day going over the issues, costs, and benefits.
One part of that talk (usually about 90 min) was a discussion about software process. It was the process part of the talk that those acetate slides that I found described.
1995 was during the ascendency of Waterfall. Waterfall thinking was king. RUP had not yet been conceived as an acronym. And though Booch was beating the drum for incrementalism, most people (even many within Rational) were thinking in terms of six to eighteen month waterfalls.
So, here are the slides that I uncovered deep within an old filing cabinet. I scanned them in. They were produced on a Macintosh using the old “More” program. (Where is that program now? It was so good.)
Go ahead and read them now. Then come back here and continue…
What struck me about those slides was the consistency of the message with today. It was all about iterative development. Small iterations (though I never deigned to define the length in the slides, I frequently told people 2 weeks), measured results, etc. etc. Any Agile evangelist could use those slides today. He or she would have to dance quickly around a few statements, but overall the message has not shifted very much.
What’s even more interesting is the coupling between the process, and OO. The slides talk a lot about dependency management and dependency structure. There are hints of the SOLID principles contained in those slides. (Indeed several of the principles had already been identified by that time.) This coupling between process and software structure was a harbinger of the current craftsmanship/clean-code movement.
Of course the one glaring omission from these slides is TDD. That makes me think that TDD was the true catalyst of change, and the bridge that conveyed our industry from then to now.
Anyway, I guess the more things change, the more they stay the same.
Comments please!
Comments
Gustavo Barrancos 24 minutes later:
Shocked… Never imagined that the original idea of Waterfall consisted on concurrent phases. Waterfall as i always knew was just a TON of up-front design (months) without any implementation. What worries me most is the fact that distortions like this one on the “Classic Waterfall” are kinda haunting agile methods like Scrum these days . Will story repeat itself?
Thanks for sharing, BTW!
GBGames 26 minutes later:
The final slides talk about the importance of measurements, and I know a lot of people, especially management, are interested in statistics. While the slides talk about measuring individual slices and having those measurements work between projects, I’m pretty sure I’ve seen the opposite said when it comes to TDD.
That is, measurements for one project only apply to that project. And that’s assuming someone found a good metric. Code coverage and number of unit tests on one project can’t easily be used as a base to measure other projects with, for example. Are the four metrics listed on the last slide still valid when it comes to modern, Agile projects?
Curtis Cooley 37 minutes later:
That is pretty amazing. I could see any agilist using those slides to introduce people to XP.
I remember back in ‘97 the Spiral concept was coming around, where you do Waterfall, but spiral back to Analysis and Design. As the project runs, the time in each phase changes. Less in Analysis and Design and more in Implementation and Test. I remember that resonating with me.
I was at Getronics building bank teller software and the QA manager was trying to get the company to adopt the “Microsoft Solution Framework” which basically was a spiral waterfall. Almost iterative :)
I never understood why they called it waterfall. Falling off waterfalls is almost always bad.
Chris Vest 42 minutes later:
That was interesting. I also sensed some parallels to responsive design, as I understand it.
It makes me wonder that maybe the “good way” (for lack of a better term) to built software is a force of nature – the nature of software; the languages, the problems and the tools. So the “good way” is not something that we invent or engineer or refine, but rather something that is (have been gradually)discovered.
Such an immutable nature, and the “good way” it implies, do sound like a solid foundation to build a craft upon. :)
Will we look back on these blog posts in fifteen years and be struck by how they sketch up the basics of the practices and processes used by then?
Dave Rooney about 1 hour later:
From the slide “Analysis and design are not binary Deliverables”: There is no way to tell when they are done, so they are always done on time.
I love it!! I’ve asked the question, “How do you know that ‘Requirements’ are 100% done” before, and no one has ever given me an answer. :)
Al about 1 hour later:
Outstanding! Thanks for sharing.
Patrick Logan about 2 hours later:
I still think your C++ book (yeah that one with the really long title about “booch method”) is probably the best on OOP ever written for any language. I still recommend it to java programmers, etc. Roughly the same era I guess. How come people still write such bad software?
Kenny about 2 hours later:
Uncle Bob,
Are you sure you didn’t give this presentation at a recent keynote? It amazes me that no matter how long you beat the drum there are still people out of step.
Bill Sorensen about 2 hours later:
There are echoes of Lean here as well. Very nice!
Jason Smith about 2 hours later:
@Patrick Logan—good to see I’m not the only fan of that book! Actually, one of the arguments I used to justify purchasing that book for my teams was how pragmatic RCM was.
Giorgio Sironi about 4 hours later:
I guess good design is timeless..
Szymon Pobiega about 13 hours later:
It is amazing that now, 15 years later, in my environment nothing really changed. How can it be that when you tell your boss that we shout try billing for time and material, he tells you that nobody would buy our software? And the boss is right, only the market seems to be wrong—immature. I wish it was as easy here, as in the US…
Amy Thorne about 22 hours later:
It’s disturbing how relevant those slides still are today.
All I can do is repeat Kenny’s comment, “It amazes me that no matter how long you beat the drum there are still people out of step.”
How do we make people listen? How do we make them understand?
I feel like when we the developers tell people these things, they don’t listen, and then when projects run behind and code gets brittle, they come back and just blame us, since as the slides point out, “Implementation is a binary deliverable so it is always where the debt accrued by analysis and design is paid.”
But at this point, when we (again) explain that part of how to fix the implementation problem is to change the development lifecycle, we’re told things like “It’s not your job to tell us how to run the lifecycle, it’s your job to write code.” Or “We need to do waterfall, because we need to promise our clients that we will give them Feature X on Date Y.”
And again, we’d like to help them understand that there may be other models, but that’s not our job, so no one listens or even gives us time to explain. They just tell us to go back to writing code—after all we need to get our butts in gear and write that code, we’re behind schedule!