It goes without saying that a major source of annoyance for developers is the familiar necessity of pinpointing the source of undesirable or unexpected behavior in the codebase. The most egregious examples being those that are especially difficult to track down, those that refuse to go away, bugs that come unexpectedly out of left field, and, of course, the ones that take significant time and effort to fix.
Whether you inherited it from a colleague or wrote it yourself when you were more youthful and innocent, poorly written code is another obvious source of developer pain. And unclear or nonexistent comments only make things worse.
Then there’s the need to understand, build upon, or simply maintain unfamiliar legacy code – especially when it was written by a long-departed colleague – or worse, “built by committee” and passed from developer to developer over a period of time.
But enough about problems. You already know the problems that you face as a developer. Let’s talk about solutions. And one of the most effective solutions for a host of problems in any industry is plain, simple communication.
Talk to me
So, we don’t need to go into all the details of why communication is important. That’s a different blog. But I think we can all agree that, when it comes to software development, accurate and complete communication is vital to achieving consistent positive outcomes. In talking about communication, though, it’s important to remember what George Bernard Shaw said: “The single biggest problem in communication is the illusion that it has taken place.”
Sometimes, despite our best efforts, our attempts at communication fail. Or worse, we end up creating more confusion than clarity. It’s at these times that we need to take a look at different ways of making ourselves clear.
We’ve talked before about the importance of visualization in successful learning. We’ve even cited studies to prove it. But aside from aiding in the actual learning or retention of information, visual communication is quite simply a more effective means of accurately and efficiently transferring information from one human being to another. As William Albert Allard put it: “Words and pictures can work together to communicate more powerfully than either alone.”
Why is this true? Many reasons – including:
- Time – Research shows that the brain processes images 60,000 times faster than text. That’s fast.
- Language/Culture – Verbal communication is inherently limited to language. And even when a language is shared, differing cultures add another level of difficulty. Images are more universally understood than words.
- Simplicity: OK, I’ll say it: A picture is worth a thousand words. Given the choice, which would you rather create (or take time from your schedule to read)?
You’re probably already acquainted with UML, but let’s take a moment to make sure we’re all on the same page. UML was created as a way to standardize the notational system used in software design. It stands for Uniform Modeling Language, and it’s comprised of an integrated set of diagrams to aid software and system developers in visualizing, documenting, specifying, and constructing software and non-software systems. It’s also useful in business modeling. It’s a compilation of best practices that have been successful over time in the modeling of complex systems.
And it’s here to help alleviate all of those previously mentioned annoyances.
Some of the benefits of the UML include:
- Getting every team member on the same footing and swiftly bringing new team members up to speed with an overall view of the system. What’s more, once team members understand what they’re trying to build, they can delegate tasks, identify possible issues before work begins, and work more efficiently toward a common objective.
- Allowing you the flexibility to tailor the modeling interactions and elements in a diagram to suit the technologies or domain you’re using.
- Planning and evaluating new features before any work goes into programming them. Changing a UML diagram is much easier and cheaper than the tedious and time-consuming task of reprogramming an entire section of code.
- The ability to communicate more easily and effectively with both technical and non-technical audiences.
- No need to spend weeks learning. You only need to know 20% of UML to achieve 80% of your modeling needs.
But what’s the easiest, most efficient way to harness all of the powerful benefits that UML brings to the table?