yield thought

it's not as hard as you think

Is That All?

with 50 comments

Note: This post isn’t about the iPad. It’s about me and you, our bosses and most of all it’s about normal people. It just starts with a story about the iPad, because that’s the way it happened.

What did Yahoo’s bosses say when they saw Google’s homepage for the first time? Why are 37signals so militant about saying ‘no’ to extra features? What did the Apple engineers think when Jobs told then to make a phone with one button?

Last weekend I spent twenty minutes playing with an iPad on a stand in an airport. I opened Safari and read xkcd, Penny Arcade and Hacker News. I flicked through the pictures of some sunkissed holiday by the sea. I played a couple of not very good games. I wrote a short document. I watched a video. At the end of twenty minutes I wandered away feeling slightly uneasy, thinking:

Is that all?
— Me

As a programmer, I’m comforted by screens full of settings. When playing a new game the first thing I do is find the options and tweak the hell out of it before I’ve even played a single level. The iPad left me feeling somehow uncomfortable, as if I was missing some core element. Had I really seen all it could do?

That was when I saw it: in a handful of minutes on completely unfamiliar hardware and software (no, I don’t have an iPhone), with an unusual multitouch interface I’d just ‘done’ things without having to think about them, without having to learn anything, without having to struggle. The gap between wanting to do something and doing it was so short that, for twenty minutes, it ceased to exist.

Don’t worry, we’re almost at the end of the iPad bit.

I was asking myself what the iPad could do. The iPad wasn’t doing anything – it was letting me do what I wanted. It had been designed by people who loved me more than their product (as Gandhi says you should). Was that all? Yes, because playing around for twenty minutes was all I wanted to do.

The user interface should be like a soundtrack barely noticed by the user
— Steve Capps

Everything we create should aspire to this, should leave us – as programmers – wondering if that’s all and if we shouldn’t perhaps add a bit more. Scott Berkun (a genius and a craftsman) said all of this more than ten years ago and I’ve known about it for at least half that time, but it hasn’t really changed the way I write software because it’s too hard to just know when something’s simple enough.

The feeling of ‘is that all?’, however, the uncomfortable suspicion that I can’t really ship a product with just one button, that all the important companies have login screens – this feeling proves we are on the right track. It is an excellent guide. Our world is full of self-indulgent interfaces clamoring for our attention. Why should we keep making this worse? We have to be brutal with our interfaces. Strip everything out. Consider every single piece of text as being a waste of the user’s time reading it, every control an unnecessary, unpleasant intrusion.

The user’s attention is a limited resource and we should heavily optimize to minimize our impact upon it. We must always, always remember that nobody wants to use our software – they want to finish their work and go play outside.

It’s hard. It’s risky. It’s easy to defend a new dialog as full of buttons as the old one. Our colleagues and managers live in bizarro world, believing our software has value independent of the things it helps people to achieve. They don’t want the new startup screen to have just 10% of the controls of the old one.

That’s not progress! Progress means more! Deleting things isn’t doing work! It’s anti-work!
— A stupid person near you (or, possibly, you yourself)

I’ve felt this, even if I haven’t said it. There’s this massive tension between writing something to humbly serve people you’ve never met and may never meet, and writing something your boss and colleagues will approve of. Yet we have to try, because the way software has been written for the last twenty years is making people unhappy.

Our calling, our duty, is to write software that will make our colleagues, bosses and competitors scoff and say “Is that all?” while making the lives and work of real people simpler, easier and less stressful. Our customers will love us for it – we just need the courage cut and hack and tear down everything that’s not necessary to get their work done and to put it out there for them to use.

Postscript: What am I doing about this? My startup, CodeChart, is making profiling very simple and very beautiful; the old generation of tools are so ridiculously overcomplicated that most people never use them. It’s in closed beta at the moment, but have a look at our getting started guide to see how it works and feel free to sign up for the beta if you’ve got some .NET code you want to look at. I know, I know, other languages – including my beloved python – are coming later!

Note: Yield Thought has moved to http://yieldthought.com – check there for the latest posts!

Written by coderoom

June 6, 2010 at 8:46 pm

Posted in Programming

Tagged with , , ,

50 Responses

Subscribe to comments with RSS.

  1. A very well written and compiled article. Simple, lucid, hitting the topic quite well.

    Thanks and Regards,
    Hardik Shah

    Hardik Shah [Guru]

    June 7, 2010 at 10:04 am

  2. Not all people in the world are programmers.

    progr

    June 7, 2010 at 11:01 am

    • Heh, an almost tautological statement. This blog is about programming and yes, one of the post’s main points is that not all people in the world are programmers, indeed, they don’t care about programs, just about getting things done.

      coderoom

      June 7, 2010 at 11:06 am

  3. Marrrrrketing!

    Vadim P

    June 7, 2010 at 11:19 am

  4. Very well written, and gets to the core of the argument very quickly. People like us go into dialogue screens and configure things, and wrestle with complicated UIs, because that is what we are used to and have done for the last 20 years.

    Hopefully, the people who are growing up now will get a world where the UI isn’t the objective, it’s a practically invisible tool that they barely notice while getting their work done. And, indeed, then going to play outside.

    Now THAT is progress.

    fross

    June 7, 2010 at 11:59 am

    • Thanks fross; now we just have to show them how that world could look…!

      coderoom

      June 7, 2010 at 2:25 pm

  5. I think the problem is that no body really cares for the extra complicated issues. They want easy… and when I say easy it shouldn’t add complexity first, to achieved easy.

    They just want. They aren’t interested in innovation, or superiority, they just want it to work and they just want to get the job done.

    That’s it…

    No extra programming necessary, not on behalf of the consumer anyways… It just works, or it pisses them off… and they leave…

    James

    June 7, 2010 at 12:11 pm

  6. You should read anything by Kathy Sierra or watch one of her talks.

    She’s has also been saying this for years and expresses it brilliantly.

    Colm

    June 7, 2010 at 1:09 pm

    • I love Kathy Sierra, she’s awesome and it’s such a loss that she stopped blogging. Anyone who hasn’t read her should do so.

      coderoom

      June 7, 2010 at 2:35 pm

  7. I’ll add my props to you as well. Great article. Actually a must read for the UX community as well as programmers, although hopfully they already think this way.

    David Updike

    June 7, 2010 at 1:43 pm

  8. Lately I’ve read an article about a guy that had to do a lot of multitasking and considered buying himself second iPad.

    Simple interfaces are limited and that’s just a fact. A lot of people are OK with limited stuff, because they use things in limited way. That’s fine deal for them, that’s fine deal for Apple.

    And – I can’t see why people think the things like zooming out/in with multitouch are so natural that you don’t have to learnt them before using. They are just more natural, but if I gave device with such capabilities to my mother I would have to show here how to zoom out/in just like I had to show here how to do that in other applications.

    Dawid Ciężarkiewicz

    June 7, 2010 at 2:13 pm

    • Yes, it’s one of the hard problems. An interface that is so cut-down that you’re left searching for a particular feature is also not ‘simple’ enough; in that case it might be time to start adding again.

      As you say, simple isn’t necessarily the same as intuitive, although both are obviously good things. There’s a lot to be said for visual simplicity, simply to cut down the visual and attentional noise we’re bombarded with every day.

      coderoom

      June 7, 2010 at 2:24 pm

    • “Lately I’ve read an article about a guy that had to do a lot of multitasking and considered buying himself second iPad.”

      You say that like it’s a failing of the device. I bet if Steve Jobs heard that he’d think : “I just made a device that was so limited and yet so compelling that, the limitation compelled people to spend money on *two* of them to make up the difference!”

      anon

      July 7, 2010 at 10:18 pm

  9. I am quite a layman in the industry. But I really want to know, who does UIs, software programmer or just random graphic designers?

    MimuC

    June 7, 2010 at 2:16 pm

    • In my experience, it’s mostly the programmer. With web apps this is different; a programmer will usually pick the controls but a graphic designer will ‘skin’ it with their own layout, fonts and so on. I suspect every company has their own way of dealing with the relationship.

      coderoom

      June 7, 2010 at 2:19 pm

  10. Really?

    Worst Article Evar.

    Jeff little from Troy Ohio

    June 7, 2010 at 2:17 pm

    • Yeah, this is the problem with frontpaging reddit and not just proggit… 🙂

      coderoom

      June 7, 2010 at 2:21 pm

  11. Is that all? I got the “Is that all” feeling with the ipad when it failed to be significantly different than the iPod Touch. Not saying it’s a bad product, just not very awe inspiring. I think I was looking for a product to replace my laptop, which it simply can’t do.

    Josh

    June 7, 2010 at 2:59 pm

  12. Great rant! My only concern is with the extreme notion of applying KISS (Keep It Simple, Stupid) to _EVERYTHING_…

    What I do subscribe to (wholeheartedly!) is that the entire organization should be focused on _What The Customer Needs_.

    When you write code, design UI, build a product – whatever! – you should devote all your efforts to satisfying the customer’s needs (and potentially a few wants as well), while minimizing interferences such as red tape, “corporate culture”, office politics, stakeholder management, shareholder management, and so forth.

    So yeah, I’m all for simplicity, ease of use, clarity, etc., but let’s not forget that sometimes, some users do need to dive deeper and explore further – simplicity should not always come at the cost of functionality. And functionality is definitely hampered on the iPad, at least to a certain degree (e.g. multi-tasking, Flash, etc.)

    Anyway, those are my $0.02…

    Johnny T

    June 7, 2010 at 3:01 pm

  13. This article says pretty much everything anyone needs to know about UX. I’ve seen too many sites ruined by an obsession with features.

    Will

    June 7, 2010 at 4:43 pm

  14. Apple has long been about removing stuff to make it simpler, faster, and better. There’s a great and relevant story about Bill Atkinson’s work on the original Macintosh here. http://www.folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt

    Jerry Kindall

    June 7, 2010 at 5:20 pm

  15. There are a couple of quotes I remember (but don’t remember who originally said them):

    – If you have a setting, you have failed the user (by making them think about how your software should work)

    – The best feature is the kind you can’t even see (Posterous’s signup feature is a great example, I think)

    Amber

    June 7, 2010 at 5:40 pm

    • The first one reminds me of one of Joel’s rants about making the user make choices. He brought up the old ‘what kind of index would you like to build for your help file’ dialog. Probably rehashed it with reference to the Vista shutdown options, too…

      coderoom

      June 7, 2010 at 5:42 pm

  16. When I first used an iPad I was more confronted with figuring out how to accomplish things and completely failing. One of the websites I tried had the wrong character encoding. This is easy enough to fix in basically any browser, but I certainly could not figure out how to do so with mobile safari. I also wanted a background and found a good photo on flickr, but could not find a way to either set it as the background (I never really understood why IE has this option) or even saving it at all.

    としあき

    June 7, 2010 at 7:09 pm

  17. I loved ur writhing and blog
    thanks 🙂

    ghala2010

    June 7, 2010 at 7:28 pm

  18. Kind of reminds me of Adam’s Curse, by W.B. Yeats
    First Stanza:

    We sat together at one summer’s end,
    That beautiful mild woman, your close friend,
    And you and I, and talked of poetry.
    I said, “A line will take us hours maybe;
    Yet if it does not seem a moment’s thought,
    Our stitching and unstitching has been naught.
    Better go down upon your marrow-bones
    And scrub a kitchen pavement, or break stones
    Like an old pauper, in all kinds of weather;
    For to articulate sweet sounds together
    Is to work harder than all these, and yet
    Be thought an idler by the noisy set
    Of bankers, schoolmasters, and clergymen
    The martyrs call the world.”

    Jonathan

    June 7, 2010 at 8:02 pm

    • I see what you mean – thanks for pointing me towards to poem!

      coderoom

      June 8, 2010 at 4:04 pm

  19. “Unless simplicity is defined as a priority it will not be there”. (Edward de Bono, Simplicity.)

    alexa

    June 7, 2010 at 9:06 pm

  20. This is brilliant marketing and will probably work. I think I’ll jump on the bandwagon and start selling bits of wood.

    My bits of wood (TM) are engineered to be so useless that you never have to use them, they stay completely out of your way and don’t interrupt your interactive flow with the rest of the universe. Best of all they’re only $1,999.99 each! Another $100 and your bit of wood won’t even be delivered so you don’t have to carry it around with you.

    stevej

    June 7, 2010 at 10:03 pm

  21. Nice article. It reminds me that you can’t do what everyone else is doing and expect to do better than everyone else.

    joel8360

    June 7, 2010 at 11:51 pm

  22. […] Is That All? Note: This post isn’t about the iPad. It’s about me and you, our bosses and most of all it’s about […] […]

  23. […] Read More… […]

  24. What you’re really getting down to is good design, but programmers attract _bad design_. I am learning C++ and I think the language is _HORRIBLY DESIGNED_ for _programmers_.

    Not too much thought has gone into EASE OF USE and OFFLOADING a bunch of assumed stuff and designing for EASE OF USE.

    It’s kind of cool C++ exists if you want to _specify_ something fairly “low level” for speed but you get an appreciation for _how much work_ your computer is _actually doing_ when you look at it.

    The point of good design is to _offload_ tasks from the person to the design of the software or widget you are building.

    But there is a LIMIT to simplicity, the problem is the know how and hardware power isn’t really there yet to abstract the machine into something human usable without a huge performance penalty.

    I think part of the reason programs are so badly designed is because _LANGUAEGS_ in which they are made are _GOD FUCKING AWFUL_.

    Right now I feel _all_ programming languages are in the dark ages. Not enough work has been done to build tools and design them properly.

    We have a lot of tools but they are all stone age tools, it would be like trying to make a Core 2 duo with a flint axe.

    That is the state of compilers and programming languages today IMHO. There is not enough intelligence in the tools themselves.

    It’s part of the reason I want to get into programming to make the next generations jobs _much much_ easier.

    GoodDesign

    June 8, 2010 at 1:23 am

    • Well, with C++ it wasn’t badly designed. It just wasn’t designed with simplicity in mind. It was designed to allow you absolute control over the computer, while being easier to use than assembly code. What you are talking about is having the computer basically do everything for us. While having the computer help us is a good thing, I think having the computer do too much is a very bad thing. We, as programmers/designers, need control. USERS shouldn’t have to think. We should.

      Chris Carpenter

      June 8, 2010 at 4:56 pm

  25. It is not all! It is just begin 🙂

    Take it easy!

    June 8, 2010 at 5:42 am

  26. […] Is That All? « yield thought "Everything we create should aspire to this, should leave us – as programmers – wondering if that’s all and if we shouldn’t perhaps add a bit more. Scott Berkun (a genius and a craftsman) said all of this more than ten years ago and I’ve known about it for at least half that time, but it hasn’t really changed the way I write software because it’s too hard to just know when something’s simple enough." (tags: nudge user-experience design interface software-development helpfulness) […]

  27. […] mai departe, la articolul asta. Un developer povesteste cum s-a jucat cu un iPad 20 minute: s-a dat pe niste situri, a vazut […]

  28. A lot of the conflict here stems from the odd attitude taken by most commercial and/or Windows software companies: That the application (product, whatnot) should provide a set of prepared-in-advance functionality—and that is all there is.

    In contrast, many Unix/Linux/Gnu/FSS/OSS/ developers have had the attitude that while an application should come with prepared-in-advance functionality, it should also give the user the ability to build his own functionality. (Through macro-languages, the ability to add “hooks” of various kinds, possibly a plug-in mechanism, etc; and, notably, the ability to work together with other applictions, e.g. through pipelines.)

    Take the super-editor Vim (or, if you prefer, Emacs): If I wanted to add a keyboard short-cut to find every word containing the letter “b” and rot13-encode those words, that would be easy. It is not a functionality that is likely to be wanted, certainly not one that would make it into the main application, but that does not matter—I can add it myself.

    (Yes, doing so will require a deeper knowledge of software than the average granny has; however, the line between those who are satisfied with products out of the box and those who are not tends to be close to the line between those who a smidgeon of programming knowledge and those who do not.)

    In this way, an application can simultaneously ship with a comparatively simple UI, which is not overloaded to the point of breaking—yet, still keep more demanding users sastisfied.

    michaeleriksson

    June 8, 2010 at 9:16 am

  29. nice dude keep writing

    pooja0908

    June 8, 2010 at 9:31 am

  30. The problem is, this also sounds a lot like taking away choice. I want the interface to be simple, but I also want to be able to change it to fit my personal needs. It’s like michaeleriksson was talking about. I think it’s very very good to have a simple interface for your average user. However, you seem to agree with the quote in one of the comments above me: If you have a setting, you have failed the user (by making them think about how your software should work). I disagree. I think you should have settings, so that, if a user wants to, they can customize the software. However, I think the default interface and the interface for adding the customizations should both be very simple and very intuitive to use.

    However, for me, personalization is more important. Therefore, while the interfaces may not be simple or intuitive many times, I use Linux. I want control over my own computer.

    Chris Carpenter

    June 8, 2010 at 5:03 pm

    • In a very late clarification: On the contrary, I have the philosophy that if there is anything (within reasonable limits) that an even semi-typical user may want to toggle on/off, change the value of, whatnot, then there should be at least a config-file entry for this.

      Here the important distinction is that no new functionality is added, no major modifications occur, no drastic interface changes take place.

      To take an example: It should be obvious that any and all browsers allow to disable the sending of a referrer through a simple setting somewhere. Unfortunately, it is not. To make matters worse, Firefox does allow this through about:config, but if you Google the problem, you will likely first find the recommendation to install a plugin (!) just to disable the referrer—even if a simple setting is present.

      As a contrasting example, the NoScript plugin is something that is sufficiently advanced and different that it makes a legitimate third-party plugin, but should probably not be included in the typical browser. (However, in contrast, a “dumb” JavaScript-on/off setting is a must.)

      michaeleriksson

      July 6, 2010 at 7:35 pm

  31. […] proportion of software at work today is horribly over-engineered for its task. And I’m not talking about the interfaces, about having too many controls or options for the users. These are, indeed, terrible sins but they […]

  32. I think the trick is to work in a concept called User-Implemented Complexity. The initial interface should be very simple and clean. However, if the user wants to make it more complicated for him- or herself, then they should have the ability to do that.

    Phil W.

    June 23, 2010 at 2:52 pm

  33. […] really need to read the rest of the article: Is that all Posted in […]

  34. This reminds me of an ASP dotcom devoted to the medical industry several years ago… They latched into a busy news type UI, when it was applications their customers wanted. They ditched the simple menu UI that allowed you to quickly move between apps and went to a busy My Yahoo type interface. While I am certain it isn’t the only reason, but within the next year they were out of business.

    You really have to assess (involving the customer!) what your end purpose is and go as simple as possible to achieve that.

    Great post – keep them coming!

    Paul Boos

    June 23, 2010 at 8:34 pm

  35. I love it.

    Reducing is one of the hardest things. If you think about it, we as developers are hoarders; some of the words we use to describe ourselves are words that bring images of more, more, more!!! Developers develop, coders’ code, writing software by writing (typing). We don’t develop by rmdir /q/s, we don’t code by hitting the delete and backspace key, and we don’t write software by un-typing.

    When you said anti-work it struck a chord. That is what we need to do when we write software. I believe in the “is that all” so much so that some colleagues and I actively pursue this from a code perspective. We use phases such as “adding features by removing code”, “else-less programming with an eye towards if-less development” to name a few. We have found this to be completely counter culture to what all the “smart” people believe. I have even registered the domain anticoding.com to eventually write about it.
    Great post!

    Carlos Sandoval

    June 30, 2010 at 6:27 pm


Leave a reply to Paul Boos Cancel reply