UML cannot be appreciated out of its context, both socially and technologically. It was created out of big projects at a time where big things were the norm, and then became a product with its own dose of fad, almost dogma (let&#x27;s do everything in UML, ontologies, sequences, deployments; precompile it, compile it, run it...).<p>I found it to be a pain as a student (it clearly was a fad at that point), but every time I go back to shipped code in mainstream paradigms, I understand why people went this way. It&#x27;s as boring as intractable. We don&#x27;t want to code at that level, we want abstractions, but these paradigms didn&#x27;t help so we needed diagrams. And it&#x27;s an offspring of OOP mostly which helped reducing cpp-like complexity but not for free.<p>IMO UML boils down to a visual type checker. We can layout things more efficiently than with linear text, and can appreciate the relationships between parts. But in a way, that&#x27;s what a type checker does. I remember never needing a diagram (for medium single person programs that is) in Eclipse since it could look at the whole system for me and show contradictions or suggest options.<p>I&#x27;m now very regularly tempted to do things with a bit of empty interface logic checking, FP-ish minded. You can still write this as text, and as long as it the types flow logically it&#x27;s OK.<p>ps: this was also influenced a bit by posts like these <a href="https:&#x2F;&#x2F;www.google.com&#x2F;search?q=f+sharp+uml" rel="nofollow">https:&#x2F;&#x2F;www.google.com&#x2F;search?q=f+sharp+uml</a>