When I first saw it, I thought it was a process step that was unnecessary.
Then I thought it was a way to program visually, but generated code only works in narrow domains.
I realize that UML is tool to define your system, and it lays bare your assumptions, which is one of the hardest problems in computing.