Home » Why is it important to focus on user needs as opposed to requests?

Why is it important to focus on user needs as opposed to requests?


Users are bad at asking for what they need and great at asking for what they want.

Anecdotal evidence from my own recent experience:

We have a department that asked for a button that would generate a PDF report about some data. A few months later they asked for the report in the form of a spreadsheet. A few months after that they asked for additional columns to be added. And most recently they asked for a full hierarchy to be shown in this report.

At first the requests seemed reasonable and were easy for our development team to keep up with. But by the end, the report had grown so unwieldy that it took days to revise each time there was a small change, and the query we had to use was so complex there was no way to reasonably render it as a spreadsheet and have it make sense.

It turns out that they didn’t need a report at all, but rather a customizable web page that allows them to adjust their queries as needed. They asked for a report because that’s what all the other departments were asking for, and that’s all they thought we could do.

Users will only ask for what’s already inside the box, but UX sometimes has to look outside the box to see if there is a better way.

Here are two examples, one online and one offline

1. Train arrivals

  • Subway passengers frustrated with waiting for trains routinely ask for more trains on the track. For metropolitan transit agencies globally, this is obviously a very expensive request.

  • Analysis of passenger needs reveals that the uncertainty around the wait is as important as the duration of the wait itself. Uncertainty means that passengers find it hard to estimate the impact on their schedule, and what tasks they can do while waiting (drink coffee, buy a newspaper, etc).

  • The analysis of needs suggests a different solution, which is not a substitute for more trains but can significantly help calm anxious passengers. Present passengers with a countdown to train arrival, to eliminate wait uncertainty:

    enter image description here

  • This article documents how significant the results are, and also points out that passengers tend to overestimate their wait times when they don’t have information. Countdown signage has now been rolled out around in transit stations around the world.

2. Displaying product selections

  • Consumers will often ask for more choices when shopping, because they believe that more choices lead to a better shopping experience.

  • It is well documented that too many choices can lead to an overwhelming decision for consumers, which can result in shopping cart abandonment or a delay in purchasing. See the paradox of choice and the magic number 7, but there is a lot of research available on this effect.

  • As a result, despite consumers’ desire for more choice, smart commerce sites actually constrain the number of choices presented to the consumer because they recognize that what customers need is less choice and not more.

  • For example, Amazon uses product grids and pagination to help avoid the feeling of overwhelming choice for customers. Here’s a product result page from Amazon which shows six (close to the magic number 7) choices per screen. Note that no matter how large I resize the browser, the number of columns presented is 3:

    enter image description here

  • Amazon uses a number of different layouts for product results, but the default layouts often deliberately reduce on-screen choices to avoid overwhelming customers.

If you’ve seen The Simpsons episode “Oh Brother, Where Art Thou,” you should remember what happened when Homer’s half-brother gave him free reign over designing a car “for the average schmuck.” The end result was expensive and looked ridiculous and didn’t truly meet the user’s needs, even though it had all the features he wanted.

enter image description here

If the company truly wanted to make a car for the average Joe, they would have taken suggestions from multiple users and weighed the benefits that the typical user would derive from them against the cost of implementing them. If you blindly do what your users want you to do, you’ll end up with a Homer.

Related Solutions

Extract file from docker image?

You can extract files from an image with the following commands: docker create $image # returns container ID docker cp $container_id:$source_path $destination_path docker rm $container_id According to the docker create documentation, this doesn't run the...

Transfer files using scp: permission denied

Your commands are trying to put the new Document to the root (/) of your machine. What you want to do is to transfer them to your home directory (since you have no permissions to write to /). If path to your home is something like /home/erez try the following:...

What’s the purpose of DH Parameters?

What exactly is the purpose of these DH Parameters? These parameters define how OpenSSL performs the Diffie-Hellman (DH) key-exchange. As you stated correctly they include a field prime p and a generator g. The purpose of the availability to customize these...

How to rsync multiple source folders

You can pass multiple source arguments. rsync -a /etc/fstab /home/user/download bkp This creates bkp/fstab and bkp/download, like the separate commands you gave. It may be desirable to preserve the source structure instead. To do this, use / as the source and...

Benefits of Structured Logging vs basic logging

There are two fundamental advances with the structured approach that can't be emulated using text logs without (sometimes extreme levels of) additional effort. Event Types When you write two events with log4net like: log.Debug("Disk quota {0} exceeded by user...

Interfaces vs Types in TypeScript

2019 Update The current answers and the official documentation are outdated. And for those new to TypeScript, the terminology used isn't clear without examples. Below is a list of up-to-date differences. 1. Objects / Functions Both can be used to describe the...

Get total as you type with added column (append) using jQuery

One issue if that the newly-added column id's are missing the id number. If you look at the id, it only shows "price-", when it should probably be "price-2-1", since the original ones are "price-1", and the original ones should probably be something like...

Determining if a file is a hard link or symbolic link?

Jim's answer explains how to test for a symlink: by using test's -L test. But testing for a "hard link" is, well, strictly speaking not what you want. Hard links work because of how Unix handles files: each file is represented by a single inode. Then a single...

How to restrict a Google search to results of a specific language?

You can do that using the advanced search options: http://www.googleguide.com/sharpening_queries.html I also found this, which might work for you: http://www.searchenginejournal.com/how-to-see-google-search-results-for-other-locations/25203/ Just wanted to add...

Random map generation

Among the many other related questions on the site, there's an often linked article for map generation: Polygonal Map Generation for Games you can glean some good strategies from that article, but it can't really be used as is. While not a tutorial, there's an...

How to prettyprint a JSON file?

The json module already implements some basic pretty printing in the dump and dumps functions, with the indent parameter that specifies how many spaces to indent by: >>> import json >>> >>> your_json = '["foo", {"bar":["baz", null,...

How can I avoid the battery charging when connected via USB?

I have an Android 4.0.3 phone without root access so can't test any of this but let me point you to /sys/class/power_supply/battery/ which gives some info/control over charging issues. In particular there is charging_enabled which gives the current state (0 not...

How to transform given dataset in python? [closed]

From your expected result, it appears that each "group" is based on contiguous id values. For this, you can use the compare-cumsum-groupby pattern, and then use agg to get the min and max values. # Sample data. df = pd.DataFrame( {'id': [1, 2, 2, 2, 2, 2, 1, 1,...

Output of the following C++ Program [closed]

It works exactly like this non-recursive translation: int func_0() { return 2; } int func_1() { return 3; } int func_2() { return func_1() + func_0(); } // Returns 3 + 2 = 5 int func_3() { return func_2() + func_1(); } // Returns 5 + 3 = 8 int func_4() { return...

Making a circle out of . (periods) [closed]

Here's the maths and even an example program in C: http://pixwiki.bafsoft.com/mags/5/articles/circle/sincos.htm (link no longer exists). And position: absolute, left and top will let you draw: http://www.w3.org/TR/CSS2/visuren.html#choose-position Any further...

Should I use a code converter (Python to C++)?

Generally it's an awful way to write code, and does not guarantee that it will be any faster. Things which are simple and fast in one language can be complex and slow in another. You're better off either learning how to write fast Python code or learning C++...

tkinter: cannot concatenate ‘str’ and ‘float’ objects

This one line is more than enough to cause the problem: text="რეგულარი >> "+2.23+ 'GEL' 2.23 is a floating-point value; 'GEL' is a string. What does it mean to add an arithmetic value and a string of letters? If you want the string label 'რეგულარი...