My first real-world job in the industry was in a large-ish shop that worked as follows:<p>Create a full-detail schematic of the system in version-controlled UML.<p>At some point, &quot;deploy&quot; the UML by printing it into a 4 cm-thick binder of paper, then distribute these binders to the head architects.<p>Iterate on the UML until the architects are happy. (The architects spent many years trying to auto-generate code from the UML diagrams and have the results &quot;fleshed out&quot; by lowest-bidder consultants, though this never really worked. Their stated goal was to no longer have to write any code in house, but rather nothing but UML.)<p>Begin implementing the system in house with auto-generated code from the binder-of-UML as a baseline, after the lowest-bidder consultants had failed.<p>Quickly get into big fights between the coders-on-the-ground and management when it was found that the UML diagrams contained major architectural flaws and the UML-phase would not, actually, account for 80% of the project&#x27;s duration and budget. Needless to say, more than half of the projects failed entirely.<p>This experience nearly made me leave the industry, before I discovered that there was plenty of software being written in a saner way. This was more than a decade ago, but to this day, just seeing UML diagrams turns my stomach.