Agile – what happens if you don’t think ahead?
Alec, a man of great perspicacity, and wisdom, has granted us another Agile pearl of wisdom. All of which is totally correct. There’s no doubt that if you are with The Complicators, then you can screw up a product no matter what method you follow.
Let’s just try a thought experiment though – Imagine you’d been disciplined and hadn’t thought of the future at all, and you’d designed your system solely to work on RJE 2780. I am assuming that RJE 2780 is nothing like TCP/IP, so the design you produced would dovetail neatly with RJE 2780, but not TCP/IP. If the product was sufficiently complicated by that stage, your subsequent estimates for adding other protocols would have involved a sizable refactoring exercise, which judging by the attitude they took, would probably have led them to shelve the project in order to reduce expenses anyway, so either way you were screwed.
The middle ground that I tread these days is to acknowledge that this software (if it lives long enough) will be subject to revisions and maintenance that are often easy to predict – rather than build all the new functionality into the product in version 1, I create extensibility points so that it won’t be expensive when the time inevitably comes. That sort of design isn’t the n-th degree analysis paralysis, nor is it the head-in-the-sand avoidance of agile. It is doing just enough design to mitigate future catastrophes. As a complicator in remission, myself, I’d much prefer to do the n-th degree thing, but I resist it in the name of professionalism. (Bitching privately to the wife)