Here's a good quick guide/overview of UML on the TogetherSoft website.
Every day new technology comes out or is being talked about a lot and you have to decide whether it's worth the time and effort to learn it or not. Sometimes you look at something and don't think about it, other times you make active decisions on it's value. I call this my crap filter. Lots of things pass through my crap filter and sometimes I'm right and other times I'm completely wrong. UML is a great example where I was spectacularly wrong.
I met Peter Coad - the founder of TogetherSoft - at a BOF at JavaOne years ago. Almost no one knew what UML was and no one was using it as part of their development yet. He was pushing TogetherJ 3.0 and we all got free copies of it on CD. I installed it, played with it, decided it was crap and forgot about it. Doh!
I tried to download the latest version of Together Control Center a few months ago and got a response from the company that basically said, "prove to us why you want to see our software and maybe we'll think about letting you try it." Wow. What a difference... from free copies to "we're so in demand, we can piss on prospective customers now without a thought."
Anyways, I've since seen the value of UML, but not as a programming aid per se. I need to see that in practice with my own eyes, because I don't see it helping all that much. But what IS nice is when you're trying to communicate process flow on the whiteboard, or in a document and having a common graphical vocabulary to use. Also all the latest tech books use UML and it's nice to be able to immediately understand all the diagrams immediately. I think people get a little nuts with UML, but if you use it with varying degrees of abstraction (not talking about each if/then statement, but the process in general) it's very useful.
Like I said before, I want to pass this exam so I'm starting to dive back in UML again too.