UML LOGOIt is easy to find numerous negative sentiments about UML. The main complaints seem to revolve around UML being of little practical use and inconvenient to draw and update.

I have been looking into the practicality of UML and find this answer on stackoverflow very interesting:

Using UML is like looking at your feet as you walk. It’s making conscious and explicit something that you can usually do unconsciously. Beginners need to think carefully about what they’re doing, but a professional programmer already knows what they’re doing. Most of the time, writing the code itself is quicker and more effective than writing about the code, because their programming intuition is tuned to the task.

My question is: Is it all that bad to walk while looking at your feet? It is often said that learning to walk is one of the hardest skills a person has to learn. However, in time walking doesn’t seem like a “learned skill” anymore because we do it so much that it seems natural. But what happens when we are walking along a tricky path strewn with pebbles, banana-peels and the like; wouldn’t we feel safer to look at our feet as we walk?

The same goes for programming. Overtime, coding becomes second nature. The inherent danger is that we are prone to stumble if we don’t look at our feet as we walk.

We do need to look at our feet as we walk because we need to be confident of every little detail of the code, yet at the same time, we also need a bird’s eye view to keep an eye on the structure of the code that we are trying to write. This is where UML comes in. UML to a programmer is like a map is to a traveler. It prevents us from getting lost when we are reading or writing a code. It reminds us of the big picture even as we are caught up in the nitty-gritty details of coding and implementation.

Personally, the main “problem” I have with UML is the current UML tools that are available. I am not going to rant about the tools in this post because I think Guy Wiener has done a very good job at it here, here, here and here. In a more recent post, Tim Benke also agrees that “all the solutions (UML tools) lack either in functionality or ease-of-use”.

Sadly, since the above mentioned complaints are associated with UML, overtime people tend to label UML itself as “bad”. Don’t you think that’s a great injustice to UML? We shouldn’t blame UML for the lack of a “perfect tool” to help us make UML diagrams.

Remember that the main purpose of UML is communicating the design and the structure of the code visually. It is after all, a modelling language. Moreover, almost everyone in the software development industry knows how to interpret UML and the fact that it is not language specific adds another edge to it. Certainly, UML does serve its main purpose well.

I believe that what we really need is a more intuitive, easy-to-use tool that can achieve this end in a way that is consistent across programming languages and remains true to the UML standard.