Posted on

My personal quest for a UML diagramming tool

Guest post by A. Cranky, Old Man

tl;dr – I’m using Visual Paradigm.

When I needed a way to create a reasonably good-looking sequence diagram for a recent engagement, I was suprised to discover more than 80 diagramming tools on the market. Given such a large pool of candidates, I expected to find several good ones, and I embarked on my quest in hight spirits.

You’d think at my age I would know better.

I’m sure the issues with these tools can be resolved given a little patience and effort. After all, each of them has a satisfied user base out there somewhere.

However, my task at the moment was not to debug someone else’s installer or to chase down undocumented dependencies one by one hoping to get a product to start up, and I’m not interested in fighting with a user interface that makes producing a diagram so difficult it takes 50 times as long as it would have taken to spray paint it on the window of a subway car.

So if you feel inclined to respond to a comment about an issue with a statement like, “But I use this tool all the time, and it works great!” then let me take this opportunity to congratulate you before returning to reality.

The nature of the issues I encountered can be generalized as follows:

(1) The documentation, integrated help, and/or information on the website is incomplete, out of date, or poorly written, with the result that I could not see what to do with the product within a few seconds of reading. Ideally, no documentation would be necessary; products would install in an unsurprising way for each supported platform, and work intuitively for someone who is familiar with UML diagrams. In my humble, it shouldn’t be necessary to make a circle of candles on the floor and chant magic words in a dead language to summon a diagram.

(2) The product does not “just work.” You have to fart around with the installation, search for and install dependencies separately, and/or examine error logs to figure out why it will not run. Although I am qualified to do that kind of work, I am not looking for a diagramming tool because I’m keen to debug it. I’m looking for a diagramming tool because I need to draw a diagram. This seems to be a use case that didn’t occur to the developers of most of these tools. Software should be tested and packaged properly. There are fairly standard installers for Microsoft Windows and Apple OS X, and every flavor of Unix and Linux has a default package manager. Use them.

(3) The product is too “fancy.” It has multiple modes or styles or approaches to diagramming, and/or it assumes you intend to do a large-scale system design every time you open the tool, and makes it hard simply to draw a single diagram quickly. In some cases, I never even found the type of diagram I wanted to create amidst the numerous menus and appearing/disappearing palettes and what-not.

(4) The user interface is flakey and/or hard to use. You have to spend so much time fighting with the UI that it takes an hour to create a diagram that should have required three or four minutes to produce. I especially hated Creately, Lucidchart, UMLet, and Whitestar for this reason, but almost every product has this issue to an extent.

Here’s an alphabetical list of the products I tried. This is not a comprehensive list of UML diagramming tools. I didn’t try every available product. I stopped searching as soon as I found one that seemed usable.

Adobe Express

This is touted to be one of the best UML diagramming tools available. I was unable to locate an option to create any kind of UML diagram.

ArgoUML

Does not start.

Astah

Requires entry of personal information before the user has a chance to try the product. That’s a non-starter.

Cacoo

I was unable to figure out what to do based on information provided on the site.

Creately

The user interface does not work. Often, an element does not “stick” to the canvas. When deleting an element, one often must delete it several times before it goes away (strangely, it’s not always the same number of times). Lines do not stay where you put them. Pure frustration with no added sweetener.

EdrawMax

The installer appears to do nothing at all. No error messages, no spash screen, and no apparent result.

Gliffy

Appears to require a Confluence license and/or other Atlassian tools. I don’t want to install a whole raft of other tools or “sign up” for a bunch of services I don’t need just so I can draw a diagram. There’s no need for every tool to be fully integrated with “your team’s collaborative workflow.” Sometimes you just need a screwdriver for a minute. You don’t need the whole hardware store.

JetUML

Packaging is crude and installation is a hassle. I abandoned it after wasting several precious, irreplaceable minutes of my life trying to get it to run.

Lucidchart

Clumsy to use. Difficult to move endpoints and lines; the tool modifies the shape of the line instead of just moving it where you drag it. If you need to move an element, it’s much quicker to delete it and re-create it than to move it (and every time you do so, frustration mounts). End result looks crude; not visually appealing.

Papyrus

Does not start. Different problems on OS X and Windows, but the bottom line is it does not start. Can’t find this class, can’t find that class, not enough cache space, blah blah blah, not my problem, goodbye. And get off my lawn.

PlantUML

Can create an image file based on formatted text input. It works but the process is pretty tedious. It is unclear how to make practical use of the tool.

UMLet

User interface is unusable. Elements disappear under the cursor when you hover; if you can grab an element to drag it, it often disappears before you can drop it. Elements placed on the canvas appear to be uneditable; at least, I was unable to figure out how.

Visual Paradigm Community Edition

Conventional Mac installer, no surprises, no failures. After using the tool for a few minutes, my impression was that it “understands” the elements of each diagram type. Unlike any other tool I tried, it seems to “know” what is meant by a line one draws in a particular context. Other tools just draw plain lines, and don’t seem to “know” what a line means in the context of any given diagram type. The UI “feels” solid – things don’t just disappear or fail to stick or fail to delete or slide around on the canvas. Will continue to work with this tool for a while and see how it goes.

Whitestar UML

Windows only, but at least the installer works and the product starts. The UI looks clean. I was unable to create a sequence diagram with this tool. The help says to click “Toolbox” and then “Sequence,” but there is no “Sequence” option. I tried working with another diagram type to see how the tool feels, and was disappointed. I was unable to draw a connector between two objects. The tool complains, “Connect objects exactly,” and never connects objects. Perhaps it is a kind of psychological experiment, to see how long people will keep trying to connect objects “exactly.”

yEd

Online comments are positive and the site looks nice. It appears to be an SDK only. I was never able to find any downloads or helpful instructions. Maybe it’s useful for people who need to embed drawing capabilities into other products. Just a guess. It’s hard to tell, really.

Posted on

Where to Find Prominent Voices in Software Other Than Twitter

Where to Find Prominent Voices in Software Other Than Twitter

Updated 6 Nov 22

Thousands of thoughtful and experienced software professionals use Twitter to share information and interact with one another. We’ve come to depend on Twitter as a source of information and interaction with colleagues.

With the recent changes at Twitter, many users are looking for alternative social media platforms. But many of us hesitate to “leave” Twitter because that’s where we find industry leaders in the software field, and we don’t want to miss out on what they have to teach us.

The most well-known of these typically use Twitter mainly as a publishing platform and for “reach” rather than for socializing. Therefore, our experience with them consists of reading whatever they post and following links to other Internet sites to read their articles and blog posts; listen to their podcasts; and watch their videos, conference talks, and interviews.

In other words, it isn’t a social relationship, but rather a producer-consumer relationship. For example, some industry leaders write article-length pieces in the form of tweet threads. This is a poor user experience for the consumer. True, there are some ways to improve the experience – through third-party services like ThreadReaderApp, for instance – but still, a social media platform isn’t optimized for that use case.

We can get the same value by visiting people’s sites directly, with no dependency on Twitter. If some of us happen to know some of these individuals, we can connect on other social media platforms. We need not depend on Twitter as the primary contact point. It has been convenient, so we have developed the habit of using Twitter.

If we change our habits in this way, what might we lose? It occurs to me that Twitter functions as a kind of notification system. When someone has a conference talk, training class, or event coming up, or they have just published a new article, book, podcast, or video, they announce it on Twitter. We don’t have to remember to go and visit their sites to find out what’s on their calendars, or what new information they have published. I suspect this notification function will be the hardest thing to replace.

People also tweet when they are looking for work, or looking for employees. There are other sites whose main mission is work-related connections, and they may provide better support for those needs.

This post offers a woefully incomplete list of leaders in the software field whom you may have been following on Twitter, and whom you don’t want to lose track of as things change. Please let me know if I’ve overlooked someone who should be listed.

Adkins, Lyssa (@lyssaadkins)

Bache, Emily (@emilybache)

Beck, Kent (@KentBeck)

Belshee, Arlo (@arlobelshee)

Benson, Jim (@ourfounder)

Booch, Grady (@Grady_Booch)

Brown, Simon (@simonbrown)

Burrows, Mike (@asplake)

Cockburn, Alistair (@TotherAlistair)

Dinwiddie, George (@gdinwiddie)

Falco, Llewellyn (@LlewellynFalco)

Farley, Dave (@davefarley77)

Feathers, Michael (@mfeathers)

Fowler, Martin (@martinfowler)

Gee, Trisha (@trisha_gee)

Glazer, Hillel (@hi11e1)

Gottesdiener, Ellen (@ellengott)

Gregory, Janet (@janetgregoryca)

Grenning, James

Hammant, Paul (@paul_hammant)

Hendrickson, Chet (@chethendrickson)

Henney, Kevlin (@KevlinHenney)

Hightower, Kelsey (@kelseyhightower)

Hill, Michael “GeePaw” (@GeePawHill)

Jeffries, Ron (@RonJeffries)

Jones, Angie (@techgirl1908)

Kerievsky, Joshua (@JoshuaKerievsky)

Kern, Jon (@JonKernPA)

Kua, Pat (@patkua)

Langr, Jeff (@jlangr)

Marick, Brian (@marick)

Morgan, Jeff “Cheezy” (@chzy)

Ottinger, Tim “Agile Otter” (@tottinge)

Patton, Jeff (@jeffpatton)

Perri, Melissa (@lissijean)

Rainsberger, J.B. (@jbrains)

Rothman, Johanna (@johannarothman)

Schwaber, Ken (@kschwaber)

Shah, Binni (@binitamshah)

Shore, James (@jamesshore)

Sutherland, Jeff (@jeffsutherland)

Wake, Bill (@wwake)

…and…

Posted on

How we think about recruiting

There’s an odd situation in the software industry. Employers are adamant that they can’t find suitable talent to fill the technical jobs they have. Job candidates are adamant that they can’t find suitable work. It seems strange to me that both these things are true at the same time.

Many people have opinions and observations about this. Often, they cite academic studies, industry surveys, formal management models, psychology, and various other things that are confusing for a Bear of Very Little Brain like me. I wonder if we could go a long way toward solving this problem if we ajusted, just slightly, the way we think about what we’re aiming to accomplish, on the hiring side and on the job search side.

Continue reading How we think about recruiting

Posted on

Scrum pain in large organizations

Although “agile” has been around a long time, and Scrum even longer, many large organizations are only now undertaking “agile transformation” initiatives. People in those organizations who have not had experiences elsewhere with “agile” or Scrum are on the learning curve. I’ve noticed a handful of challenges that seem to be fairly common in these organizations.

Maybe it will be helpful to mention some of the common points of confusion and try to clarify them. I hope so, anyway.

tl;dr warning
Continue reading Scrum pain in large organizations

Posted on

Gilded Rose: Read by Refactoring

People who practice refactoring often turn to the Gilded Rose exercise, originally posted by Bobby Johnson and extended and elaborated by Emily Bache. The exercise can be approached in many different ways. I think that makes it especially useful for exploring alternative ways of dealing with existing code bases.

Several years ago, Arlo Belshee came up with an interesting way to address existing code that he calls read by refactoring. I will admit that I haven’t discussed this with him directly, nor have I attended his training on the subject. I’m basing this on my reading of the idea online and experimenting with the approach on my own. So, I might be missing key aspects of the idea. Please feel free to correct me if that’s the case.
Continue reading Gilded Rose: Read by Refactoring

Posted on

80/20 Skills

People in our field like to cite various maxims or laws. To name a few, there are Conway’s Law, Hyrum’s Law,
Brooks’ Law, the Peter Principle, Hofstadter’s Law, the 90-90 Rule, Parkinson’s Law, Sayre’s Law, Eagleson’s Law, Postel’s Law (a.k.a. the Robustness Principle), Linus’ Law, the Dunning-Kruger Effect, the Principle of Least Astonishment, Hanlon’s Razor and it’s notable parent, Occam’s Razor, and of course the ever-popular Murphy’s Law.

I’d like to consider a couple of maxims today: the Law of Diminishing Returns and the Pareto Principle, or 80/20 Rule, in relation to the idea of multi-skilled team members on a cross-functional team.
Continue reading 80/20 Skills