Hold on a tick

Delays and the user experience

By Julian Browne on July 18, 2007. Filed Under development, requirements

This week I've been re-reading John Maeda's book The Laws of Simplicity. It's a handy size to read on the train and contains a number of useful mnemonics for adding a sense of elegance to your design. The section that I often quote to others relates to how to deal with delays, as they may be perceived by users and customers. The themes are important enough that I feel the need to restate my own version of them as they apply to software architecture.

Let's say you are building a web shop. Potential customers can stick widgets in a basket and, when they are happy with their order, follow a fulfilment process. Part of processing the basket contents is to make sure that the selected widgets are in stock, and that the combination of widgets doesn't invalidate any special offer rules. Because some actions in the process will necessarily entail communications with laggardly heritage systems, that can only process data sequentially, you will have to deal with the delay this will add to the processing time. In the worst case, bored customers might go elsewhere, but even if not, their experience in those critical minutes will create an impression of your company that needs to be a good one, so this is not an issue to be taken lightly.

From an architecture perspective there are four things you can do to keep the suits (and the customers) happy. Ideally, you want to apply all four to varying and appropriate degrees, but for individual reasons one or more may not be possible.

Life is full of periods spent waiting for things (it's 11:30am now, and by my reckoning I've already waited for nearly an hour for two trains and a coffee). The majority of people will be fine with a few seconds here and there while you service their needs, what nobody likes though is hanging around when it feels unnecessary or when they have no idea what's going on.