Modeling Tip: Know Your Tools

  • architecture

One of the smallest, yet quite important bits of advice I want to give on modeling is a simple one: know your tools.

It’s easy to get caught up in a task or frustrated butting up against the perceived limits of a tool. With a bit of learning, practice and preparation, however, those tasks that were once difficult or arduous become easy.

You have to remember, diagramming tools like Visio and OmniGraffle (or any classic tool, for that matter) are powerful, high-quality tools that have been around for a long while. You just need to expend a little effort to learn the tools; poke around, search for commands in the help menu, or take a look at the manual.

One of the most dramatic personal examples of know your tool I’ve experienced occurred earlier this year when I was laying out a dataflow in OmniGraffle. The elements of my dataflow were best displayed as a tree of dependent calculations, so I set out adding nodes, connecting them to other nodes, then re-arranging things into a tree.

Creating nodes and connecting them was easy, especially because I knew the shortcuts (’s’ for shape, and ‘c’ for connector, respectively). Arranging everything, on the other hand, was killing me. I had to manually select the portions of the tree I wanted to shape, drag them around, then make minute movements as I tried to trigger or avoid alignment helpers. I was clearly fighting the tool at this point.

A co-worker noticed my trouble and asked this question: “have you not used OmniGraffle’s auto-layout feature?” Auto-what!? Sure enough, I found the unassuming item Auto layout in the Diagram Layout section. Checking that little box instantly alleviated what could have been hours of fiddling. Instead of moving nodes around manually, they now magically arranged themselves in a beautiful hierarchy. What’s more, because the arrangement was deterministic, sub-trees with identical shapes were laid out identically. Soon enough, we’d recognized patterns of computation in our dataflow that we could abstract to simplify in the broader context.

When you learn how to use your tools, instead of flail blindly something magical happens. They remain tools, instead of becoming hinderances.

Like this post? Subscribe to my newsletter.

Get fresh content on Clojure, Architecture and Software Development, each and every week.