Chatting with a former student today about a program he is working on, he raised some usability issues that he was pondering.
Let me rephrase that: An 18 year old coding star was thinking about the usability of his program.
As I walked away from the conversation, I was thrilled. And very, very proud. This is one of the greatest achievements of my career so far. My students think about usability. Long after they stop being my students, they think about the way people are going to use their software, and they try to make it easier.
But in case you don’t understand why this is exciting, pause for a moment and think about the software you use on a daily basis. How many times do you get frustrated because you can’t work out how to do something you need to do? How often do you have something happen in the program that you can’t explain, or indeed undo? How many times a day do you want to throw that damned computer through a window?
These things all happen because most programmers and software designers don’t think about usability enough. They are awesome at what they do. They have incredible technical skills. But they don’t know how to think about the way people work, the way people think, and how people are actually going to use their software.
And why don’t they know this? Because nobody teaches it. We teach programming. We teach algorithms. We teach software engineering. But usability in most courses is, at best, an elective, or even just part of an elective. It’s rarely a compulsory part of any computing degree, or technical course.
I taught someone else’s software engineering course one semester, before I left academia. I taught the course using someone else’s notes, slides, textbook and curriculum. It was a semester long course called “Introduction to Software Engineering”, and I’ll give you a moment to wonder how many of those lectures might have been about usability.
How many do you think?
Given how important the subject matter is?
Given how much of our collective time is wasted dealing with software that is difficult to use, easy to break, or hard to understand?
Not a single lecture.
Not even part of a single lecture.
To be fair, usability did get a mention in the textbook. It was a 640 page textbook. It had half a page on usability.
Half. A. Page.
And we wonder why we get unusable software?
The trouble is that there’s something of a cowboy mentality about many software companies. Riding high on rapid coding cycles and tight to-market deadlines, usability gets lost in the wake of the coding jetski, zipping through the water, selling software at high speed and running right over over the innocent users. The logic goes something like this: “Usable code means code usable by people, right? And we’re people, right? And we can use our software, right? So it’s all good.”
Jokes get made about stupid users who ask dumb questions and can’t be “bothered” understanding what they’re doing. But few pause to wonder what the software looks like to someone who has never seen it before. To someone who didn’t write it, doesn’t understand the jargon, and doesn’t eat code with their breakfast cereal every morning.
So my year 11s do a usability unit. We learn some basic principles of usability, starting with Jacob Nielsen’s usability heuristics. We analyze the usability of existing software, including code they themselves have written. We conduct a usability evaluation by watching a novice learn a new piece of software. And every piece of code they write from then on is assessed for usability.
And they hate me for it, initially – because they can’t look at a website or a new game without critiquing the usability of it, and mentally redesigning it. If you get really into usability you can’t even look at a humble doorknob the same way ever again. It changes the way they view the world.
So years afterwards I get comments like this:
“Usability is actually one of the most useful things I learned at school. It helps me try to be clearer with what I’m saying as well. How would the other person understand what I’m saying? It was definitely very interesting. I remember when you started teaching it and all I could think of was “I want to do more PROGRAMMING”. But now I realize how valuable it actually was. Anyone can learn to code, only few can actually program.”
“Nowadays, I often think of the usability heuristics and assess the usability of what I use.”
“the amount of practical knowledge I’ve gained from the class that I notice myself subconsciously applying everyday (especially usability, (to my slight irritation) for some pieces of software) is unparalleled.”
So coming out of my year 11 Computer Science course are programmers who actually think about the people they are coding for, and who know how to assess the usability of a piece of software, and especially how to design usable software from the start. Imagine the difference if everybody who ever learnt to code had their eyes opened to the importance of usability? Well my students do, and they keep on using that awareness after they leave.