The beauty of the proper design
After decades in the software engineering business, one can't read classic texts without getting mad. Not because they were wrong, but because they were right, and nobody seems to have been listening. This particular part about top level design from Mythical Man Month resonates with me dearly:
The process of step-wise refinement does not mean that one never has to go back, scrap the top level, and start the whole thing again as one encounters some unexpectedly knotty detail. Indeed, that happens often. But it is much easier to see exactly when and why one should throw away a gross design and start over. Many poor systems come from an attempt to salvage a bad basic design and patch it with all kinds of superficial relief.
Many a startup I worked on brought me in do just that kind of superficial patching. At first I would present the need for deeper change to management, once I understood where the design had gone wrong. Later I learned to avoid this waste of time, and occasionally succeeded in making the needed changes before the higher ups caught on.
Labels: engineering, mythical man month