I once had the pleasure of meeting the UI designer for Tivo at a party. Sadly, this was before it had become popular and I was not yet a customer, so I don’t have any great stories to tell about her philosophy toward UI design. In any case, I remember that some time later I mentioned this encounter to a software engineering friend of mine, and he responded with great distaste, “Boy would I like to give her an earful!”
To this day I am stunned by my friend’s callous disregard for the Tivo UI. Of course Tivo isn’t perfect — no UI is — but there’s so much they could have done wrong, that most companies would have done wrong, that they got right. I still regard Tivo as a landmark product that changed people’s perception of what’s possible with technology.
So what of my friend and his disdain for Tivo? Sadly it’s not too uncommon to hear techies skewer products with otherwise good UIs. And that is the crux of what I call the Elegance Paradox.
I often say that it would be awfully painful to be a top-notch designer whose boss doesn’t understand design. The design process is about whittling away distractions, making the obscure feel obvious, making the obvious feel implicit, and doing it without anyone noticing. To the untrained eye, your best work looks like you’ve done no work at all. If you’ve done a stellar job, then your design will feel utterly obvious.
The Elegance Paradox is this: to create elegance requires entirely inelegant preparation, but nobody should be able to see that. How many times have you said to yourself “that person makes it look so easy.” That’s a pretty common reaction to seeing an expert in a field you’re not familiar with — their presentation looks smooth, spontaneous, and simple. But the more familiar you become with a particular field, the more you recognize how difficult it all is. As you get more proficient, you realize that creating elegance isn’t smooth and effortless, it’s full of strains, grunts, gasps, hard work and complexity.
And once you’ve whittled away and acheived some modicum of simplicity, what’s left for the outside observer to see? “Obvious” flaws.
When I first became interested in UI programming (and more specifically, sane user interfaces), I thought that I was one of the rare programmers who “got it.” I would look at the world of tech products out there, and I could see their numerous flaws instantly. I was certain that, given the chance, I would be able to do better.
Several years later I’ve learned the toughest best lesson I could: it’s easier to see the flaws than it is to see the elegance. As much as I’d like to believe otherwise, I often don’t “get it” when it comes to UI design, which is why I rely heavily on the opinion and judgement of my designing coworkers. Anytime I might pick at something I perceive as a UI flaw, I remind myself that there are a myriad of design decisions that I can’t see. If I were put in the same position as the designer, would I have made the right choice on all those decisions? Likely not.
So now we come back to my friend who thought the Tivo UI designer needed a good talking to. What’s his problem? His problem is that he doesn’t understand the Elegance Paradox. The simplicity of the design led him to notice only that which was missing. To him the design felt entirely obvious, and he mistakenly therefore assumed creating such a design is an straightforward process.
Amongst software engineers, the designer of Rails or Python or jQuery will receive much credit for their work (and rightfully so) because we’re all familiar with the problem space, and we all recognize that we likely couldn’t (or didn’t) make the same good design decisions when put in their position.
For UI builders, it’s a different story. All too often, the problems of UI elegance are dismissed as “something we just need to do better,” or “an area where we need to pay more attention.” Well-intentioned critique, no doubt, but not remotely grasping the scope of the problem.
Good UI is hard. Not just the design, but the programming too. Coding an elegant UI is an endless process of fixing twitches, hitches, and glitches that no one will ever see or know about. When done well, the end result is a smooth, elegant, effortless UI interaction, but your customer won’t recognize the tireless effort you put in to make it happen. And that’s how it should be. Is there any better way to serve your customer?