« The Carrying-Cost of Code: Taking Lean Seriously | Main | Will Rogers Does Software Development »

June 03, 2011



About a year ago I thought I should really learn UML - I'd read a lot of older-school software engineering books and it seemed to be what everyone was using. I never got around to it in the end.

Do you think there's any point these days for a new developer to actively learn UML?

Michael Feathers

@skilldrick That's the most troubling thing about UML - people tried to make a gargantuan project out of it - mostly to sell CASE tools. The core of what you need to know is pretty damned small. Martin Fowler's _UML Distilled_ gives that plus a bit.


These days, I just draw diagrams (yes, "boxes and lines"). Sometimes they are UML, more often they're SDL, and more often still they're just "boxes and lines", following no particular convention or methodology. All that matters (IMO) is that they aid the understanding of your reader(s). [And if they don't, shoot yourself. Twice.]


P.S. "In the past, people did spend ungodly amounts of times getting all of their boxes and lines in the row before writing code." I know what you're getting at, but feel obliged to observe that a reasonably neat diagram is MUCH easier to read and understand than one whose layout is more, er, chaotic. :-)

Michael Feathers

@Pattern-chaser Yes, the notation doesn't much matter as long as people understand. The thing is UML, is pretty decent for the what I want to explain often, and even if what I use isn't strictly UML I don't mind calling it that.

BTW, when I said "all their boxes and lines in a row" I wasn't talking about formatting as much as the urge to make sure that every detail had been explored in a diagram before writing code.

Greg wilson

You should really, really read Cherubini et al's "Let's Go to the Whiteboard" (http://research.microsoft.com/apps/pubs/default.aspx?id=74243), about what developers actually draw (and why) when they're explaining things to each other.

Michael Feathers

@gregwilson I'll take a look at it. The abstract, though, makes me think of how often I see people just snap pics of whiteboards with their phone these days.


UML is a great tool for visualizing a problem. It gives you something to do with your hands while you think and something to point to if you're fortunate enough to have a collaborating team mate.

It works best on a whiteboard and you should never get caught up in the minutia of the "the" UML. But it's worth learning enough to be conversant in it. Wikipedia actually has all you ever really need on the subject (and probably more). I find Class, Sequence and Use Case to be my go to models.

Rachel Davies

Nice post. I think Agile teams often get the impression that drawing models isn't important, their whiteboards get taken over as task boards and discussion of design goes underground. Sadly lots of Agile meetings seem to focus too heavily on estimating and tracking progress against those estimates rather than help the team get together to workout design issues.

Another way to make it visible to a team how complicated their design is to do a roleplay. Each team member takes the role of an object and you pass a token between each collaborator. I think I first heard about this technique when Scott Crawford demonstrated it at OT2001 (back in the days when UML was still new and exciting). We tried it in our team at Connextra after that conference and it really helped make clear we needed some re-design. We could have drawn some boxes and lines on a whiteboard to create the same effect but somehow this had more impact.


These days aren't spreadsheets the main non-work distraction procrastichnology?

Vineet Sinha

Great post - I especially like how simply you have put it. We have been thinking about this for sometime (diagrams from code). You can see some of what we have been upto here: http://www.architexa.com

Would love to hear thoughts.

Space Clearing

Je vous dis que Jean connaissait très bien Sawimbi, qu'il lui a rendu visite en centre-afrique, c'est quand même pas votre lettre qui va changer quelque chose, Jean est très retissant de reconnaitre certaines de ces amitiés passées et même présentes.

Agile or Waterfall

I agree Agile tends to dismiss UML as it was associated with Waterfall whereas it wasn't used as a way to communicate. Also UML tools are really ugly to do so with users so I draw themself using ... Powerpoint see sample pictures here http://lepinekong.com/combining-use-cases-diagrams-with-user-stories-technique/

Also people tend to use Class Diagrams first because it ressembles so much java classes, I think Use Cases should be used first since it's the closest to Business Requirements.

Dining Room Sets

am known to be very pretentious when it comes to T shirts designs. Few t-shirt designs are in my liking and fewer become part of my wardrobe. Miles to go set the record straight! I just love these guys! Their t-shirts are not only well designed, but have that special touch when it comes to mystery.

iPhone contacts backup

Why not try this method.
And I think it is a good idea.

The comments to this entry are closed.