Make your technology work harder, not your users
Being a programmer by blood and a psychologist by training, I still tend to have the bad habits of a coder, even when I should know better. For example, if I build a website function, I tend to be stubborn about how that function gets used. Now, like any good developer, I anticipate the obvious abuses and try to provide decent alternatives and errors, but the problem is that I automatically assume that any function other than what I intended is an "abuse".Case in point: a client's site has two search methods: (1) an advanced search that allows for cities, dates, etc. and (2) a simple search that just handles keywords. Pretty standard stuff. Inevitably, though, someone will try to enter a city into the keyword box, and wind up with no results. Now, there are legitimate technological reasons for why this happens, and the fix is difficult, but the reality is that it just bugs me that people do this when there's a perfectly good "City" box on the other form.
Of course, by avoiding the difficult fix, we tend to supplement the problem with easy fixes. Add a header to tell users that it's just for "keywords" or even put a description telling them to search for cities on the advanced form. The problem is that, on top of taking up screen real-estate and hurting the usability of the site, these messages just ultimately make the users work harder. Typing a city name into a search box on an events site is a reasonable thing to, whether or not I personally approve of it.
At the end of the day, whenever possible, it's our job as developers to make the technology do the heavy lifting. Even smart users (and, granted, some days that feels like an oxymoron) shouldn't be made to think too hard, or they'll ultimately give up and go home.


