Wed 16 Jul 2008
Connecting With the End User
Posted by Scott Hackett under Programming
No Comments
Coding is as much of an art as writing literature. It’s a forgotten sentiment in programming these days. It’s easy to get lost in the sea of API’s, libraries, frameworks, and everything that’s out there that must be understood before you can start to program effectively. But many programmers see this as the end. Once they learn how to use an API, their learning is considered complete until the next required API comes along.
Just like a novelist must have a solid foundation of grammar and vocabulary, a good programmer must understand the fundamental APIs for their language. But a novelist cannot write a novel with grammar and vocabulary alone. It takes creativity to turn the words into a meaningful connection with the reader. The equivalent of this in programming is usability for the end user.
Usability is such a bad word. Dictionary.com defines it as “capable of being used”. Thanks for that. However, scrolling down further, it also references the following as it relates to programming:
The effectiveness, efficiency, and satisfaction with which users can achieve tasks in a particular environment of a product. High usability means a system is: easy to learn and remember; efficient, visually pleasing and fun to use; and quick to recover from errors. [1]
Now we’re getting somewhere! This is a perfect analogy to the novelist trying to connect to the reader. Investigating further, I found the HCI (Human Computer Interface) page at Wikipedia. I was expecting to find the softer side of programming, sort of a feel good, warm milk and teddy bears approach to software. However, I pretty quickly realized that it’s a whole other science in itself.
After creating what I think are some really compelling features in our Tools product, I’m having to look back on it now and figure out how to optimize it for the user. That’s so hard to do when you’ve worked with a thing for so long, or even worse if you’ve created the interface to it. Just like I wrote in my “Zen Mind, Programmer’s Mind” post, I really need to go back and approach it as it I knew nothing about it. I’ve always approached HCI by imagining the way that I would want to use it. It’s so easy to forget that I’m just one person and there will be so many more people out there using my software that won’t agree with the way I use it.
HCI is fairly new to me, but I’m always interested in learning something new. The problem to me is how amorphous it is. There are principals, guiding rules, methodologies, and such, but there are no concrete steps. I guess that’s how it is though when you get into the areas of programming that make the leap from straightforward answers to creative problem solving.
I wonder if someday in a hundred years or so we’ll talk about software like we talk about classic literature now. Maybe someday there will be a Shakespeare or a Mark Twain of software. Maybe someday you’ll be able to see a piece of software and say that it’s a distinctive program for a particular developer group. The closest thing we have to that right now is Apple. Someday I hope I can look at may own software and think, “Yeah, that was my style.”
1. The Free On-line Dictionary of Computing, © 1993-2007 Denis Howe