Friday, September 23, 2011

What's Wrong With Them?

What's wrong with our users? They try to use our software without bothering to learn anything about it and then complain when they run into trouble. They're confused by the terminology we use in the program and try to translate it into something that's more familiar to them. They don't know how to use anything right, and instead do the strangest things to get their work done. For instance, when they need a new field to store some data, instead of asking for it to be added they just start typing special codes into another one of the fields. This inevitably causes data problems down the road. Can't they do anything right?

I don't think users are stupid or difficult. Instead, there's something about their relationship with programmers that makes them seem that way. Look at how programmers act when they're users themselves. How do programmers act when they use the software they need to get their job done? Do they read the manual before doing anything? Do they only use the software in the recommended way? When the software doesn't work quite like they want do they patiently wait for an update or do they hack in a workaround that they know is going to cause problems? We all know the answers to these questions. When programmers are users they act just like users. If you listen to them complain about the software they use you'll notice they even sound like users. There's nothing strange about user's behavior; it's human nature. Everyone treats programs like that. So why do programmers get so worked up about it?

Programmers emotionally identify with the programs they write. To them, the program is their creation, an expression of their own self. To the user, a program is just some piece of junk that's supposed to help them get their work done, if only it would work right. The user doesn't think they're hurting anyone's feelings when they criticize a program, but it's amazing how rejected you feel when someone doesn't like your work. Programmers aren't supposed to show these hurt feelings and that's when the trouble begins.

There's a few different ways to suppress hurt feelings. One is to attack the person who's hurting you. If the users are dumb or overly critical then their judgment doesn't count, so looking at users like that is one way programmers cope with criticism. Realistically, if the system isn't making sense to the users, then it's probably the programmer who didn't understand what the users needed, not vice versa. Instead of accepting the painful truth that they haven't done their job, programmers project that failure onto the user. Programmers trick themselves into believing users have poor judgment, all to not face up to their own poor judgment.

The more common method of escaping from painful feelings is to hide. Most programming is done in complete isolation from the users and their daily work. The majority of programmers never meet anyone that uses their programs, much less actually sit down and watch them work. Yet few people in the business think this is strange or needs to change. No matter how complete requirements are, millions of questions come up while writing the code which need to be answered somehow. Usually you guess. Guessing by it's nature is inaccurate. So the isolation, created to avoid users and their questions, actually make the software worse. The internet, which was supposed to make everyone more connected, has eliminated software installation, so programmers don't have to be physically near users when updating software. Programmers are more isolated than ever and the software suffers.

What needs to happen to fix these problems? Programmers need to identify more with users instead of the programs they write. As long as programmers consider their relationship with users adversarial, they will react to any criticism, feeding their own hostility and isolation. Programmers need to recognize that they have a part in the breakdown in communication with users and strive to fix their part in it. That means taking users and their problems seriously.