The obvious isn’t obvious.
Seeing endless opportunities to improve the artifacts of the everyday is the curse of the designer. We cannot abide the buttons in elevators, and we grit our teeth at every door equipped with handles that can only be pushed. Some might regard this as indulging in irrelevancies, but I think not. In a world of pain and injustice, I’ll concede that addressing minor inconveniences appear unworthy, but if you are in the tech business, these little things count more than you think.
I listen to iTunes play my music in random order. It does it incorrectly, as does every other music player I’ve ever used. They all apply the same flawed selection algorithm. The same is true for screensaver programs that shuffle display images. They use the identical method, identically wrong. Watching them all fail at this simple task has frustrated me for years.
You are probably wondering what could possibly be done differently with random play. Random is random, and the algorithms for randomly selecting songs to play have been around since forever. What seems to be the trouble?
There’s a subtle problem with the understanding of what “random order” means. Apparently, no music player and no image displayer software seems to understand this.
The “old” random — how every program today selects songs — works accurately, mathematically, canonically random, and that’s the problem. Yes, the songs and images are in random order, and, yes, as a user that’s what I asked for, but that isn’t what’s right or what’s best. Each successive time the program chooses a song to play it remains adamantly ignorant of what songs it has already played and what songs it has not yet played. The algorithm might play one song several times before it plays every song, or it might never select a song to be played. That’s what random means, but that’s not what I want.
What I want my player to do is to play every song in my collection exactly once, in random order. I want to hear all of my songs play once before any of them repeat. To hear my music “in random order” doesn’t mean to play my music randomly, but rather it means to play all of my music in random order.
In practice, it’s slightly more trouble to track which songs have played so as not to repeat them, but good programmers love a challenge like that. There are dozens of ways to implement such an algorithm, so solving it isn’t the problem. The difficulty is that nobody is even aware there’s an issue. Nobody has ever looked at the simple, obvious, well-known task of “random play” and thought, “Maybe it’s not so simple, obvious, and well-known.”
It’s a subtle change, but once you listen to music, or look at pictures, shown correctly, in random order, rather than just played randomly, you will like that program better, even if you can’t identify precisely why. Too many entrepreneurs waste time looking for one spectacular breakthrough hoping it will make their product great. But great products are more often just a sufficient quantity of small, subtle improvements. What’s spectacular is the attention paid to detail and the effort invested in little things.
For example, when you eat dinner at a really good restaurant you never notice the service, yet your food, wine, and butter always seem to be beautifully present in the correct quantities at the correct time. To make this happen, the wait staff invests significant attention in what each diner is doing and what is on their table. The food itself is impeccable because the chef rejected good lettuce, good lamb, and good oil in favor of exceptional lettuce, lamb, and oil. That’s what good design is like: it refuses to call attention to itself, but it pays extra attention to the user. Each difference in itself is tiny, but the sum total of hundreds of minuscule choices elevates your experience from adequate to sublime.
Our typical software isn’t assessed at its proper magnitude. It isn’t fully thought out. It isn’t complete. Its creators don’t think hard enough about what it actually does, and what it’s supposed to do, and it fails to delight us. Not playing my songs in the correct order isn’t a hanging matter, but because iTunes doesn’t, I don’t love it, don’t recommend it, am constantly looking for a better alternative, and I have a growing distrust of the Apple Computer Company.
The real opportunities in software innovation come from looking at well-known problems as though they were brand new. They come from looking at problems of a known magnitude and re-imagining them as though they were actually much larger, and then giving them commensurate attention.
Old-school managers see such an investment of attention as wasted time and money, but that viewpoint died with the steam engine. Delighting users with your product turns them into loyal partners, actively selling your virtues to their friends and colleagues. In the digital world, user loyalty is the only road to success, but there’s significant delay in the system. The short-term thinking that was so effective in the industrial age simply can’t recognize the slow growth and death of loyalty. In the post-industrial age, compensation for your efforts is rarely as proximate as it was in the age of factories, when making a widget for less meant an immediately higher margin on that particular widget. In today’s Web world, the rewards for paying attention may be delayed or detached, but they are far larger.