WEBVTT

00:00:02.760 --> 00:00:05.180
So, why do you need prototyping?

00:00:05.180 --> 00:00:08.520
Well, we never get things right first time.

00:00:08.520 --> 00:00:11.360
It's about getting things *better* when they're not perfect

00:00:11.360 --> 00:00:14.520
and also *starting in a good place*.

00:00:18.160 --> 00:00:23.570
Maybe if I'm going to make a wall for a
house,

00:00:23.570 --> 00:00:26.860
I know exactly how big the wall should be.

00:00:26.860 --> 00:00:29.520
I can work out how many bricks I need.

00:00:29.520 --> 00:00:31.880
I can make it exactly the right size.

00:00:31.880 --> 00:00:34.118
So, I can get it right first time.
It's important to.

00:00:34.120 --> 00:00:37.040
I don't want to knock the wall down and retry it several times.

00:00:37.620 --> 00:00:42.760
However, there I have a very clear idea
of what I'm actually creating.

00:00:43.300 --> 00:00:47.060
With people involved, when you're designing something for people,

00:00:47.060 --> 00:00:50.360
people are not quite as predictable as brick walls.

00:00:50.820 --> 00:00:53.800
So, we *don't* get things right first time.

00:00:56.300 --> 00:01:00.660
So, there's a sort of classic cycle – you design something, you prototype it,

00:01:01.100 --> 00:01:03.714
and that prototyping might be,

00:01:03.920 --> 00:01:09.240
you might sort of get a pad of paper out and start to sketch your design

00:01:09.240 --> 00:01:12.780
of what your interface is going to be like and talk through it with somebody.

00:01:12.780 --> 00:01:14.896
That might be your prototype.

00:01:14.896 --> 00:01:20.280
It might be making something out of blue foam or out of cardboard.

00:01:21.340 --> 00:01:25.880
Or it might be actually creating something on a device

00:01:25.880 --> 00:01:31.540
that isn't the final system but is a "make-do" version, something that will help people understand.

00:01:31.540 --> 00:01:34.680
But, anyway, you make some sort of prototype. You give it to real users.

00:01:34.680 --> 00:01:38.320
You talk to the real users who are likely to be using that about it.

00:01:38.320 --> 00:01:41.680
You evaluate that prototype. You find out what's wrong. You redesign it.

00:01:41.680 --> 00:01:44.140
You fix the bugs. You fix the problems.

00:01:44.312 --> 00:01:47.060
You mend the prototype, or you make a different prototype.

00:01:47.060 --> 00:01:52.020
Perhaps you make a better prototype, a higher-fidelity prototype – one that's closer to the real thing.

00:01:52.020 --> 00:01:55.760
You test it again, evaluate it with people, round and round and round.

00:01:55.760 --> 00:01:58.700
Eventually, you decide it's good enough.

00:01:58.700 --> 00:02:03.340
"Good enough" probably doesn't mean "perfect", because we're not going to get things perfect, ever.

00:02:03.340 --> 00:02:06.140
But "good enough" – and then you decide you're going to ship it.

00:02:06.520 --> 00:02:08.528
That's the story.

00:02:10.840 --> 00:02:14.700
In certain cases in web interfaces, you might actually release

00:02:14.700 --> 00:02:17.920
what in the past might have been thought of as "a prototype"

00:02:18.460 --> 00:02:22.840
because you know you can fix it, and there might not be an end point to this.

00:02:22.840 --> 00:02:26.820
So, you might in delivering something – and this is true of any product, actually –

00:02:26.820 --> 00:02:29.920
when you've "finished" it, you haven't really finished,

00:02:29.920 --> 00:02:33.180
because you'll see other problems with it, and you might update it

00:02:33.180 --> 00:02:35.240
and create new versions and create updates.

00:02:35.240 --> 00:02:38.120
So, in some sense, this process never stops.

00:02:40.400 --> 00:02:45.500
In one way, it's easy to get so caught up
with this *iteration*

00:02:45.500 --> 00:02:47.360
– that is an essential thing –

00:02:47.360 --> 00:02:51.180
that you can forget about actually
designing it well in the first place.

00:02:51.180 --> 00:02:56.080
Now, that seems like a silly thing
to say, but it is easy to do that.

00:02:56.080 --> 00:02:58.687
You know you're going to iterate anyhow.

00:02:58.687 --> 00:03:02.480
So, you try something – and there are sometimes good reasons for doing this –

00:03:02.480 --> 00:03:05.300
you might have *so little* understanding of a domain

00:03:05.300 --> 00:03:07.960
that you try something out to start with.

00:03:07.960 --> 00:03:12.220
However, then what you're doing is creating a *technology probe*.

00:03:12.220 --> 00:03:14.540
You're doing something in order to find out.

00:03:15.200 --> 00:03:19.900
Of course, what's easy then to think about is to treat that as if it was your first prototype –

00:03:19.900 --> 00:03:22.380
to try and make it better and better and better.

00:03:23.200 --> 00:03:29.100
The trouble is – if it didn't start good, it might not end up very good at the end, despite iteration.

00:03:29.100 --> 00:03:32.800
And the reason for that is a phenomenon that's called *local maxima*.

00:03:33.200 --> 00:03:38.180
So, what I've got here is a picture. You can imagine this is a sort of terrain somewhere.

00:03:38.180 --> 00:03:42.700
And one way to get to somewhere high if you're dumped in the middle of a mountainous place –

00:03:42.700 --> 00:03:45.940
if you just keep walking uphill, you'll end up somewhere high.

00:03:45.940 --> 00:03:49.760
And, actually, you can do the opposite as well. If you're stuck in the mountains and you want to get down,

00:03:49.760 --> 00:03:52.452
the obvious thing is to walk downhill.

00:03:52.540 --> 00:03:56.480
And sometimes that works, and 
sometimes you get stuck in a gully somewhere.

00:03:56.480 --> 00:03:59.320
So, imagine we're starting at
this position over on the left.

00:03:59.320 --> 00:04:02.680
You start to walk uphill and you walk uphill and you walk uphill.

00:04:02.920 --> 00:04:08.380
And, eventually, you get onto the top of that little knoll there. It wasn't very high.

00:04:08.380 --> 00:04:12.840
Now, of course, if you'd started on the right of this picture, near the *big* mountain,

00:04:12.840 --> 00:04:16.927
and you go uphill and you go uphill and you go uphill and you get uphill,

00:04:16.927 --> 00:04:19.440
you eventually end up at the top of the big mountain.

00:04:19.440 --> 00:04:22.100
Now, that's true of mountains – that's fairly obvious.

00:04:22.100 --> 00:04:25.280
It's also true of user interfaces.

00:04:25.600 --> 00:04:29.080
*If you start off* with a really dreadful design

00:04:29.080 --> 00:04:31.887
and you fix the obvious errors,

00:04:31.887 --> 00:04:35.680
*then you end up* with something that's probably still pretty dreadful.

00:04:36.000 --> 00:04:40.740
If you start off with something that's in the right area to start with, you do better.

00:04:40.740 --> 00:04:44.840
So, the example I've put on the slide is the Malverns.

00:04:44.840 --> 00:04:47.560
The Malverns are a set of hills in the middle of the UK

00:04:47.560 --> 00:04:50.935
– somewhere to the southwest of Birmingham.

00:04:50.940 --> 00:04:55.080
And the highest point in these hills is about 900 feet.

00:04:55.751 --> 00:05:00.100
But there's nothing higher than that for miles and miles and miles and miles.

00:05:00.100 --> 00:05:03.260
So, it is the highest point, but it's not *the* highest point,

00:05:03.260 --> 00:05:05.580
certainly in Britain, let alone the world.

00:05:05.580 --> 00:05:10.320
If you want to go really high, you want to go to Switzerland and climb up the Matterhorn

00:05:10.320 --> 00:05:12.940
or to Tibet

00:05:12.940 --> 00:05:17.680
and go up Mount Everest, up in the Himalayas,

00:05:17.680 --> 00:05:21.478
you'll start somewhere better, right? 
So, if you start

00:05:21.478 --> 00:05:26.031
– or on the island I live on, on Tiree, the highest point is 120 meters.

00:05:26.031 --> 00:05:30.228
So, if you start on Tiree and keep on walking upwards, you don't get very high.

00:05:30.228 --> 00:05:32.761
You need to start in the *right* sort of area,

00:05:32.761 --> 00:05:37.200
and similarly with a user interface, you need to start with the *right* kind of system.

00:05:37.200 --> 00:05:39.927
So, there are two things you need for an iterative process.

00:05:39.927 --> 00:05:42.440
You need a *very good starting point*.

00:05:42.440 --> 00:05:47.620
It doesn't have to be the best interface to start with, but it has to be in the right area.

00:05:47.620 --> 00:05:51.332
It has to be something that when you improve it, it will get really good.

00:05:51.737 --> 00:05:55.890
And also – and this is sort of obvious but actually is easy to get wrong –

00:05:55.890 --> 00:05:58.686
you need to understand *what's wrong*.

00:05:58.686 --> 00:06:04.620
So, when you evaluate something, you really need to understand the problem.

00:06:04.620 --> 00:06:09.200
Otherwise, what you do is you just try something to "fix the obvious problem"

00:06:09.200 --> 00:06:12.020
and end up maybe not even fixing the problem

00:06:12.020 --> 00:06:16.080
but certainly potentially breaking other things as well, making it worse.

00:06:16.080 --> 00:06:21.500
So, just like if you're trying to climb mountains,

00:06:21.500 --> 00:06:23.640
you need to start off in a good area.

00:06:23.640 --> 00:06:26.840
Start off in the Himalayas, not on Tiree.

00:06:27.667 --> 00:06:31.140
You also need to know which direction is up.

00:06:31.140 --> 00:06:34.900
If you just walk in random directions, you
won't end up in a very high place.

00:06:34.900 --> 00:06:37.020
If you keep walking uphill, you will.

00:06:37.020 --> 00:06:41.520
So, you need to *understand where to start*

00:06:41.520 --> 00:06:44.424
and *understand which way is up*.

00:06:44.660 --> 00:06:50.120
For prototyping your user interface, you need a *really rich understanding* of *your users*,

00:06:50.120 --> 00:06:54.660
of the nature of *design*, of the nature of the *technology* you're using,

00:06:54.660 --> 00:06:57.800
in order to start in a good place.

00:06:59.060 --> 00:07:03.660
Then, when you evaluate things with people,

00:07:03.660 --> 00:07:08.612
you need to try and *really deeply* understand what's going on with them

00:07:08.612 --> 00:07:11.080
in order to actually *make things better*

00:07:11.080 --> 00:07:14.528
and possibly even to get to a point where you stand back and think:

00:07:14.528 --> 00:07:19.391
"Actually, all these little changes I'm making are not making

00:07:19.391 --> 00:07:22.728
really a sufficient difference at all. 
I'm going around in circles."

00:07:22.728 --> 00:07:27.000
Sometimes, you have to stand right back and make a *radical change* to your design.

00:07:27.000 --> 00:07:30.220
That's a bit like I'm climbing up a mountain

00:07:30.220 --> 00:07:33.080
and I've suddenly realized that I've got stuck up a little peak.

00:07:33.080 --> 00:07:35.880
And I look out over there, and there's a bigger place.

00:07:35.880 --> 00:07:39.545
And I might have to go downhill and start again somewhere else.

00:07:39.545 --> 00:07:44.564
So, iteration is absolutely crucial. 
You won't get things right first time.

00:07:44.564 --> 00:07:47.170
You *alway*s need to iterate.

00:07:47.170 --> 00:07:50.910
So, prototyping – all sorts of prototypes, from paper prototypes

00:07:50.910 --> 00:07:54.715
to really running code – is very, very important.

00:07:54.715 --> 00:08:00.302
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*.

