The Problem With Being a Programmer Part 1: User Interfaces

Programmers can change the world. That is the wondrous thing about being a programmer. Our programs have the capacity to be used by millions of people. We can say, when we hear someone talking about that cool new feature in some cool new program, or how such and such a website is the best, that we were a part of something great.

This is something that separates a programmer from say a video store clerk or fast food worker. I remember, during my darker less ambitious younger years, I took a job at KFC in order to work with some of my good buddies at the time. One afternoon we were arguing with the Manager. You see, our manager had taken the stance that managing a KFC is great because the pay was actually pretty good with reasonable hours and benefits. I still remember how my friend ended the argument, "I want to be the guy that changed the world, not the guy that served chicken to the guy that changed the world." This is the great thing about being a programmer, you could actually be that guy who changed the world. Ranked among the likes of Larry Page and Sergey Brin (co-founders of Google), or Bill Gates. After all, they were just programmers--that changed the world.

However, most programmers forget about one of the most crucial elements in software design: the user experience. We get so caught up in figuring out the best way to solve a problem deep down inside the code that we ignore other problems much more likely to affect our users. I bring this up because I went to Kinkos Fedex the other day to send out a fax and mail a package and I paid with a credit card.

Normally, paying with a credit card wouldn't be a big deal, but this one was because after I swiped my card, the little touch screen asked me to sign my name digitally inside a little box. No problem I thought. I grabbed the stylus and began to sign my name. Those who know me have usually commented on my signature at one time or another. My dad says I should have been a doctor because no one can read my signature. I like the long swipes of the pen and the seemingly anarchic look of my signature, but the credit card machine did not. Every time the stylus left the confines of the little box, an error message popped up that could only be dismissed by hitting OK. This happened a number of times until the lady finally stopped me and said to just hit "enter."

This experience didn't need to happen. The programmer made a decision to place an error dialog box instead of just ignoring all stylus touching outside the box. That is all that needed to be done: just tell the code not to record the movement if it is outside the box. I have seen it done on other similar credit card machines. And being a programmer myself I know it is certainly possible, if not trivial, to implement. Sadly, this particular programmer didn't take into account the user experience. Millions of people are going to use and interact with his work, and most aren't going to have anything nice to say about it. After all, I can't be the only one with a long flowing signature.

This takes me to another program that has a similar problem, I use the very cool (and free!) ssh secure shell client for uploading and downloading remote files to my server. The interface is very similar to Windows Explorer, the biggest difference is that when I drag a file from the left (my local hard drive) to the right (my remote hard drive) and I decide that I am dragging the wrong file so I bring it back to the left and let go of the mouse button, the program pops up an error saying:

Cannot copy index: The source and destination filenames are the same.

This is annoying and unnecessary. I know they are the same file. I dragged it back over and let go because I wanted to cancel the operation. Windows explorer does it right by just canceling the operation. No error, no dialog to click on, nothing. That is how it should be done.

The overall user experience should be taken into account when designing something that people are going to use. I know it is difficult, I have problems with it myself. My mom complained to me the other day that she didn't understand how to get out of the pictures that pop up in my very own home brewedimage gallery. Obviously, that meant I had to go back and rethink my whole navigation solution--which I hope is more obvious now.

I guess that is the key, when you do identify a mistake in the user experience as a developer, don't take offense, just fix it. Trust me, your users will thank you for it. Sadly, this probably can't be done easily in something like the credit card machine.

Update: The New York Times has a great article titled: Awaiting the Day When Everyone Writes Software that kind of jives with what I posted above. You might have to login, in which case I recommend BugMeNot.

I wrangle code for Undrip and sling words for StartupGrind. Previously, I was Co-Founder and CTO of Plancast.

About me: About.me
My Plans: Plancast.com
My Notes: Noopsi.com
My Tweets: Twitter.com
My Code: Github.com
My Resume: LinkedIn.com
My Facebook: Facebook.com
My Google: Google.com