This is a manifesto. I’ve always wanted to write a manifesto. Not a political one but one that is about something I really care about. Something like improperly spaced pepperoni. Doesn’t it bug you that some slices get none while others get three or more? I hate that.
Today I’m choosing to avoid this serious issue to talk about software. Computer software in general, and automation software in particular. At the risk of offending many of my programmer friends in the automation industry, I have to tell you that I find much of the general purpose software and automation software you write to be rude, offensive, impolite and insensitive. I spend a lot of my day fighting with it, having to learn about it, memorizing its peculiarities, and hoping and praying that I can cajole it into accomplishing the tasks I need its help to do.
I recently bought a camera. A very impressive Canon that can do both stills and video, which was all I really wanted it to do. But – of course – it has nine thousand other features. It can add music to my videos. It can color and decorate my snapshots. An ocean of features that only a photography fanatic could appreciate.
I opened the box, charged it up and guess what? I couldn’t figure out how to take a picture. Once I figured that out I couldn’t figure out how to preview it. When I figured out how to preview it I couldn’t figure out how to send it to my computer. Everything I wanted to do was an obvious and sequential next step for me but not to the camera’s programmers.
Unfortunately, that’s not unusual. Windows and Windows applications are loaded with this kind of insanity. Cursors that randomly disappear (are they on break?), icons that won’t stay where I put them, taskbars loaded with things I not only won’t use, but can’t even identify.
A few weeks ago I tried to use a new survey tool. The preview looked great, so I sent it out. Little did I know that the “preview” they showed me is not what it looks like to the recipients. That preview was beyond misleading, more than deceitful - it was an outright lie. It was a sales pitch disguised as a preview.
Software in the automation industry is probably even worse. We expect our users to understand all sorts of arcane terms, force them to configure things they don’t understand or really care about, and give them as little information as possible. A while back I had two Modbus temperature sensors on our test panel. I thought it would be cool to display those temperatures on a small display. I naively thought that, since I speak Modbus more fluently than English, this would be a fifteen-minute project. If only. I bought a little device from a well-known automation company and after two weeks, five calls to technical support and detailed study of their 125-page manual, I surrendered. Displaying two Modbus registers on the screen was just too difficult.
But it shouldn’t be that way. What’s going on? All of us that build products are part of a professional community that refers to our customers as “dumb users.” That’s just wrong on all sorts of levels.
The fact is that all of us software developers, and I’m including the folks that work for me, are building Automation software that’s overly complicated, difficult to use, hard to understand and that treats the user as a servant. We expect compliance. We expect effort. We expect a lot of our users. And, in one word, that’s impolite.
So what would polite software look like? I’ve read a number of books on this and I’ll distill their essence here in my own words. Polite software can be characterized as follows:
It Remembers Me – It knows that I like to see small icons when I’m looking at a directory of pictures and file descriptions when I’m looking at a directory of Word files. Polite software remembers me and how I like to work. Polite software should get to know me and make what I normally do simpler and faster to do.
It Trusts Me – When I say I want to delete a file, start a process or load a recipe, it should just do it. It’s insulting to confirm everything with me twice. I’m not three years old. Unless the consequences of my actions are irreversible, it should just trust that I know what I’m doing. One of our problems is that programmers distrust their users and customers.
It Won’t Lie to Me or Leave Me Wondering – Software should honestly say that a task you asked it to do is complete or not complete. And more importantly, it shouldn’t lie to me and pretend that it did what I asked it to do.
It Should Give Me Control – When I turn on my iPhone, it’s to make a call or send a text. It would be polite to let me do that. Every day my phone tries to force me to login to the iCloud before I can place a call.
It Should Simplify and Diminish My Work Load – The best example of this is the University of Georgia Class Scheduling System. The student class schedules are printed with building numbers, not names. Every new student carries a cross-reference list to cross reference the building numbers with the names on the buildings. Forcing customers to perform a tedious or error-prone action that a computer can do quickly and correctly is not polite.
So why do we have such impolite software? My apologies to my programmer friends, but it’s because we’re letting programmers build these user interfaces. Programmers care about one thing – the code: what language, how it’s structured, what rules they’ll use to code it…etc. They think code structure first and then build a UI to match the code. It’s why, when I take a picture with my new camera, I have to change modes to view the picture I just took. To the programmer, those are two different tasks. To me, the user, it’s part of the picture taking process. Most programmers can’t see it that way.
I am arguing here that we all need to reorganize our development efforts. At Real Time Automation I’ve changed the process. I’ve taken control of the UI away from the programmers. They’ll implement it but they aren’t designing it anymore. We’re going to work hard in 2015 to make our software respect you and be polite. And with any luck, others will follow suit.
You’ll get to judge how well we accomplish that as we release products in 2015. I think you’ll like working with polite software.
Now if I could only get that pepperoni distributed correctly on my pizza…