First Impressions

Posted Tuesday, March 1 2011 by jonathan

As an application designer I try really hard to look at the first-time experience of the people who use what I build. While it seems obvious, think about how non-trivial it is to forget something. It reminds me of a demonstration by my psych teacher in high school.

  1. She opened with “Now, I’m going to assign you a very important problem to solve for tomorrow.”
  2. On a white board she drew a simple geometric shape, a circle with a bisecting line if memory serves.
  3. Next to the circle she wrote a short phrase and repeated it verbally.
  4. She said “Your assignment is to forget this shape and these words.”

As you can imagine, everyone groaned and most everyone admitted the next day that they hadn’t forgotten what she’d written.

Forgetting what we know and dissolving our assumptions is hard work. When every design decision you make builds up your own confidence in the ease and simplicity of your solution, coming to the product fresh requires submerging your own ego. For every day you spend refining a workflow or an interface, you have more to unlearn.

I’m thinking of this because I just had an absolutely horrible experience trying to engage an open source project. I’m trying to get pylibmc installed on a Mac. pylibmc requires libmemcached. I can’t find a convenient binary of libmemcached for OSX 10.6 (and I don’t use macports, for various reasons).

So I download the libmemcached source, which uses autoconf, and try building. Unfortunately it doesn’t compile cleanly. One of the tests uses a linker flag that the mac version of cc1plus doesn’t like. So I spend 15 minutes or so poking at the Makefile, the configure file, and web searching without success.

Some day, for fun, try figuring out the correct syntax in your favorite search engine to find web pages containing the literal text -fdiagnostics-show-option.

Now I’m frustrated. I revise my searching and can’t quickly find mention of the issue in’s bug database, and their web site’s link to the mailing list is borked. The next logical thing it to post a new bug and see what happens.

libmemcached uses for project hosting. launchpad provides source hosting, bug tracking, mailing lists, etc — all of the stuff you might want for running a nice open source project. I can think of a dozen other services that provide similar services and I can’t personally recommend any one over others. They’re all useful. Here’s my experience trying to post a bug on launchpad:

  1. To post a new bug on launchpad you have to log in.
  2. Since this is the first time I’ve tried to contribute to a launchpad-hosted project I need to create an account.
  3. Launchpad helpfully informs me that they use OpenID and my launchpad account will become an OpenID identity that I can re-use elsewhere.
  4. I grumble that I have half a dozen other OpenID identities because a bunch of other sites do the same thing, and wouldn’t it be nice if I could re-use some other ID instead of registering for a new one.
  5. I enter my name, email address, desired password, and a captcha.
  6. After passing the captcha I’m informed that my chosen password doesn’t meet launchpad’s well-intentioned but onerous requirements for length and alphanumeric mix.
  7. I make up a new password on the spot, intending to save it in my browser’s autofill history and promptly forget it.
  8. launchpad kindly informs me that they’ve sent me a verification email, that I will need a code from that email to confirm my account, and would I please enter the code to continue.

Now I know that passwords and password requirements are a problem everywhere. They’re either too easy to guess, re-used across too many services, or too hard to remember, and on one has solved the problem. And I know that adding some friction to the front door of online services cuts down on irrelevant spammers hurting the signal to noise ratio within the community. But at this point I’m still waiting for that email, which they self-admittedly say could take an hour or three to arrive if my mail host is feeling reticent.

This is not the way to engage your new users.

The problem is that the people who run and their customers (the people who host projects there) spend a great deal of time there and don’t have to deal with the first-use experience any more.

I don’t remember who this was attributed to, or where I first heard it, but I have one piece of advice for every designer and developer who touches products: Your users will spend 99.9% of their time not using your product.

It’s that simple. Unless their survival depends on it, they will not spend the time to learn and navigate your unique conception of how software and device interaction can work. The work of a good product designer is to express the complete vision of the product in a way that can be understood by a first-time user. This means preserving the uniqueness of the product while meeting the expectations and pre-conceptions of the new user. Sometimes, when those expectations are for a complex and painful experience, the uniqueness is the act of simplifying and removing pain. I can think of a few recent devices and services whose uniqueness was their simplicity: Flip and Mint being great examples.

Your Thoughts?