Since writing that I have had some clarification on how TDD is supposed to work and will either revise or sequel my document. Spoiler: I still think it’s fundamentally wrong, and in the clarifications I received from the very few who didn’t simply rage and say “your wrong” (sic) I also picked up a lot more objections, for example unit tests as design, design docs obsolete. That’s as fanatic as Second Amendment crap.
By the way I do agree with you about the history of letting customers do beta testing. That sucked. I sat in many a meeting at Microsoft (I worked there half of 1989–2009 in six different gigs) where contempt for customers was open and undisguised, and many times I was criticized for having been too thorough in work like threat modeling, because all Microsoft wanted was to check a box.
Nowhere was this more prominent than in the conversation where I was introduced to TDD; they wanted me to tear apart a fully-tested and release-ready application to make it unit-testable; it was too small for unit testing. At the end of the conversation he had moved to wanting me to write separate code, completely outside the application, that new unit tests would call.
Just so they could check the “project has unit tests” box.
When he explained TDD in glowing terms I decided he was deranged. Sorry, while I agree that we should have tested more in the past, the overreaction (thank you for that candor) has carried the industry into lunatic territory.