Home » Should you always minimize cognitive load?

Should you always minimize cognitive load?


No. It is not always appropriate to minimize cognitive load.

Minimizing cognitive load is not the goal of usability, human factors, UX, or the user centered design process in general. It is about “good design”, and good design is not always the simple design.

To clarify the rationale, let’s make sure we have a definition for “cognitive load”.

In cognitive psychology, cognitive load refers to the total amount of mental effort being used in the working memory.

To put it another way: how hard is it to figure something out, or how hard is it to accomplish a task. So when is it appropriate to actually make something more difficult?

Requirements of a system are not always strictly “make it simple to use.” Many external forces and environment constraints often guide “good design” in a direction where it makes sense to make something more difficult, helping to prevent unintentional usage of either the intended or an unintended user.

Here is an example for The Design of Everyday Things, Donald Norman’s classic book, in which a door is made more difficult to use:

enter image description here

Quoted from the book:

This is good design, deliberately and carefully done. The door is to a school for handicapped children, and the school didn’t want the children to be able to get out to the street without an adult.

Continuing reading from The Design of Everyday Things:

Most things are intended to be easy to use, but aren’t. But some things are deliberately difficult to use – and ought to be.

Designing something to be difficult can protect the user. Reducing the cognitive load may produce a situation where an unintended audience (e.g., children) can too easily use the system. It can also protect the intended audience from making errors.

Guarded buttons are a simple example of making a task more difficult for the intended audience. If you take a peek inside any airplane cockpit, you’ll see plenty.

enter image description here

By making the task more difficult, the designer has reduced the chance of an operator accidentally pressing an unintended button.

User Experience is not about “easy”.

ISO 9241-2101 defines user experience as “a person’s perceptions and responses that result from the use or anticipated use of a product, system or service”. According to the ISO definition, user experience includes all the users’ emotions, beliefs, preferences, perceptions, physical and psychological responses, behaviors and accomplishments that occur before, during and after use. The ISO also list three factors that influence user experience: system, user and the context of use.

(Source: Wikipedia)

Notice that “easy” isn’t in there. “Easy” is good, “easy” is an element, but it is the overall experience (the “anticipated result”) that is the overall goal. Safety is a huge part of that.

The US Military has a Military Standard that focuses on Human Engineering (of which User Experience is related). MIL-STD-1472F, “Department of Defense Design Criteria Standard”, discusses at length how systems should be designed to promote effective work flows and safety of the user. An excerpt of the Objective of MIL-STD-1472F reads:

Military systems, equipment and facilities shall provide work environments which foster effective procedures, work patterns, and personnel safety and health, and which minimize factors which degrade human performance or increase error.

The standard also has the following requirement:

4.8 Safety. Design shall reflect applicable system and personnel safety factors, including minimizing potential human error in the operation and maintenance of the system, particularly under the conditions of alert, battle stress, or other emergency or non-routine conditions. Design of non- military-unique workplaces and equipment shall conform to OSHA standards unless military applications require more stringent limits (e.g., maximum steady-state noise in personnel-occupied areas).

In many situations, making something “easy” reduces the chance for the operator to make an error. But sometimes the action needs to be made hard in order to achieve the user experience you are looking for – protecting the operator by making it more difficult for them to commit an error.


Reducing UX friction/cognitive load is only helpful if it accomplishes some design goal. Usually, low-friction UX is desirable because it can help users accompish tasks faster, with greater efficiency/productivity, etc.

However, sometimes designers introduce deliberate cognitive load for legitimate reasons.

Here are some examples of deliberate friction in design:

enter image description here

  1. Confirmation dialog – Here, designers use a blocking modal interaction to prevent the user from continuing until she confirms a destructive action.

  2. Anti-spam – Here, the user is inconvenienced by a captcha interaction, but the design is legitimate because the company needs to avoid costly or illegal/unsavory spam.

  3. Legal consent – Here, the user is forced to type in a confirmation (or electronic signature, etc) for legal reasons so the company can show clear consent. A simple button or checkbox might be lower-friction, but the company needs a high-friction interface to ensure that the user has adequate time to pause and consider the legal language.

  4. Security or safety mechanisms – Here, the user is forced to take action in two separate places to open the hood of a car. This is a very high-friction interaction, but it is designed to ensure user intent, safety (hood doesn’t oppen by accident if car is moving) and security (hood can’t be opened from the outside by a stranger).

There are many other examples, but these interactions should illustrate why designers sometimes add cognitive load intententionally in order to accomplish a greater design goal.

There are already some good answers in this thread. As mentioned, it depends on the system and the context of use.

That being said, I would like to take another viewpoint and highlight a case where users preferred cognitive load over a simplistic design.

The Bloomberg Terminal

The Bloomberg terminal looks like this and people say it’s hideous.

enter image description here

IDEO redesigned it to make it simplistic and easy to use. However, it was not taken so well by traders who operate the terminal.

I would like to quote the following from an article published on UX Mag.

As a PortFolio.com article clearly puts it: “Bloomberg isn’t looking
to do a major overhaul of its terminals’ graphic design anytime soon.
In fact, company executives see the Bloomberg terminal’s unique
presentation as a status symbol and a selling point. ‘We have to be
religiously consistent’ to satisfy users who become attached to
terminal’s look and feel, says Bloomberg chief executive Lex Fenwick.
‘You can see a Bloomberg from a mile away.'”

Simplifying the interface of the terminal would not be accepted by
most users because, as ethnographic studies show, they take pride on
manipulating Bloomberg’s current “complex” interface. The pain
inflicted by blatant UI flaws such as black background color and
yellow and orange text is strangely transformed into the rewarding
experience of feeling and looking like a hard-core professional.

The more painful the UI is, the more satisfied these users are.

The Bloomberg Terminal interface looks terrible, but it allows traders
and other users to pretend you need to be experienced and
knowledgeable to use it.

As pointed out in the comments:

In the case of Bloomberg terminal, people who become proficient with
the Bloomberg command line interface can be extremely efficient with
it (much more efficient than a point-and-click GUI would allow).
Thomson Reuters already offers a competing product called Xtra 3000
which looks a lot like IDEO’s proposal (i.e. point-and-click
navigation, white background, etc). But the lack of a command line
interface makes it much less useful for power users.

Even though the cognitive load is high initially, traders prefer it because it allows them to become more productive with time.

You must have also seen this with some of your fellow programmers who prefer vim/emacs over an IDE. It’s initially tough to use, but you can become productive once you get familiar with it.

Design is not just the presentation layer but a whole lot about human psychology and behaviour. What seems like less cognitive load might not work for someone else.

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 'რეგულარი...