When it comes to software – the word “cool” has been used so often, and – and I just can’t do it.
There are a few applications that are mind bending in how useful they are, how they connect dots that were never connectable before, but for the most part, I cannot bring myself to utter the word “cool” about most of the software out there.
I’ll tell you why – and as always it begins with a short story.
Back in – well, a few years back… my sister and I worked for a little software company that had been started by a couple of college dropouts and was being run in a small town just east of Seattle.
She and I had both also managed to drag our parents out of what we thought was the stone age and had gotten them a computer, and we spent hours, days, weeks going over and over and over with them what an “icon” was, the concept of “clicking and dragging”, and the realization that “just because you didn’t see it, doesn’t mean it’s gone.” I’m sure some of you out there have worked with your parents in this way. Doing “support” calls, leaning back in your chair, eyes closed, one hand holding the phone, the other holding your head, the bottle of aspirin nearby, trying to project this voice of calm and reason to a parent who simply doesn’t “get it”.
Now – understand – this is not to slam parents or their generation. Oh, Lordy – That’s the last thing I’d want to do. The thing that’s difficult is translating what you know and take for granted into something that’s so unfamiliar to them (if they can’t see it and feel it, it must not be there, right?) to something they can relate to and understand – without having them go over the edge in frustration. I’ve had a couple of calls with my mom that lasted two hours (almost as much time as it would take to drive down there, do it, and drive back) – and they were often things we in the IT world would call ridiculously simple – copying and pasting, for example, was one thing my mom’s had trouble with. But try explaining it to someone without using computer terms – to someone who grew up in another country, another culture, who’s never actually copied and pasted – and it becomes a bit of a challenge, and you have to make sure the concept itself is clear before you try to explain the mechanics of it. She’s got a device that allows her to browse the Web from her TV as well as that computer we got her – and of course the commands for one can’t be consistent with the commands for the other – so that makes it hard to assume that something will just simply work as you expect it to. It can get frustrating – on both sides.
But a little note – nay – reminder for anyone out there who gets frustrated at explaining something technical to your parents – well, I can’t speak for your parents specifically, so I’ll speak generally:
These are the folks who quite literally dealt with your crap. These are the folks who changed your diapers, who changed work schedules to take you to or be at your school events growing up, who fixed thousands of sack lunches, who helped with last minute school projects, who listened to your dreams as you became a teenager, and did what they could to keep food on the table, and a roof over your head… And they smiled that proud, gut wrenchingly bittersweet smile parents get as they watched your car – or bus – or whatever – leave that one time that neither of you really knew would be the last time you’d ‘live at home’ – A little bit of a support call to help them out is the least I can do. I do not for one moment regret the time spent on the calls I get from my mom on computer problems.
After about a year and a half, mom and dad knew how to use the computer, the “support calls” were fewer, and they were actually able to write letters and stories and the like. It was kind of a neat feeling – almost like the shoe was on the other foot – me watching them “grow up” – so to speak, instead of them watching me.
But one day, at work, when a developer wanted to show me something new he’d written – I just about flipped.
See, he’d written this snippet of code, that did something… and to this day I can’t remember what it was – but he ran it, showed me what it did, and then said, with eyes just beaming with excitement, “Tom, isn’t that COOOOOOOOL?”
I understand that feeling. I’ve written little snippets of code that solve problems in rather ingenious ways – but even as I sit here, writing this, I still remember that sinking feeling I had in the pit of my stomach when I heard him say that…
Given where I worked, and given what I knew of software development, I knew that this little “cool” thing would make it into an operating system at some point, and soon.
And it would fundamentally change how my parents had to work. And it would mean more telephone calls, to explain something that someone had changed.
Not because it made something better.
Not because it made it easier.
Not even because it made it faster.
But because it made something “cool”.
See, there seems to be a misunderstanding of the purpose of writing software.
My take is that you write software to use it. And if you use it at work, it should make your work faster, more efficient, more streamlined. If you use it at home, it should solve problems and make it take less time to do things (think putting together a photo album, balancing your checkbook, or trying to find out where your 401K went).
Here’s the deal: Software Should Simply Work.
Make it do what it’s supposed to do first.
If developers write code with the understanding that it is to be used by people, and that it should make their lives easier – then they have it nailed.
If developers write code only to show off their prowess, or only to show off their ingeniousness to other developers, then they’ve forgotten who their audience is, and that misses things entirely.
So… what’s ‘cool’?
An application that solves a problem and does it well.
An application that is easy to learn and intuitive for a first time user, and at the same time, just surprises you with deeper and deeper little snippets of usefulness that solve a problem you didn’t even know you had, just as you realize you have it.
Oh – and last but most certainly not least: An application that works consistently enough like the old version of the same application so users don’t have to relearn everything they’ve learned to be as efficient with the new version as they were with the old.
I don’t want shiny sparkly crap in my software. I don’t want context sensitive menus where I have to know what I’m looking for in order to find it (hint: the whole ribbon thing did nothing to increase productivity for a long honking time.)
And there you go.
Software should be written for the user, and with the user in mind. Anything that gets in the way of that, no matter how glitzy, no matter how sparkly and shiny – misses the point altogether.
…and there is a post script to this story…
Last year, my mom was working on her Christmas letter – in Microsoft Word, and she wanted to send it to someone to do some proof reading.
Before, she’d had to go through a web interface on her computer to get to email – and sending the text of a document involved copying all the text in the document, opening the web email interface, creating a new outgoing mail, putting in the address, tabbing a couple of times, typing in the subject, one more tab, then a paste. It worked, but it was pretty convoluted.
Then I got Outlook Express configured on her box, so now when she wants to send a document, it’s a matter of going up to the file menu in Word, choosing send, typing in the name, and then hitting the send button.
The first time she did that she was floored. “That’s so EASY!” and then, remembering this story, she changed that just a bit…
“That’s so COOOOL!!!”
And she’s been rubbing it in ever since.
So even though the people who made Outlook Express 6 work with Word 2003 on Windows XP are probably long moved on from those projects, a note of thanks to the architects, devs, testers, PM’s, and managers who shepherded those things all the way through to RTM: Ya done good.