// Internet Duct Tape

Getting to Simple – Engineers Have No Idea How Normal Human Beings Interact With Their Environments

One of the best known programming axioms is KISS — Keep It Simple, Stupid [wiki].

It is something I have incredible difficulty with.

kiss - keep it simple stupid - simplicity - gene simmons

This past weekend was filled with reminders of KISS. There were multiple comments on the complexity of my blog design. I was putting together a GUI for a WordPress.com tool even though I usually exclusively program for the command line. I finished off the weekend by reading Cory Doctorow’s “Eastern Standard Tribes” where the main character is a user experience guru with nothing but distain for engineers and computer scientists and their inability to grasp how non-geeks think:

“I spent the next couple hours running an impromptu focus group, watching the kids and their bombshell nannies play with it. By the time that Marta touched my hand with her long cool fingers and told me it was time for her to get the kids home for their nap, I had twenty-five toy ideas, about eight different ways to use the stuff for clothing fasteners, and a couple of miscellaneous utility uses, like a portable crib.

“So I ran it down for my pal that afternoon over the phone, and he commed his boss and I ended up eating Thanksgiving dinner at his boss’s house in Westchester.”

“Weren’t you worried he’d rip off your ideas and not pay you anything for them?” Szandor’s spellbound by the story, unconsciously unrolling and re-rolling an Ace bandage.

“Didn’t even cross my mind. Of course, he tried to do just that, but it wasn’t any good-they were engineers; they had no idea how normal human beings interact with their environments. The stuff wasn’t self-revealing-they added a million cool features and a manual an inch thick. After prototyping for six months, they called me in and offered me a two-percent royalty on any products I designed for them.”

It would be funny if it wasn’t so painfully true. I’d happily add features until I ended up with a monstrosity like this. My subconscious is a hamster in a wheel inside my head. He’s wearing black-rimmed coke-bottle lenses and a pocket protector. This is what he’s thinking:

I like coding.

Adding features means more coding.

Tweaking existing code that already works fine means more coding.

If I let something be finished then that means I’ll have to stop coding.

I like coding.

usb kiss hamster wheel keyboard geek

My favorite post I’ve ever read on the subject of simplicity is Joel Spolsky’s critique of the Windows Vista start menu: “each additional choice makes complete sense until you find yourself explaining to your uncle that he has to choose between 15 different ways to turn off a laptop.”

But even he notes that the answer to simplicity isn’t having less features. Having a sparse highly usable design is a feature in itself. The key is to have robust features without confronting the user with multiple choices. Simplicity is actually quite complex — which makes sense because otherwise Apple and 37signals would be the rules, not the exceptions.

John Maeda’s Laws of Simplicity provides some rough guidelines for Getting to Simple:

  1. Reduce - The simplest way to achieve simplicity is through thoughtful reduction.
  2. Organize - Organization makes a system of many appear fewer.
  3. Time - Savings in time feel like simplicity.
  4. Learn - Knowledge makes everything simpler.
  5. Differences - Simplicity and complexity need each other.
  6. Context - What lies in the periphery of simplicity is definitely not peripheral.
  7. Emotion - More emotions are better than less.
  8. Trust - In simplicity we trust.
  9. Failure - Some things can never be made simple.
  10. The One – Simplicity is about subtracting the obvious, and adding the meaningful.

Part of the reason why I blog is because it forces me to work on soft skills like this. It’s a subject I need to learn more about.

Related Posts

26 Responses

Subscribe to comments with RSS.

  1. mpb said, on February 20, 2007 at 4:10 am

    We really need more really simple engineers (or simply real engineers) for things like appropriate technology or community involvement, i.e., toilets and garbage in Alaska and other rural communities. Unfortunately, credit in professional circles is given for expensive projects which are frequently complicated. No credit is given for living with the results of these megabucks but useless (even damaging and dangerous) projects.

    Yes, getting to simple is complex (and not just for rocket scientists) but do-able, efficient, effective, economical, ecological, ethical, and personally rewarding. (Hire more analytical anthropologists.)

  2. timethief said, on February 20, 2007 at 5:44 am

    I really appreciated this article. Sometimes I’m overwhelmed by the doodads and details and “stuff” on blogsites. On top of that being a non-techy makes the articles a challenge to understand.

    IMO simplicity is more difficult to achieve for those who have lots of knowledge. Conversely it’s easier to achieve if you don’t.

    As a rural person I’m often surprised when newly arrived urbanites see the simple life we live and exclaim, “that’s so cool, that’s how you do it” when witnessing the tasks we do on the acreage and the tools we’ve made to do them with.

  3. Mr Angry said, on February 20, 2007 at 6:03 am

    This is what I spend a lot of my time as a BA dealing with. It isn’t just that engineers love complexity and creating things for their own sake (which is understandable) – it’s also that users often don’t articulate their needs very well. That and they’re easily sold on shiny things so when a developer says “look, I can build you this shiny thing” they say “oooh, yah. Build me the shiny thing.”

  4. Stefano said, on February 20, 2007 at 2:36 pm

    I’m sincere: sometimes I made that kind of horrors too.

    Most of the times, the way I design is putting all the features on, and then cut cut cut the unneeded while trying a lot of interaction varyings until I have some simple and elegant UI design.

    Saldy, horrors come when I have not much time to clean out everything. When the management pushes, or when there is no more time til shipment, I have to send out what’s on: usually a bad design.

  5. w0rmwood said, on February 21, 2007 at 12:57 am

    he he he he

    as you note, this is sort of what our latest comic is about

    http://beatsentropy.com/2007/02/20/passive-depressive-39/

  6. thekenji said, on February 21, 2007 at 12:57 am

    Nice post ET!

    My 2c:

    In visual design, one important fact that I’ve come to realize and refer to frequently is that human senses tend to be logarithmic in nature.

    Unless you’re talking about extremely simple things (like a menu with just three options), flatness often creates confusion. I think human eyes can navigate hierarchies better, and especially if it approaches a steep logarithmic curve; for example, having one or two options stand out strongly, but the rest is more or less flattened.

    I expect human thought to be similar as well. Conceptually when you arrange data in a similar fashion it helps.

    I’ve seen some people fall into the trap where they think that simplicity is good so they pare down everything, but it’s still very flat in arrangement. And it doesn’t work.

  7. mpb said, on February 21, 2007 at 5:16 am

    I think there is an important difference between simple and simplistic and complex and complicated (and chaos and Chaos and CHAOS, but another topic), however someone else may know of the references to eloquent explanations.

    Thus the flatness may be simplistic and the simple way is usually the hardest to come up with.

  8. jgavan101 said, on February 21, 2007 at 5:59 am

    We need simple engineers. I agree.

    As an engineer, I believe that we need a simple boss also who wont make our life complicated by asking so many things to add to an existing product, presentation, or target.

    In that way, we wont get back at the end users by making their life miserable by the information and features overload.

  9. Brent said, on February 21, 2007 at 10:21 am

    I feel the best way to adhere to KISS is to not look at what I see as simple, but try to understand what others will see as simple.

    I hope that makes sense.

  10. feartheseeds said, on February 21, 2007 at 8:05 pm

    A good place to start with the KISS thing may be your choice of URL’s for your posts… like, maybe this:
    blah://engtech.wordpress.com/2007/02/20/getting-to-simple-engineers-have-no-idea-how-normal-human-beings-interact-with-their-environments/

    could have been shortened, for better effect and a clearer understanding, to this:
    blah://engtech.wordpress.com/2007/02/20/engineers-hate-normal-human-beings/

  11. Jive said, on February 21, 2007 at 8:13 pm

    This is a pretty tired stereotype no? Sure anyone who has worked in high tech for long enough has met the socially clueless uber geek that builds things for the sake of building them or the marketing twit that can’t make up his or her mind how to be competitive so just insists that the product have every feature possible and be ready to ship tomorrow.

    However, for all those people I have encountered I have met engineers that loathe clunky interfaces and strive for simple solutions to problems if for no other reason than experience has taught them that a complex interface and too much freedom leads to customers causing ever more complex problems.

    Any successful high tech company these days knows that the wider public has very little understanding of technology and has no desire to learn. They want it to work, now. Wanting something to work swiftly and effeciently is something the stereotypical engineer and technophobe have in common after all.

  12. engtech said, on February 21, 2007 at 11:13 pm

    @mpb: I know what your talking about. Some of the most interesting project s I’ve heard of are the ones in 3rd world countries where cost/simplicity are the constraints — not bleeding edge technology. Things like “one laptop per child”, those inflatable bags that fill with cement to become standalone structures, etc.

    @Mr. Angry: I think the underlying issue is the “love of the shiny”. “Is it really necessary?” is a question that *someone* should always ask.

    @Stefano: That’s what I liked about the 37signals example I linked to — simplicity in design isn’t a natural occurance but a concious effort that comes at the end of things and from thinking about how someone / a stranger will interact with it.

    Maybe that’s what the “secret” is for the people who consistently are able to successful pull this off — being able to put themselves in the mind of an outsider and see what they are working on with fresh eyes again.

  13. engtech said, on February 21, 2007 at 11:30 pm

    @kenji:

    I’ve noticed that even when writing blog posts. Having more than three paragraphs in a row without something to break the flatness (heading, list, blockquote, picture) is very tedious to read. Never thought of it from the idea of flatness versus hierarchy. I’ve just always known that hierarchy was a good thing in displaying information.

    @feartheseeds:

    Good point :)

    I let WordPress create the post slug based on the title instead of doing it by hand, but doing it by hand would help me have more userfriendly URLs.

    @Jive:

    It’s a tired stereotype, but one that I find I fit into, so hence the discussion. I’m the uber geek building little shrines of code, creating more work for myself because I can’t leave things alone.

    Perhaps one of the tenents of simplicity is knowing when to stop when it comes to adding new things, and always striving for more reduction once you’ve stopped.

  14. engtech said, on February 22, 2007 at 2:38 am

    Interesting post by Tantek on the subject of cognitive load of user interfaces:

    http://tantek.com/log/2007/02.html#d19t1813

    The language is too complex by far, but some good thoughts:

    * Minimize the number of text fields in your interfaces down to the absolute minimum necessary.
    * Minimize the number of click/keystrokes/gestures necessary to accomplish actions in your interface.
    * Make your interface as responsive as possible – minimize the latency of each and every action a user might take in your interface.

  15. A.J. Valliant said, on February 22, 2007 at 7:46 am

    Interesting post. Even worse is bad coders who spent excess time adding broken features, at the expense of core functionality.

    ps.
    Cory Doctorow can’t write for shit.

  16. engtech said, on February 22, 2007 at 12:07 pm

    @AJ:

    You sound like you’re talking about a certain scheduling app :)

    I enjoy the ideas in Cory’s writing… but yeah, not the best books I’ve ever read. EST was particularly all over the place.

  17. feartheseeds said, on February 22, 2007 at 3:45 pm

    My grandfather’s an engineer. He was project manager for the Churchill Dam, Roger’s Pass out west and all of that craziness they call a highway in Montreal. When it comes down to actually having something ‘in-hand’ I’d rather an engineer than an architect or designer had the final decision as to what was in my parachute pack. At least then, if the chute didn’t open, I’d know I had the honour of being a Beta Tester.

  18. ilker said, on February 24, 2007 at 2:40 am

    Well.. like Albert Einstein once said “Make everything as simple as possible, but not simpler”

    I think there should always be a balance.

  19. [...] Getting to Simple – Engineers Have No Idea How Normal Human Beings Interact With Their Environments Thoughts on simplicity and how it is anything but simple to create. [...]

  20. [...] complicated solutions and hacks. I find detaching myself from something I’m familiar with and looking at it with the mindset of a new user one of the hardest tasks. That’s why I love the idea behind sites like Hallway Testing and [...]

  21. [...] Engineers have no idea how normal people interact with their environments [...]

  22. [...] what these options mean when you’re installing an application. I know that designing “simple” user interfaces is hard, but you are doing something wrong when your users have to go to [...]

  23. [...] behind how things work and finding ways to get them to work for me.¬† But I find it can be very hard to try to explain how things work to other people. That’s why I’m such a big fan of the “in plain english” series of [...]

  24. [...] rid of it. Features in your app that aren’t going to land the customer? They’re only adding complexity and tying up your developers. Cut unnecessary time sinks and distractions out of your life [...]

  25. [...] Getting to Simple РEngineers Have No Idea How Normal Human Beings Interact With Their Environments [...]

  26. [...] often said that one of the qualities of the hardcore geeky is that we have needs that sane normal people don’t have. That’s why there are so many web startups focused on RSS when most people don’t have a [...]


Comments are closed.

Follow

Get every new post delivered to your Inbox.

Join 287 other followers

%d bloggers like this: