Keep it simple and stupid.
Aside from “less is more”, this is the mantra that defines my approach to application building best. It's the phrase I repeat through every wire framing session, the thought that comes to mind when brainstorming new app ideas or writing interface-facing code.
Keep it simple and stupid.
Why? Because no one likes to read user manuals. Because no one has time to waste looking at your cute button animation. Because our brains are already so saturated with information, we can hardly afford spending any more brainpower remembering what this unlabeled, obscure icon is for (sure it looks nice, I'll give you that - but I so don't care when needing to get work done).
Give your users a break
How many applications do you use every day? In these, how many keyboard shortcuts do you use, because the actual feature you need so often is buried 3 layers deep in a tiny, difficult to use menu? Have you ever seen a “save” icon in Photoshop?
What is wrong with us? How do we even cope with this (if we do at all) ? And how can we expect our users to cope with this?
Every time we create heavy and complicated software, we contribute to ruining users lives a little more.
What can we do about this?
Look outside, because there's nothing like a good book
Sometimes it is a good idea to think outside of the box. To look at an entirely different industry for inspiration on how they tackled similar issues.
For instance, a bank turned to Disney World once to analyze how the theme park handled large crowds and queues. They then put this knowledge to work for their own problem: client queues at their branch offices.
There is this school of thought in writing that encourages authors to write something and then get rid of half the words. And then, get rid of half of what's left. It may seem incredibly difficult and extreme, but it forces the author to focus on the essence of her work.
You get rid of the superfluous, only retaining the heart and soul of your creation.
Could we apply this in software design? What if, when brainstorming for a new application, we decide to remove half the buttons. And then do it again. What would be left? Would our app still be useful? And if yes, how could we focus on the remaining buttons to make them as simple, powerful and useful as possible?
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
— Antoine de Saint-Exupéry
And where nothing is left to take away, nothing superfluous is left. Less help text, no user manuals, no headaches, less bugs, less maintenance time.
Only the joy of knowing we created something beautiful and brilliant. How would that feel for a change ?
Found a typo ? Correct it, submit a pull-request and get credited here!