WEBVTT

00:00:00.000 --> 00:00:31.880
So, why do you need prototyping?
Well, we never get things right first time.
It's about getting things *better* when they're not perfect
and also *starting in a good place*.
Maybe if I'm going to make a wall for a house,
I know exactly how big the wall should be.
I can work out how many bricks I need.
I can make it exactly the right size.

00:00:31.880 --> 00:01:00.660
So, I can get it right first time. It's important to.
I don't want to knock the wall down and retry it several times.
However, there I have a very clear idea of what I'm actually creating.
With people involved, when you're designing something for people,
people are not quite as predictable as brick walls.
So, we *don't* get things right first time.
So, there's a sort of classic cycle – you design something, you prototype it,

00:01:00.660 --> 00:01:31.540
and that prototyping might be,
you might sort of get a pad of paper out and start to sketch your design
of what your interface is going to be like and talk through it with somebody.
That might be your prototype.
It might be making something out of blue foam or out of cardboard.
Or it might be actually creating something on a device
that isn't the final system but is a "make-do" version, something that will help people understand.

00:01:31.540 --> 00:02:03.340
But, anyway, you make some sort of prototype. You give it to real users.
You talk to the real users who are likely to be using that about it.
You evaluate that prototype. You find out what's wrong. You redesign it.
You fix the bugs. You fix the problems.
You mend the prototype, or you make a different prototype.
Perhaps you make a better prototype, a higher-fidelity prototype – one that's closer to the real thing.
You test it again, evaluate it with people, round and round and round.
Eventually, you decide it's good enough.
"Good enough" probably doesn't mean "perfect", because we're not going to get things perfect, ever.

00:02:03.340 --> 00:02:33.180
But "good enough" – and then you decide you're going to ship it.
That's the story.
In certain cases in web interfaces, you might actually release
what in the past might have been thought of as "a prototype"
because you know you can fix it, and there might not be an end point to this.
So, you might in delivering something – and this is true of any product, actually –
when you've "finished" it, you haven't really finished,
because you'll see other problems with it, and you might update it

00:02:33.180 --> 00:03:02.480
and create new versions and create updates.
So, in some sense, this process never stops.
In one way, it's easy to get so caught up with this *iteration*
– that is an essential thing –
that you can forget about actually designing it well in the first place.
Now, that seems like a silly thing to say, but it is easy to do that.
You know you're going to iterate anyhow.
So, you try something – and there are sometimes good reasons for doing this –

00:03:02.480 --> 00:03:32.800
you might have *so little* understanding of a domain
that you try something out to start with.
However, then what you're doing is creating a *technology probe*.
You're doing something in order to find out.
Of course, what's easy then to think about is to treat that as if it was your first prototype –
to try and make it better and better and better.
The trouble is – if it didn't start good, it might not end up very good at the end, despite iteration.
And the reason for that is a phenomenon that's called *local maxima*.

00:03:32.800 --> 00:04:02.680
So, what I've got here is a picture. You can imagine this is a sort of terrain somewhere.
And one way to get to somewhere high if you're dumped in the middle of a mountainous place –
if you just keep walking uphill, you'll end up somewhere high.
And, actually, you can do the opposite as well. If you're stuck in the mountains and you want to get down,
the obvious thing is to walk downhill.
And sometimes that works, and sometimes you get stuck in a gully somewhere.
So, imagine we're starting at this position over on the left.
You start to walk uphill and you walk uphill and you walk uphill.

00:04:02.680 --> 00:04:31.887
And, eventually, you get onto the top of that little knoll there. It wasn't very high.
Now, of course, if you'd started on the right of this picture, near the *big* mountain,
and you go uphill and you go uphill and you go uphill and you get uphill,
you eventually end up at the top of the big mountain.
Now, that's true of mountains – that's fairly obvious.
It's also true of user interfaces.
*If you start off* with a really dreadful design
and you fix the obvious errors,

00:04:31.887 --> 00:05:00.100
*then you end up* with something that's probably still pretty dreadful.
If you start off with something that's in the right area to start with, you do better.
So, the example I've put on the slide is the Malverns.
The Malverns are a set of hills in the middle of the UK
– somewhere to the southwest of Birmingham.
And the highest point in these hills is about 900 feet.
But there's nothing higher than that for miles and miles and miles and miles.

00:05:00.100 --> 00:05:30.228
So, it is the highest point, but it's not *the* highest point,
certainly in Britain, let alone the world.
If you want to go really high, you want to go to Switzerland and climb up the Matterhorn
or to Tibet
and go up Mount Everest, up in the Himalayas,
you'll start somewhere better, right? So, if you start
– or on the island I live on, on Tiree, the highest point is 120 meters.
So, if you start on Tiree and keep on walking upwards, you don't get very high.

00:05:30.228 --> 00:06:04.620
You need to start in the *right* sort of area,
and similarly with a user interface, you need to start with the *right* kind of system.
So, there are two things you need for an iterative process.
You need a *very good starting point*.
It doesn't have to be the best interface to start with, but it has to be in the right area.
It has to be something that when you improve it, it will get really good.
And also – and this is sort of obvious but actually is easy to get wrong –
you need to understand *what's wrong*.
So, when you evaluate something, you really need to understand the problem.

00:06:04.620 --> 00:06:31.140
Otherwise, what you do is you just try something to "fix the obvious problem"
and end up maybe not even fixing the problem
but certainly potentially breaking other things as well, making it worse.
So, just like if you're trying to climb mountains,
you need to start off in a good area.
Start off in the Himalayas, not on Tiree.
You also need to know which direction is up.

00:06:31.140 --> 00:07:03.660
If you just walk in random directions, you won't end up in a very high place.
If you keep walking uphill, you will.
So, you need to *understand where to start*
and *understand which way is up*.
For prototyping your user interface, you need a *really rich understanding* of *your users*,
of the nature of *design*, of the nature of the *technology* you're using,
in order to start in a good place.
Then, when you evaluate things with people,

00:07:03.660 --> 00:07:30.220
you need to try and *really deeply* understand what's going on with them
in order to actually *make things better*
and possibly even to get to a point where you stand back and think:
"Actually, all these little changes I'm making are not making
really a sufficient difference at all. I'm going around in circles."
Sometimes, you have to stand right back and make a *radical change* to your design.
That's a bit like I'm climbing up a mountain

00:07:30.220 --> 00:08:00.302
and I've suddenly realized that I've got stuck up a little peak.
And I look out over there, and there's a bigger place.
And I might have to go downhill and start again somewhere else.
So, iteration is absolutely crucial. You won't get things right first time.
You *alway*s need to iterate.
So, prototyping – all sorts of prototypes, from paper prototypes
to really running code – is very, very important.
However, *crucial to design is having a deep and thorough understanding of your users*,

00:08:00.302 --> 00:08:05.400
*a deep and thorough understanding of your technology and how you put them together*.