Simplicity
Wednesday, December 13, 2006 5:20:47 PM
I disagree with everything said. Some take the argument that we need more complex things as progress is made. Progress always involves more ideas, more tools, more freedom and hence more complexity. Some agree or disagree that a simple interface means simple software. In short, there seems to be a fuss over if features!=simple holds true. I say that's bunk and frankly a big waste of my time and yours. But since people are talking about it, I'll spell it out.
Simple is an adjective. This means it applies to a certain subject matter that the author is referencing. So simplicity can apply to interface just as much as software. It depends on who is talking and what they are referencing. If you think Google is simple because it only has a textbox, then you'd be right. But if you then argue that it's not simple because the software behind it might be complex (not sure if that's true, just using it as an example), then you're changing the topic. Again, this is a lawyer-like tactic. Google has two sides. There's the interface and there's the behind-the-scenes software. They seem related and they are, but if a user says Google is simple, they most likely mean how easy it is to gets search results. By then saying that the software (a related topic, but not *the* actual topic) is not simple, then you're being somewhat underhanded.
I've also heard similar comments like Google search may be simple, but ever try to get a map? You have to click something else just to get the option. Well, that argument is another kind of lawyer-like tactic. It changes the topic, or worse. In this case, it actually uses complexity to argue against simplicity. Google must have a reason for putting other tools out of the way. Probably because most of their business comes from search. So you want the least amount of things to detract from your main business. In other words, you take complexity out of the way. Just because those things may be a little more difficult to find doesn't make the primary tool any less simple. Otherwise, you're not talking about the primary tool and are using side-topics to make an argument which doesn't really apply.
Simplicity is one of those generic terms that you can apply to anything. To be fair, one person's simplicity may not translate to another person's experiences. So one person's most used feature may not be the same as another and Joel does correctly mention this. My point is unrelated to that though. My point is that people will qualify simple to different things, so even without lawyer-like tactics, it's difficult to keep talking about the original topic. People will talk about what interests them. (edit: I should qualify this paragraph. What Joel talks about are features. What I'm talking about is the flip-side of that. I'm talking about past experiences. I say past user experiences dictate simplicity, not the features themselves although there is a definite connection there.)
So when someone says a certain piece of software is simple, do they mean the interface, how easy it is to access advanced features, or maybe how well the software was designed? These are all valid topics. They should all be discussed, but separately. Right now, everyone seems to think simplicity is a global adjective that applies to everything collectively at once.
Let's shift gears a bit. I remember the first time I used Firefox. There were only a few buttons, an address bar and a search box. That's it. I felt robbed. No way I thought this would be enough to do what I want. I felt like I'd be missing out on something. Guess what? It was refreshing. I didn't need those extra things. At least they didn't need to be in my face all the time. And just like Google, those other things were tucked away.
That, more than anything, is perhaps what we should talk about. Simplicity should be about how well the primary interface works. When a product ships, no one cares about the software design. No one cares how many lines of code it took. No one cares how simple these hidden details are. I mean, they're hidden! It doesn't get simpler than that. There's nothing simpler than stuff you don't see.
And it's not about the number of features. It's about how well you can use the primary functionality. The stuff that is used 90% of the time. That's what counts. It's like saying a car is complicated, but the interface is extremely simple. They also have automatic transmission even if it means some loss of control and feedback.
We can now talk if simplicity of the primary interface is all it's cracked up to be. Any talk about the code or any other out of the way features is irrelevant. That's why they're out of the way. Because they're more advanced and less used.
If something is easy to use, then that's what matters. But just because YOU may not find it easy doesn't make it less simple. For example, I've seen many Koreans who like gadgets. I don't want to get into generalities, but if you've ever seen anything that comes out of that region of the world, there's a lot that is over the top and they seem to like that. Heck, there's a huge market for it in America too. But just because you don't understand Korean or it's alien to you doesn't mean it isn't simple. I don't know if Don Norman understands Korean or not, but if Don Norman thinks a toaster is complicated, maybe he should look at the fact that he's in a Korean store before coming to that conclusion. Many stores often sell trinkets and gadgets because it grabs the attention no matter the country. But environment does play a role.
For example, I'm developing a new tool that no one has seen before. So simplicity is a must. But if I were to write a new programming language, I don't think I'd make one for beginners. Both Project V and a new programming language would be for advanced users, yet one is geared toward simplicity and the other is not. Why? It's about environment. If you gear something toward programmers, then you don't need to start at the beginning. You can expect that many programmers have had prior use of programming languages and could recognise similarities with a new language and their past experience. As in the toaster example, I'm guessing this is nothing new to Koreans. I sorta want to see that toaster now actually.
Going back to Project V, I want this tool to be able to build very advanced and concurrent software. So what gives? Why am I trying to make it so simple that a non-programmer could use it? Because there is nothing like it in existence. At least, nothing that a majority of people would have seen for this specific purpose. In essence, everyone will be a beginner. Once everyone has used a certain tool for a while, then you can start to expose more advanced interfaces to the masses.
In short, simplicity applies to the primary interface and to the primary audience of that tool. If you are not using the primary functionality or are not part of the primary audience, then you lose the right to debate simplicity. However, you can (and should) comment if simplicity applies to YOUR experiences. Just make sure you realise that you're changing the topic.

