There are many pieces of software which achieve levels of success I cannot understand given their crappiness. I've already made known my disdain (yet usage of) Evernote. Today I'll talk about Balsamiq, a tool for creating software mockups.
Most of my complaints and frustrations center around the their fervent belief that they know better than their users what features we want and how things should work. They impose a rigidity which is painful, limiting, and often mind-bogglingly stupid.
Here are my chief complaints:
- Their UI library (see top bar in screen shot) insists on using stupidly huge image buttons. Hope you have a high resolution monitor, because if you don't you're in for some screen robbing ugly. Many programs in similar situations at least give you a small button option. Not Balsamiq! Workaround: Use ctrl+l to hide/show the UI library. But why should I have to do that? Make a small icon version!
- Stupidest Arrows Ever! Their arrow element is the most unbelievably stupid implementation of a connecting arrow in any software since the mid-1970s. Want to draw an arrow between things? In normal programs (Visio, any vector drawing program, etc.) you just drag the end points and optionally drag some middle item to change the curvature. Not so in Balsamiq! Balsamiq is just weird about arrows. The arrow you drag from the UI library can only move through 90 degrees without using one property panel item to flip it to cover 180 degrees and then you have to use another property panel item to let you flip the curvature to give you the remaining 180 degrees. It's just confusing, screwy, and painful to use. How on earth can people supposedly focused on great design, ready to preach to everyone about great design, create this monstrosity?
- Want to duplicate an item by ctrl+dragging like in most programs? Nope! Your only option is ctrl+d (or ctrl+c, ctrl+v)
- Want to duplicate an item and shift the copy horizontally or vertically only? Nope, when you duplicate or copy/paste it offsets the copy both horizontally and vertically (down and to the right) so you need to go back and re-align the item horizontally or vertically. This wouldn't be the case if you allowed ctrl+drag!
- The Property Inspector (the properties panel for any object you have selected, and which you need to use) is supremely annoying, it feels like it is constantly in my way. And their docking solution is weak and no help (it still takes up a lot of canvas real estate), and their collapse solution is of little help (since you can't see or use the contents). Why couldn't they do what everyone else more intelligently does and make the content more compact and horizontal or vertical so it could fit in the space used in part by the UI library?
- The send backward feature of most intelligent programs understands that if you are performing that operation you must want the object(s) you have selected to move behind things that it is on top of. You therefore don't need to click send backward many times because you are only sending it back one time for each object below it. Not so with Balsamiq! It seems to move you backward by your z-order, meaning, if there are a billion things below you in the z-order, even if only 2 of them are under you, you're going to have to click back potentially billions of times until you happen to pass the z-order of the two items in question. Thanks, Balsamiq! Workaround: It's not super useful, but grouping can help you through some of this.
- There is a companion site to the software, Mockups to Go, which has user submitted libraries of common UI elements (such as Android Lollipop UI elements). This is potentially great! But, don't expect to be able to copy things from the Mockups to Go files you download and use them in your existing file, because for some reason things don't look the same when you copy them into your existing documents. Why? I don't know. Some missing meta information, some lost reference to something? Whatever the case may be, it seems to mean you can only use the Mockups to Go items by using their document to build your mockup, which is limiting, frustrating and weird (in part because of the next item).
- Need more room on your canvas? Not so fast! They limit the size of your canvas, you can only make it so wide or high. Beyond that you need to create a new file. Why not a new page instead of a new file? See next item.
- Each Balsamiq file is one page, no multi-paging here, despite their restricting the size of your pages and forcing you to use multiple pages, which is therefore forcing you to use multiple files. Hope you're good and consistent about naming schemes for pages spread across many files.
- Pasting in or importing an image? Hope you like messy file systems! Balsamiq doesn't include pasted or imported images in their file format, nope they create an image file of your clipboard paste and put that in the file system, and reference imported images. Hope you don't expect to move files around! Maybe their main file format is XML or something, but come on, lots of XML-based programs at least zip up their meta file with their file assets, so the user just as one file to deal with. Why couldn't you do this?
- Exporting a PNG? Want to pick your own name for the file? Nope! It exports the first time as the same name as the document, on subsequent exports it asks you if you want to over-write the original or pick another name. Why don't you just do it like everyone else? Let me pick a name, default to that name in the save dialog on every other save, letting me choose each time with minimal fuss.
- Want to scroll over to an area off the current canvas size? Nope, you can't. You need to add some object you don't want to then drag it outside to give you more room so you can perhaps think or get a more comfortable look at something. Other programs let you scroll into empty areas, but not Balsamiq!
- Want to change the thickness of a vertical or horizontal line? Not allowed. I get that this isn't a drawing program, it's a mockup program, but line thickness can convey importance and meaning and help you build widgets you might want to mockup. But, nope, we can't be trusted to use line thickness wisely, apparently.
- Mouse pointer to show context related behavior? Nope, no built in mouse pointers to help you show how mouse hovers might work in a UI.
- Balsamiq uses simple markup to let you use text to create items which are bolded, italicized, linked, etc. They also let you create checkbox groups this way using [ ] and [x] and the link. But what they don't do is make these things consistently available. One text element might support these sorts of markup many others don't. What the hell? Be consistent! Why do I have to remember that this thing is a checkbox group text field and this other thing is a label text. It's frustrating to want to add something and discover I'm using the wrong kind of text element.
- Want to set color of text inside an input widget? Like a light gray instead of black? I don't know if you can. You can't do it by using the properties inspector, where you'd expect to. Perhaps you can with markup, but I get tired of trying things in an unintuitive program.
- Changing the line spacing on a block of text? Not possible! I don't want this to do fancy stuff, but a few times I've been trying to align lines of text with content from another widget (like rows of checkboxes from a checkbox group with lines of text) and it can't be done.
- When I try to switch between open (already loaded) documents (of moderate complexity) it takes more than 10 seconds, and that's on a nearly new top of the line i7, with 16 GB RAM, and SSD.
- And last but not least... Balsamiq is a Java program, and suffers from everything that Java desktop programs do, such as clumsy, non-native interface, poor startup performance, poor UI refresh performance, etc. I love Java, have worked in Java for years, but desktop Java programs never feel as nice as using native ones.
I am tired of fighting with this software to get things done, tired of limitations they defend as "intentional" to promote proper use of the tool. Trust your users, empower your users, don't talk down to them, don't limit them. Less is not always more. Sometimes a little more is more.
I am happy to have returned to the freedom and power of Visio, where arrows work and I am trusted to decide whether something should be rotated or not.