February 23, 2010
Seriously. When I look back on the designs I produced inside GNOME, it makes me cringe sometimes. It wasn’t that I learned something after leaving GNOME (in fact, my design quality improved immediately), and it wasn’t that I wasn’t trying to do the best I could (lord knows I was)…. its that I worked inside design contexts that let design flourish, that encouraged me to design in ways that were more productive, more sweeping, and more details at the same time.
I hope I can impart a piece of what makes a good design context; so you can offer this context to the designers you work with, to help them do work that is dramatically better than they could otherwise offer. You win, they win. And its a hell of a lot more fun.
I want to use this response as a touchstone. I have great respect for Benjamin and the viewpoint he represents here. It is a very widespread viewpoint, and very reasonable. Unfortunately, I believe it also epresents the sticking point in allowing major design to occur for GNOME.
Articulating why a design is good is substantially harder than coming up with a good design. With experience people develop skills that go beyond what they can reason out.
True skill is subconscious. Explanations of the results of true skill are invented on the spot for the purposes of communication, they cannot reflect the real ‘reasoning’ that occurred because its not open to conscious reflection.
Lets talk about learning to sail.
- Learning: (conscious) While you are learning, you are using your high level brain to “linguistically” work out what to do. You are thinking, “ok, first, I figure out where the wind is coming from, then I turn into it until my sail starts to luff, when that happens I will quickly let out on the sheet a little bit….“.
- Mastery: (subconscious) Then you get good at sailing. You don’t think about it. You start solving problems you don’t even know you are solving, solving problems that you never even consciously knew where problems to solve. Associative learning is amazing! You start reading winds from a distance using patterns on the water, and react before the wind even hits, you sheet in tighter as you build up speed subconsciously taking advantage of apparent wind (a concept you may never have heard of). You could easily not know you are doing this.
- Teaching: (conscious) Here’s the crazy thing: most people forget all the conscious linguistic thinking they knew while they were learning. From a conscious level, they halfway forget how to sail. When they go to teach sailing, they have to re-learn HOW it is they sail. They have to observe themselves, and learn to sequence linguistic explanations for lower level understanding and reaction…. but the real thinking permanently stays below the level of the conscious. You can adapt it by more repetition with conscious intervention, but during actual use the only thing you can really do is observe it, and explain it.
Humans are heavily biased toward believing that our conscious linguistic reasoning is what drives everything, but most of our actual stimulus-response actions that comprise existence are at a lower level (including in so-called cognitive tasks like programming…. that’s why you have to learn to program by doing, because your conscious executor is simply way way way too stupid to handle this depth of problem by reasoning it out, you have to offload 95% of the processing off to your subconscious before you can actually program).
Design is no different. When you program, you make many many decisions that are never challenged by anyone. Other programmers don’t challenge them, because they would generally make the same decisions (or a similar equivalent one). Non-programmers don’t challenge them because they can’t get close enough to the symbolic language to even start making that kind of commentary. Have you ever programmed with a less-competent programmer over your shoulder (who didn’t know they were less competent)? I have. Their questions, and comments, and “guidance” is unbelievably disruptive: exactly because they constantly challenge stupid things that are just not worth challenging because it doesn’t matter, there are much more important issues, and they’re wrong 95% of the time anyway (and in the 5% of the cases they were right, it wasn’t worth the cognitive load of having to consciously reflect and on why you made a subconscious decision and INVENT a reason to explain a decision that wasn’t conscious to begin with).
That’s right: When you offer linguistic explanations for why you did something that you are highly skilled at you are INVENTING an explanation at the time you are explaining. You are not playing back an existing record of reasoning. Sometimes, you get it right. Often, you actually don’t invent the right explanation, but come up with one that’s plausible enough to convince the person you are talking to. But the key is, you can never offer the real explanation, because the real explanation is: my highly trained neural associations produced this automatically as the correct response. You simply can never think about most of your skilled decisions in that conscious symbolic linguistic way.
You only think about the tip of the iceberg symbolically. I am NOT saying we shouldn’t argue, and use high-level reasoning. We should! That is how we learn, that is how we learn the very edge, that is how we handle new problems, beyond what our subconscious has been trained at. We must! But as much as possible, its more productive to use that limited symbolic linguistic reasoning toward the problems that are truly on the edge of what you can handle, not forcing them to constantly regroup and explain decisions that they didn’t make in the first place.
Now here’s the problem: when you constantly drag designers through this mud, of symbolic rationalization (which, as I said, mostly amounts to BS anyway) you can actually limit them from doing their best work. They will stay in symbolic reasoning mode, you are forcing them to stay there because they will have to explain every single thought.
You can’t get very far explaining every decision or action. When I stopped doing design for GNOME, the quality of my designs increased dramatically. It was like night or day.This is crazy! I was trying my hardest on GNOME, I was probably working harder than I’ve ever worked on something since. But my hacker interactions were limiting me from using my skills, I was limited to what I could reason out. And the truth is, nobody can reason out much. The real power of our brains is what lies beneath.
I knew I could never work in that context again, because the worst thing you can do to a skilled person, is force them to work in a context where their own personal output is well bellow what their skill is capable of.
Designers operating on a symbolic reasoning level are useless designers.
They will produce very mediocre designs, even if they are very extraordinary designers. This is no different than any other profession. Its just, most professions aren’t asked to account for ad-hoc invented explanations by people lacking the same subconscious constructs as them.
Designers constantly question eachother to defend ideas. Its a good thing! And in my interactions with programmers who are good at design, I welcome really long arguments. I’m also open to a pretty large amount explanation for the purpose of teaching design: helping somebody else develop unconscious skill. But I cannot explain every design decision I do (and their are hundreds of tiny ones even in the simplest mockup!!! the space of design is massive… why did I use a sideways grid, why did I put the button in the corner, etc etc). I cannot even explain most of them. I hope that I could explain as many design decisions as possible, I’m trying to get better at this, just as most designers are. Learning to explain these things is exactly the same process as learning how to teach something.
I think it’s ok that I can’t, because I don’t think there’s a human alternative. We will always be able to operate beyond what we can rationally back-justify.
Designers, who to trust.
Now, Benjamin raises another good point: I am basically saying you need to have absolute trust in designers if you don’t know how to design. I am actually saying that. No joke. Its crazy. I don’t have an answer. Maybe you should ask yourself why you’re talking to a designer in the first place? Is it just as a source of ideas, or do you think a person of skill might have better judgement than you too, even if they can’t convince you? Could you convince non-programmers of the rightness of millions of tiny programming choices if they weren’t susceptible to being “snowed”??? (that is, and designers try this sometimes too, if you swamp people with enough scary words/terms they feel inadequate and shut up / sort of slightly trust you because you seem to know some things).
But the thing is, Otte is right: there are lots of bad designers. Part of this, is because the only designers willing to work long-term inside a context where they can’t do good, skilled, subconscious design are….. bad designers! There’s a terrible self-fulfilling cycle here. Good designers will just leave (or never come) and find a place where they can “be the best they can be”.
So I don’t have an answer. Its a very very very hard problem, and a very genuine one. The best answer I can offer is: “you’ll get to work with better designers if once you find one you suspect is good, you give him at least one chance to be the best they can be…. make it clear from the outset that you will give her/him charge over the UI…. and see what they can do….” I bet even if you don’t find the best designer, unless they are really twisted, they’ll do something pretty cool.
As to the icons being gone, yeesh, I have no idea. I just looked, you’re right. But I don’t have an opinion. But guess what? I don’t think its a decision that matters. Is that crazy? It seems huge, right? Its not. A big part of being a good designer is understanding what details matter, and what details don’t…. most decisions are quite honestly tossups (on the flip side, some stupid looking details matter like nails, they change the user’s cognitive stance profoundly, and thus change the model they adopt to interpret/use the program). To pretend otherwise is to perform a breadth-first-search where you spend all your time in rabbit holes and never get anywhere deep. Well, it might be right, it might be wrong…. I don’t think it matters. I don’t think it’ll change any fundamentals of interaction with GNOME. Some details matter, some don’t.
Peace out homies.