I recently read a post on GarlicSim regarding designing software, and it got me thinking. At the moment I’m a hybrid between developer and user. I’m a Computer Science student who will probably end up designing and implementing software systems at some stage, but as of yet I haven’t had any real life experience with making products for end users. I’ve done a few assignments and practicals which relied on my ability to design and implement a decent UI. But nothing that was intend to be viewed more than one or twice for grading and then never looked at again. I’ve also designed and built some websites, but they’ve all been personal projects focused on learning the technologies (HTML, CSS, PHP, Javascript, Ruby, Rails, Twitter/Facebook Apis MySQL etc). The goal wasn’t really to create something that people would use. So my perspective is that of a designer in the making, with plenty of experience of using UIs.
When I got my first computer it ran Windows, soon thereafter I switched to several different flavours of Linux before settling on Ubuntu. Now recently (about a year ago) I’ve switched to Mac. From this experience, I can easily say that the people that develop for Mac are by far the most UI/UX driver developers on any of the platforms. Look at programs like OMM Writer, WriteRoom, TextMate, Adium & CoverScout to name but a few. They are programs which are designed from the user perspective to deliver a very specific experience. Whatever you may say about that use Macs, the people that write programs for them tend to care about user experience.
OMM Writer & WriteRoom are text writing apps that try to take away all the distractions when you’re writing. They take over the screen and stop your attention being drawn by apart from the text. OMM even provides some low key music to help set the mood. Similar points could be made about TextMate, Adium & CoverScout.
Thats not to say that Linux/BSD focused developers aren’t UI focused, but I honestly believe that for the most part they are technology driven. They let the technology stand out, and don’t care so much about the end user. They provide powerful tools which get the job done, but there isn’t that focus on usability. Windows is similar, but with a bit weaker technology and a bit more UI focus.
My meandering point is this. It doesn’t matter who the tool is for for, be it a Unix PowerUser who writes his own Perl scripts using emacs, or a doddering grandmother who’s about to hit her 100th birthday. The little things matter. In the original blogpost on GarlicSim, the Author compares the program to a butler. He should do his job as best as he can, as quietly as possible and with minimal fuss. If he’s doing the job properly you shouldn’t even notice him, he should just melt into the background.
Thats how a program should be. It should be a tool to let you do what you need to do and melt into the background. The options should be intuitive and obvious. You shouldn’t notice its there or have to fight with it to get it to work.
You may think that this will eliminate complex apps, or apps that require training to use. But my point it, an app shouldn’t require training to use. PhotoShop is largely considered (one of) the best of photo manipulation tools, however it is an unwieldy behemoth to try and use. Sit a novice user in front of it and they will be lost. However take Picasa as a counter example. Sit a novice in front of it and its obvious how to use it. The options are simple and easy to figure out without much effort. However there is quite a lot of power packed in there, and given a bit of time and effort you can uncover it. But there is never that lost at sea moment, where you have no idea what you’re doing.
Picasa has a steady learning curve that starts off quite small and rises over time. However with PhotoShop you’re thrown in at the deep end, nothing is genuinely obvious, and everything seems like its too much effort to do. I can remember the first time I used PhotoShop and I ran away screaming. I’ve since invested the time and effort to become proficient at using it, but my point is that it shouldn’t be that hard. Programs should be easy to use. They should bend over backwards to do what the user wants, and make it obvious how to do it.
We’re no longer in the time where even using a computer required you to be half technical genius, half wizard. Now computers are used by everybody, everywhere, all the time. It’s easy to set them up, and get them running. We already have very powerful tools, and my point is that we should polish them to a mirror sheen.
Like with cars. Originally the car was the domain of the tweaker. They could disassemble it, and put it back together. They could tweak the petrol to air ratio to get better performance. In essence they knew how every part of the car worked and could do anything they wanted with it. But over time normal people started buying cars. They didn’t want to have to change the petrol to air ratio, or get covered in oil when the engine needed to be fixed. Today we have very complex and advanced machines that practically drive themselves. The driver doesn’t have to worry about how it works, all they know is that it needs a service every 15,000km, and should keep the tires pumped and the tank full.
Slowly but surely that kind of world is coming to computers and we need to be ready for it. Users shouldn’t have to edit plist files or put up with bad design.
Programs are there to help the user get a job done. They should do it quickly, quietly and invisibly. I shouldn’t know that Java is running the background nor should there be a dock icon that yells at me each time Java is run. I don’t care that a website uses Java to run it’s shitty little applet. As an end user that should be invisible to me. As the Mac bigot is oft quoted.
It should just work.




