“Your lovely design, while laudable and compliant with all the right texts, doesn’t actually work well in the real world!”,while the theorists were all
“You heathen! How dare you advocate violating software design law number umpty-squatch?”Since in both cases I was the arbiter, I ruled for the pragmatists. The first time this happened, I actually had two engineers quit, they were so upset. We were better off for that. The second time, I talked with the leaders of the theorist camp before I announced my decision generally, and several of them threatened to quit if I did so. When I told them I was ok with that, they backed down, and by the time I announced it more generally, they had somehow accommodated themselves to my decision. One of them told me, long afterward, that he had waited for months for the evils that would inevitably result from my decision to manifest – and when they never did, he realized that he might accidentally have learned something valuable :)
In nearly all my experiences in which the theorists had their way, the results were horrible. The example of that that comes most readily to mind was at the now-defunct Stac Electronics, where a cabal of fervent object-oriented design devotees managed to take the leadership of a major development project. Hundreds of pages of beautiful diagrams, thousands of man-hours of meetings, and innumerable design documents later – we had a beautiful but all-but-immutable design ... that didn't even come close to (a) meeting our functional requirements, and (b) meeting our performance requirements. Disaster. The leadership of that team lost their jobs, and the company lost over a year of time-to-market. I was part of the team that came in to clean up the mess, but the dot-comm bubble smacked us around long before we were able to finish that. Very sad, for all concerned. Big lesson to me.
Theorists belong in academia or solitary confinement. Pragmatic engineers ... they're the ticket!