Wednesday, January 23, 2013

It's the Little Things

How often have you gone to pay for something online, entered in your credit card, only to be told, "Card number cannot contain any spaces or hyphens"?

I don't know about others, but when I'm looking at my card I see sixteen numbers divided into four sets of four. Why is it that I have to enter it as one unbroken block?  Yes, computers can handle 16 plain numbers easier than they can something with dividers, but a human doesn't.

If you make a mistake, would you rather try finding it in "429751463580265", or "4297-5146-358-0265"? Heaven forbid you're limited to 16 characters and you're left with "4297-5146-3582-0"!

This is just one example of a problem that's endemic in the software industry: Not paying attention to the little details that make users enjoy using your software. This is anything from forcing useless rules on the user, to not showing options where they're expected, to requiring several steps for the most common actions, to just generally not being intuitive.

Small frustrations add up

Think back to the last time you had a bad day. What happened that made it so bad? Was it one or two major things that just ruined the whole thing, or was it a collection of small annoyances--forgetting your lunch at home, slow people on the highway, losing a pen, mosquito buzzing around your head--that just kept coming until you were utterly pissed off?

I can't remember where I first read this, but one of the major reasons all those small things can cause a great day to go sour is that they represent a lack of control. Humans want to feel like they can control and predict what's going on around them, even to just a small degree.

However, when small things go wrong, things that you would normally have some sense of control over--remembering your lunch, passing that slow truck, swatting the mosquito--are thrown at you, they have this tendency to eat away at one's morale. Chances are by the end of the day you are extremely frustrated at everyone and everything, but if somebody were to ask you, "What's the matter?" you couldn't answer them.

Software is a collection of small things

Modules, features, classes, lines of code, individual characters... They're all small things that add up to become something much larger. As they grow in size so do the number of things that can go wrong and annoy the user.

Things that take away their sense of control.


The more tiny hurdles a user faces when they use what you've made, the more aggravated they will become. They won't be able to look at it and tell you what they hate, but they can tell you they hate it, and they're angry.

If it's something they rarely have to do, then small issues won't be a big concern, so long as it works overall. But if it's a core piece of your software that gets used multiple times a day, then every extra click of the mouse, every tap of the keyboard, every bit of odd, inexplicable behaviour, multiplies exponentially and leads to an extremely dissatisfying user experience.

Make the Little Things Work

This is a topic that has been rearing its head a lot in discussions at work lately, coincidentally starting a couple of days after I started writing this post.*

If you're going to make a product, it is a much better investment of your time to make sure all your existing features work, as a user expects and desires them to, than it is to invest the same amount of time adding new, half-baked, features.

If you were looking at a Point of Sale system, which would you rather see:
  • A system that does sales, inventory management, accounting, payroll, sales reports, time cards, pretty much everything you might use a computer to do for you. However, it doesn't integrate easily with your debit machine, involves going through a dozen menus for every transaction, and is generally ugly and inconsistent.
  • Another one that only does sales, inventory management, and sales reports. However, there is a consistent look & feel across the platform, works perfectly with your debit machine, and lets your cashiers check out a customer in half the time.
Which would you go for? Personally, I'd aim for the one that's a well polished product, and is much more of a pleasure to use. Something that helps me get work done, rather than getting in my way.

This is a philosophy that you should apply to nearly every product you ship: Make the Little Things Work.

That said, don't be afraid to expand the functionality of what you do, just make sure it's not coming at the expense of improving what you already have.

Also, don't be afraid to push back a release a little bit to add that last bit of polish. Remember, you only get one chance to make a first impression.

Just... don't fall into the trap of working on polish forever and never releasing, okay?

Ah, the Irony

After publishing this I went to post it on Google+. When you click the "+1" icon, it auto-generates a description to post along with it. It cut it off in the middle of an apostrophe! Rather than including "I'm...", it instead had "I&#3...", and no way to edit that field, at least not from the popup box.

* To anybody involved in these discussions, I started writing this a few days before "Quality" became the word of the day. It just took me a bit to figure out exactly what I wanted to say here.