UML - An old acquaintance long forgotten
Yesterday I experienced a moment of involuntary memory Proust would have been proud of. In this case, rather than the “episode of the madeleine”, it was the much nerdier “episode of the UML”.
Memories of arrows and boxes were quickly over-shadowed by those of the conversation and coffees that were enjoyed during the timeslots allocated for UML class at university. The non-native speaking lecturer, the confusing notes, the seemingly pointless nature of it all; memories that make me wonder if we really gave it a chance at all? As if it were an old friend I found myself asking, where is UML now? What is it up to? Is it still alive?
For those of you not familiar with it, Unified Modeling Language (UML) is a general-purpose modeling language in the field of software engineering, which is designed to provide a standard way to visualize the design of a system. The idea of UML seemed to make a lot of sense… theoretically. Indeed where would designers be without an ability to map out their designs diagrammatically? Standardized notation was an obvious logical progression.
But is standardization really necessary, or is it a burden that generates additional work, developer frustration and unnecessary complexity?
Use of UML by a team who are fully competent with it may carry some benefits, but lets face it, here in the real world a large number of developers cannot, or are not interested in remembering the nuances of the notation. Many never learned it properly in the first place. Developers may hide the fact that they don’t remember the notation and as a result, waste time looking it up or waste other coder’s time getting it wrong. I’ve seen full-blown arguments as a result of misinterpreted UML. It has always struck me as a tool that made the design stage unnecessarily complex.
In recent years UML seems to have somewhat fallen out of favor as a result of the direction the industry is taking. It may have been useful at a time where Business Analysts imagined a solution in a land far away and news of the beast flowed down through the deadly waterfall of documentation. But with tech entrepreneurs now preaching the good word about Agile development, ‘failing fast’ and all the other fancy ways of saying ‘just get it done’, it has lost significant ground. It is notable by its absence from job application requirements. In almost 10 years I have never once been asked about it in an interview or discussed its merits with another developer. Coding has also grown and changed so much since UML was first created in the mid-90’s that it is sure to carry extensibility issues, even if it has been updated several times since.
In thinking about modeling systems, I ask myself ‘what is the simplest way to communicate a design idea to the team efficiently and without ambiguity’.
Considering that the majority of people (60 - 65%) think visually, making use of the full range of possibly imagery must be more intuitive and allow for a broader scope of idea depiction than a small set of standard notation?
As a designer and developer who creates and comprehends ideas best when they are represented visually, I made extensive use of all sorts of diagrams of my own creation when we designed the game engine. I used a mish-mash of boxes, arrows, color coding, side notes, cave art representations of memory registers or pointers and a few interpretative dance moves to explain my ideas. And despite the unique nature of how I like to present an idea, the team never once suffered dire consequences from the lack of standard notation.
As long as there is good face-to-face communication in the team and an open atmosphere of scrutiny applied to all proposed solutions, a simple cave-man drawing scrawled in whatever format suites the designer with a round of questions afterwards can fit the bill just as well as a formal notation. Who really cares if the arrow is supposed to be filled in or not, just as long as we can establish quickly what actually needs to be done!
And so through my own experiences I have to conclude that UML is not the clearest, quickest or most extensible way to represent a system design.
Will the next generation of developers even hear of UML? My guess is that it will become, like Proust’s madeleine, a distant memory.
Farewell my old friend.