7.1: Introduction: Implementation Support

I'm going to talk about building things. Now, actually, I've brought my toolkit with me here. And I've got my drill in it and pliers. But as you've probably guessed, I'm actually not going to talk about this sort of building, so sadly I'll put my toolkit away, pop it under the desk and come back to that later, perhaps have some fun later this evening. What I'm going to talk about is building interfaces, of course. Now, sometimes that
does involve physically putting things together, whether it's a TV control like this or the computer that's on my desk or a phone. So, there are physical aspects involved in building things. But I'm going to talk not so much about those, more about the software – in fact, entirely about the software. So, for a TV remote control, that would be more what's going to appear on the television screen as you press the buttons, but probably thinking more about, say, the content on a smartphone or on a desktop PC or a laptop – that kind of thing.
Now, there is an argument and some people would argue that you think about the design and let the programmer worry about putting it all together. There's a certain arrogance about that. It's not totally uncommon, however. It's equally as bad as the programmer who thinks, "Oh, I don't need to think about HCI. I'll just code things."
So, regarding both arguments, if you're designing an experience for somebody, you have to have some understanding of what's going on under the hood. But similarly, when you're building it, you build it in a different way when you're trying to build software for the user interface. I'll look at two sorts of layering here. One is about abstraction. Again, I'll just pull these up here. I've got two different phones here: one of them is an Android phone; one's an iPhone. They're actually quite similar in one way.

They've got screens that are the same sort of size, but I actually happen to design things slightly different because the way the number of buttons they've got is slightly different. They've both got a big button in the middle, but the Android has some secret little buttons that appear at the sides as well, and they've got a variety of buttons around the edge. There are also different rules for how things work. So, on the iPhone, if I'm designing for the web and I have a div, I can just say, "You're a scrolling div."
If I'm designing for the Android and I have a web page and it's got a div that's a scrolling div, the Android doesn't scroll it. There are differences in terms of the details. And that's just between two smartphones. If I'm dealing with different computers or I'm designing for smartphone and computers, there are various levels between the actual hardware, what's going on, and me as a programmer creating a user experience. There are also layers in terms of the development tools you use.

The underlying Windows system or operating system gives you certain capabilities. Normally, you don't just use those. You use some sort of toolkit – not a toolkit like this one, but a software toolkit that packages up things like buttons to help you. Also, there are general frameworks and styles of working that help you to think about designing. And we'll talk about each of those three layers of development tools in turn.
And this issue about abstraction is going to recur as we talk
Web design
Be the first to comment