This blog post was originally shared to my Medium account ten years ago. It’s still surprisingly relevant.
“Golden Krishna” wrote a wonderful article back in 2012 for Cooper, which I’ve just come across via UIE on Twitter. In it, the author makes a terrifically important point: one which I try to think of first in any task I undertake.
Being a programmer means that you spend your days working out how to solve problems; from the simple to the incredibly complex. As I wrote a while back, the first and most important tasks are to understand what is required, and work out how to solve the problem as simply as possible.
Don’t just use the solution which “everyone else is using”. Everyone else could be wrong: there are a lot of programmers out there who have already copied someone else’s idea, when that idea was flawed.
Is there an easier way of doing this, or is there an easier way for my users to achieve what they want to achieve?
If you’re a Facebook user, go to the notifications settings screen in your account. Can you see that something’s missing? Yep: no “save” button. Whenever you change an option (e.g. which emails you receive), Facebook saves what you’ve changed automatically. If you hide the panel using the “close” button, it saves it again. (Just to be on the safe side. Belt and braces.)
Are you a Gmail user? Create a new email with a recipient and a subject, but don’t save it. Then close the web browser window after “forgetting” to save your new message. Then go back to Gmail: is your message lost? Nope: Gmail has saved it automatically for you as a “draft version”.
Microsoft Word has been implementing this system for years: the automatic backup. If anything goes wrong, you get the chance to recover your work. So why should other systems work differently? Why should you have to explicitly tell a computer to save your work? Surely the computer — or the programmer who has created the system — has the intelligence to realize that the data has to be saved automatically and regularly.
Get the visitor used to the idea that the data is saved without them having to specifically ask for it to be saved. Who creates data in a system to return to it later, but doesn’t want to save it? That can’t make sense.
Buying a sandwich involves 8 steps. (Prepare a means of payment; go to the sandwich shop; choose a sandwich; go to the checkout; cashier works out the price; you check that the price is correct; you choose a payment method; you pay.) You could simplify that process: open an account with the store in advance and you save two steps. But then you’ve started a different process which is more complicated, involving bills and payments and accounts and credit cards.
At the simplest level, saving your work on a computer takes two steps: clicking on a button to save your work… and remembering to click on the button to save your work.
That’s the process I started using thirty1 years ago, when I did homework on a computer in school. Write stuff in a programme on the computer and save it to a floppy disk to make sure I could work on it tomorrow.
30 years ago.
Surely there’s a better way?
Automate the process by removing the “save” button and you’ve saved 100% of the time you’d’ve wasted by saving your work manually. (If you’d remembered to do so in the first place. I’m sure we’ve all forgotten to save work sometimes.)
“So what?”, you say. “That’s only a tiny moment.” Yes: but spend half an hour adding a range of complex data and appointments to your online calendar and work out how many times you’ve had to click on a save button. For one appointment every day, you’ve clicked at least thirty times: probably more, if you’ve had to add extensive information and “saved my work regularly just to be safe”.
What happens if you work on your data for half an hour and forget to save it? You lose your data. There’s absolutely no need for this: it’s implicit that you want to save your data. So the system should do it for you, without you having to think about it.
Users are only starting to get used to this kind of idea, but it’s been around for years. That’s why it’s important to educate users and bring them up-to-date. Help them to see that by changing a small aspect of the normal routine, your system is helping them to save time and effort.
If they “get it” without any explanation, then you’ve saved them the time and hassle of a manual aspect to a computer-based process.
If not: show a message when they visit for the first (second, third…) time, that their work will be saved automatically. Once they know that after their first few visits, you can do away with the message.
The most important thing for a programmer is to think beyond “how everyone else does it”. If existing solutions were the best ones, we wouldn’t have the Apple Macintosh, hybrid cars, rechargeable batteries or aeroplanes.
Take the time to think about which aspects of the systems you use every day annoy you, and think about how you can improve on that. Then build the solution into the systems you make.
And don’t build an interface where you don’t need one. Interfaces have to be learned: if you can save someone the time of learning how to use a superfluous interface, they’ll thank you for it. And you’ll also have one less place at which your system or your users will stumble.
Originally shared to my now-dusty Medium account in 2014.
Leave a Reply