Who uses UML? The answer may surprise you! Unless you’ve spent any time working as a programmer, then the answer will not surprise you. Not at all.

At my last job I saw a data scientist reading a heavy UML doorstopper of a book. He was a mathematician who liked to dive into proper programming concepts (I once saw him slowly reinvent unit testing in his Jupyter notebooks). He asked me if programmers used UML.

Me: “We draw boxes and arrows.”

Him: “That’s it?”

Me: “Sometimes the boxes are rounded.”

I’ve always felt a little bit guilty for how little I used UML. I learned it in college, in a single course I took to satisfy an architecture requirement. I came away with the inchoate belief that UML could be used to build entire programs and eliminate the pesky “programming” from programming. Then I entered the job market and didn’t see proper UML in 20 years.

Who uses UML?

In 2013, British computer scientist Marian Petre asked a simple question: who uses UML? She published her results in UML in practice. It was a qualitative study, she interviewed 50 developers across 50 companies around the world.

Let me sum up the results:

graph TD
  A[UML] -->|Huh! Yeah!| B{What is it good for?}
  B -->|Programmer| D[Absolutely nothing]
  B -->|Architect| E[Very little]
  B -->|Academic| F[Everyth... wait, what did those other two people say?]

Here’s the exact breakdown:

  • 50 interviews.
  • 35 people don’t use it.
  • 11 use it selectively, just whatever is useful
  • 3 use it just once in a project, to generate code
  • 1 uses it to comply with customer or management requirements
  • 0 use it fully

And the most telling quote:

There was a tendency for informants in large organizations who did not themselves use UML, or who used it selectively, to assume that colleagues in other roles were likely to use it more.

Really? No one?

Reactions to Marian Petre’s paper were immediate. So many that she got another paper out of it!

“No shit” or “Oh, shit!”: responses to observations on the use of UML in professional practice

This paper does have a correction of sorts to the original. Petre emphasizes that selective use of UML is consistent with UML. UML was never meant to be an all-or-nothing solution, it’s a toolbox.

Grady Booch, one of the founders of UML, weighed in with similar sentiment. He uses just the pieces that he finds most useful.

One person quoted in the paper is Martin Naedele, who said, “UML is to the modeling we do every day as Latin is to the language we use every day.” I don’t agree with this. People were modeling software long before the UML was invented in the 90s. UML was a standardization of boxes and arrows, not the origin.

Further Reading

UML in practice – my top fives by @YVESHWANG

Talks about how he uses UML tools.

Software Engineering Education by Greg Wilson at The Third Bit

Don’t spend more than on lecture on UML. In the 25 years since its creation I’ve only met one programmer who actually used it, and he was a Russian mathematician who’d read up on knot theory before tying his shoes.

https://www.reddit.com/r/programming/comments/1micgw/uml_not_used_in_practice/

A reddit conversation on the first paper.

UML adoption in practice: has anything changed in the last decade? by Jordi Cabot

A short question with great conversation in the comments.