I really enjoy communicating in front of a white-board. Whenever I'm engaged in a discussion with some colleague, asked to explain how some piece of software works or what my design idea looks like, I tend to pull him or her into a room with a white-board.
I think it was Kent Beck who talked about the bandwidth of different styles of communication. From worst to best he listed written documentation, two persons speaking over the phone, two persons speaking face to face and, with a broad margin, two persons in front of a white-board. I fully support this theory since I feel the best discussions always tend to result in a white-board full of symbols, perhaps with absolutely no meaning to anyone who has not been part of the discussion, but invaluable to us who have.
Even when just trying to get my head around a problem or figuring out a small piece of design work on my own I like to visualize my thoughts, "the model", on a piece of paper. Perhaps the result at some point ends up on a white-board to be discussed with others.In all of these situations it is invaluable to have a graphical "language" to use. Since written or spoken language is so imprecise and ineffective in describing complicated relationships and structures, especially among software components or pieces of information or data, we need a better way to express our mental models. This is where Unified Modelling Language (UML) comes in handy. Not that you need to draw complete and 100% correct UML-diagrams, I strongly think that to much details kills the good communication, but being "fluent" in rough UML-sketching gives you a powerful way to structure and communicate your design ideas. As a pure bonus it also strengthens your thinking in object oriented models; always a good thing when designing for Java or .Net.
If you need a good guide to UML I would recommend you to read Martins Fowler's "UML Distilled". Its subtitle is "A brief guide to the standard object modelling language" and I would say it's the only one you'll ever need. It's only 150 pages long and can easily be kept handy at your desk whenever you need it.
Learning UML isn't just good for expressing your own design ideas, it is also necessary if you want to move on and learn more on SE-related topics such as design and integration patterns, domain driven design, etc, etc, since those books (if they are good) always comes with a good deal of UML-diagrams to explain key points and give examples.
No comments:
Post a Comment