
what you are concentrating on doing. As we grow
in skill, SA becomes easier, but demanding tasks (es-
pecially emergencies) mean we have to focus on what
we are trying to do — and then we probably lose sight
of all the other stuff. Often losing SA does not mat-
ter, but if (when driving a car) a child runs into the
road, it is really critical we see them. If we are drunk,
our SA shrinks, and our awareness of the shrinking
SA shrinks (our confidence grows despite us becom-
ing less able), so we may not be aware of that child.
That’s why drunk driving is illegal — it undermines
both SA and our awareness of SA.
In programming, a large part of what should be in
our SA is the needs of users. Ironically, the nicer the
code we write, and the prouder we are of it, the less
likely we are to be taking account of what users need.
I once wrote a complex program that needed to
display three sorts of numbers. Writing the code, it
was natural for me to choose red, green, and blue col-
ors to do this, since the program already used RGB
(red, green, blue) color codes. To highlight the num-
bers, then, I put the colored numbers each on a dif-
ferent colored background. So I put R on a G back-
ground, G on a B background, and B on an R back-
ground. Of course I’d avoided the silly mistake of
trying to show R on R, G on G, or B on B! For
foreground color f you obviously need a background
color b ‰ f . Easy. I was pleased with the result. It
worked.
I showed off my program to a friend, who asked
me why I had mixed red and blue, two awkward col-
ors that have poor contrast, particularly for red/blue
color blind people. I then suddenly realized I had cho-
sen the color mixes because I was thinking through
the lens of RGB color codes as a programmer, not as
a user interface designer aware of color contrasts and
color blindness, and so on. In my enthusiasm for RGB
tricks I had lost SA — and until my friend pointed it
out — I was unaware I had even lost my SA.
8 YOUTHFUL DESIGNERS
If the complexity of design causes failures in SA, and
hence often a loss of user-centered concerns, things
get worse when the demographics of designers and
users diverge. Inevitably, most people who design
systems are younger than older users. For instance,
a high proportion of older users are retired, and there-
fore would not be employed as designers.
It follows that most designers have not and are
not personally experiencing the problems of old age.
They are therefore less likely to be aware of older peo-
ple’s design issues (such as needing larger text), and
their SA will be biased towards issues that are salient
to them, that is younger, more healthy, more agile,
better-sighted, better hearing, less arthritic, people —
thus reducing the attention to these issues that become
a priority to older people.
9 HAPPY PATHS
Since mistakes and errors do happen, it is important
to test that our designs work correctly.
The phrase “happy paths” is a brilliant way to de-
scribe a really important problem.
When we test things, we test they work as we ex-
pect they should. We test all the things we planned
for our gadget to do, and (hopefully) it does them as
we expect. These, though, are the happy paths. What
about the “unhappy paths?” Does the gadget handle
sad and bad input sensibly?
A happy path for testing a remote control is, yes,
the
O
button works; it switches the TV on and off
as we expect.
An unhappy path question is, does the emphatic
pressing
ON ON
switch the TV on, as a user would
almost certainly expect? No, it doesn’t. And, remem-
ber, there are many more unhappy paths than just this
one to check! (A standard technique is to test code
using random user input, probably simulated, so you
don’t just check the happy things you expect to work.)
10 THE DESIGN OF DESIGN
So, the user interface might be badly designed; the
program code might be badly designed. Behind that,
the programming language itself is likely to be badly
designed.
An extreme, but widely used example, of a badly
designed language is Microsoft Excel. Almost any-
thing done in Excel is unreliable.
1
Other examples of badly designed languages are
C, C++, and JavaScript. Like Excel, these are wildly
popular (and have done enormous good), but unfortu-
nately that doesn’t stop them having traps and defects
in the ways they are designed. So the programmer
may make mistakes, but the language they are using
may add its own mistakes . . . and ensure these mis-
takes are much harder to spot.
1
If you add up a column of numbers using SUM but
mistype any number so it has two decimal points, Excel
will not point out the error, but the number will be silently
treated as zero with no warning, even if it looks like a mil-
lion 1.000.000
How to Make User Interfaces More Accessible and Easier to Use for People who Are Different from Us: Breaking the Spell of the Curse of
Knowledge
13