So I started reading Martin Fowler’s Refactoring about a week ago. And then a little bit through the intro I got sidetracked by the UML diagrams and decided maybe I should spend a little bit more time learning about them.

So then I picked up his UML Distilled book and I’ve been working my way through that. I’m trying to approach it deliberately, but not so deliberately that I get bogged down. And not so quickly that it all goes in one ear and out the other. I feel like finding the sweet spot is pretty difficult.

Especially with this sort of topic. I don’t think I’ll be making super detailed class diagrams very frequently. Probably just sketches in certain PRs or certain specs I write. I’d also like to be able to look at design pattern diagrams and not just have my eyes glaze over because I’m trying to take in all the details versus just internalizing what they’re saying.

I also spent a little time last night trying to find a service that makes drawing the diagrams easy. I do like Lucidchart, but it feels like it should just be the go-to for super simple diagrams without any of the fancy notation. Not that I really want to be using the fancier notation in real life, but I want to be able to practice it at least. Also I didn’t want to spend $300 on some random bloated enterprise application that does way more than I need. I settled on StarUML, which seems like a nice in between option. It also has a C# extension so I can generate diagrams from existing code. It’s not perfect but it’s still pretty neat.

So my plan is to basically finish up the UML Distilled book, but be sure to draw out any UML diagrams I happen upon, just for practice using StarUML and to work up some “muscle memory”. I did also start doing small mini-diagrams with the current work I’m doing. Not necessarily to share, just to see what they look like. e.g. GhostDots:

The biggest downside being that when you’re just making these things de novo and happen to care about understanding the notation better, there’s nobody to tell you something is being used correctly or incorrectly, which always feels a little questionable w/r/t learning something well.