Monday, March 21, 2005

What good software does for it's users

or Choice Sucks

I was reading Paul Graham's latest weblog [1] on how to make a lot of money writing software. Like any greedy person, I'm trying to come up with some software that's going to make me rich. Like Paul, I had been slowly coming to the realisation that developers didn't like purchasing software. So, I decided to take Paul's advice and try to think of what non-developers would want out of their computers.

This is harder than it looks. I don't really know many non-developers. All of my friends are software people. They tend to be married to other people in the IT industry. It is very hard to figure out what people want when you don't really have any experience. :) As I sat in bed mulling over the problem, my brain started to make associations. I realised that there was a connection between useful software, "The Long Tail" [2], and psychology.

I remember reading that people consider choice to be hard and stressful [3]. Everyone is very afraid of making the wrong choice. This is why we spend so long trying to figure out what breakfast cereal we want to buy. Check it out - next time you are in the grocery store, see how long you spend deciding. Now, think of how long we spend making more important decisions. How stressed we get worrying if we made the correct one or not.

The Long Tail [2] says that web businesses like Amazon and NetFlix do really well from being able to stock more titles than their bricks and mortar competitors. That they receive a substantial number of sales from the titles that they can stock but their non-on-line competitors cannot.

My epiphany was this. That the stress we feel over making a decision leads to the popularity of the long tail. Follow me in this. In order to better drive customers to other items, Amazon implements a review system. They then start to track purchases and make recommendations to their customers. This pushes people down into the tail. Why though? It works because people are afraid of doing the search themselves and making the wrong choice. They only really know that they want to purchase a book. They don't really know what they are looking for. So, Amazon's recommendations are as good a place to start as any, better than browsing the store themselves.

So, people willingly let the computer do the filtering for them. Does it always work? Nope. Is it a less stressful purchase? Definitely. The customer knows that someone out there, not completely unlike themselves, has also enjoyed this book. This means that it is probably not that bad.

This led me to my key realisation. Good software removes choice from the user. That doesn't mean that it doesn't make it possible for the user to see all the nitty gritty detail, just that it hides it as much as possible. Apple realised this, look at the interface on the iPod Shuffle. Mac software is all about hiding complexity.

So, truly useful software should help the user make decisions. It should remove grunt work from the user. For example, in the UK there is a web page that allows people to compare electricity providers. You enter your monthly usage and address, and out pops the cheapest provider for you. That helps the user make a decision. It means that the user no longer has to stress about which supplier to use, they just ask the system.

Good software should make (if possible) as many decisions for the user as possible. If the user ever answers a question, the software should never ask it again, and use it to answer other questions for itself. Software should be more about the assumptions it makes for the user. In most cases, the user won't care about the assumptions that are included, they will be the correct ones. Amazon's one click shopping is a good example of this. The user only has to setup the system once, after that all that they have to do is indicate that they are buying that item there.

This is a fine line. I'm not talking about autonomous agents that go off and do it all for you. Helpful software like Clippy is just plain annoying. Predictive text messaging isn't. It may sound like I'm saying that people are sheep. I'm not! I'm saying that the goal of a computer system should be to remove complexity from the problem. We shouldn't be adding decisions to a problem, we should be removing them.

References:

  1. The Long Tail
  2. http://www.wired.com/wired/archive/12.10/tail.html (original article) http://longtail.typepad.com/the_long_tail/ (web log)
  3. The Paradox Of Choice: Why More Is Less
  4. http://www.amazon.com/exec/obidos/tg/detail/-/0060005696/qid=1111411407/sr=8-1/ref=pd_csp_1/002-2296419-5280060?v=glance&s=books&n=507846 http://www.newyorker.com/critics/books/?040301crbo_books http://science.slashdot.org/article.pl?sid=04/03/29/1214225&tid=99&tid=14 http://www.healthpromoting.com/Articles/articles/major.htm http://www.lowellgeneral.org/features/health/foryourhealth/AIHspring99/AIHstress.htm
  5. Paul Graham essay on startups
  6. http://www.paulgraham.com/start.html

4 comments:

Unknown said...

I think you rightly say there's a fine balance between treating users like morons by keeping any difficulty out of their way on the one hand yet keeping needless complexity from them on the other. But I think it goes further than that into what exactly defines a 'difficult' or 'complex' process.

For instance one of the reasons I prefer KDE over Gnome is that Gnome went down the hide complexity route. Fair enough, but it seems to have become an overriding obsession for them to the point where appear to default to user idiocy and as a result policy appears (to me) to have become almost fascist in decrying anyone who suggests a heretical attempt to put an option where it can be clearly seen. KDE has been critiscised for being overly complex and cluttered (and rightly so in some cases) but the defaults are generally sensible and the ability to change and customise to your hearts content is clearly available. Do GUI's constitute a 'complex' process? Maybe so.

Opinions will differ as to what defines complex and whether it's a good thing to hide the complexity to some arbitrary level but surely that's the point. Everybody's tolerance for difficulty will be different - I find Gnome's attitude nannying and patronising whereas KDE doesn't irk me in the same way as it makes it easy for me to tinker and customise without purist HIG guilt ;-). But in the case of (say) setting up a user account it would be great to have that process simplified. Or even the case you mention of ordering a book on Amazon - leading a way through the process is clearly a good thing.

An adaptive solution with some kind of feedback mechanism which 'teaches' the software how much complexity to hide so as to mould to its users profile would be great. What form such software would take is, of course, the fortune making question.

Jason Pollock said...

Sweet, the first comment. :)

Reading over this again, and remembering other rants on the subject (ESR's CUPS rant).

It's about not dodging responsability when you're a developer. I've done this myself. When confronted with a situation where you aren't sure how the software should work (timer values/etc), we always put a configuration option in. Not good. We avoid responsability, putting it onto the user - the one person we don't want to get it wrong!

If there is any conceivable way to figure out what the software should be doing (by probing, etc), the software should probably do it. :)

I think ESR says it best. :) Here I was thinking I'd come up with something new and interesting, and it seems that I was just remembering something that I'd read almost exactly a year ago!

Back to GNOME vs KDE. Personally, I find KDE easier to use than gnome. I also find it nearly impossible to find the configuration option that I am looking for in either of them. There are so many of them, and they're sprinkled all over the place. GNOME has exactly the same problems! Changing option locations between versions, and the various OSs doing their own configuration setups doesn't help much. :)

As I get older, I find that I am less and less interested in spending hours getting my computer to work. I want to plug it in, turn it on and start doing useful stuff. I really don't want to spend an hour figuring out how to configure something by reading several FAQs, HOWTOs and mailing list posts. :)

Amanda said...

I would pay money for a word processing package that is actually designed with the needs of someone writing a long thesis or book length work. I don't want to have to choose between complex formatting options and I don't want to keep losing half my footnotes to some stupid bug in Word. My main focus of activity should be on crafting the writing not messing around with fonts and styles etc.

Amanda (Sands)

Jason Pollock said...

I know this is probably going to sound incredibly bad (as in Word Sucks! ... it doesn't)... but here goes.

My friends writing large thesis or books don't use word at all. They have found that latex works really well. It has a pretty basic formatting language allowing you to just write the text in your favourite editor.

Me, I just use emacs outline-mode, and when I'm happy with the text, I paste it into word for final formatting. That fits in really well with my "one big text file" personal information management idea. :) Outline mode is probably not appropriate for you, since it doesn't really do anything other than nested headers. :)

Alternatively, you could look up Adobe Framemaker... They've even got a trial version. It, however, is expensive at US$799.

Latex WYSIWYM editor:
http://www.lyx.org/
Why use Latex:
http://www-h.eng.cam.ac.uk/help/tpl/textprocessing/latex_advocacy.html
emacs outline mode:
http://www.emacswiki.org/cgi-bin/wiki/OutlineMode
Framemaker:
http://www.adobe.com/products/tryadobe/main.jsp#product=22

Jason