Usability for Programmers

There's this idea floating around that programmers, web developers, shouldn't need usability. They should be smart enough just figure it out. While it is true that programmers need to be to handle a high degree of complexity and arbitrariness, things are harder than they need to be. Regardless of any inherent complexity, well-designed tools make it easier to do the right thing than the wrong thing.

Here are some my pet peeves I've run across in my years as a Web Designer/Developer. Most will make no sense to non-technical folks:

Why is it "User-agent and not "User-Agent" for the robots.txt standard? How standard is that?

Why is it "padding-left:" in CSS and not "left-padding:"? Are we French all of sudden, putting adjectives after nouns? Why does order matter so much in shorthand shortcuts? Why is url required in @import url("/styleesheet.css"); (but not in @import "stylesheet.css"; for maximum confusion. What the hell else would I be importing, wine and cheese from the French Riviera?

Why does HTML use angle brackets? < and > are a pain to type. Square brackets would be much easier. [see?] Don't talk to me about SGML or character frequency.

Why are programming languages still being used that allow buffer overflows? This problem was solved 40 years ago. [Link to Phil Agre comment updated 03/25/2004] . All those Outlook viruses are the result.

Why are compiler/Javascript error messages so wretched? Netscape, both 4 and 6, have more specific, useful Javascript error messages than Internet Explorer, any version. This is probably the only time you'll hear me say something nice about Netscape 4.

Why doesn't command line cvs remove files for you when you issue a remove command? Talk about lazy. I've starting using WinCVS for some projects, and it does this for you. cvs in general is irritating: it has a habit of scrambling your terminal when you hit Control-C to stop an operation, forcing you to type "stty sane" or "reset" without anything being echoed.

Why aren't there standard comment characters across languages? Some programing languages use the same characters other language use for comments to actually do stuff. #, anyone?

The find command is powerful, but has odd syntax, even for a UNIX command. What genius picked a semi-colon as the terminator, so you have to backslash it? Didn't they notice it was already separating commands? I like UNIX, use it to slice and dice web server logs, but there are gratuitious complications.

I'm not optimistic about change. I am not innocent of using gratutiously complicated methods myself. Just today, a colleage wanted an image off a page that has a 0 second meta refresh tag on it. I telneted in directly to port 80, read the HTML, and contructed a path in my browser and emailed the picture off to him, showing off my ability to use raw HTTP/1.1. Then I realized the same thing could have been accomplished simply by using Internet Explorer's Ignore meta refresh tags setting.

To end on a positive note, progress is possible. The FTP default used to be ASCII and not binary. On the version of Linux I looked at, a recentish Red Hat version, it had been switched to binary.

Any other examples, good or bad?

Posted by Chad Lundgren on Friday, July 26, 2002 (Link)


Posted by Monte Mitzelfelt Tuesday, July 30, 2002 at 11:11 PM

FTP used to default to binary if the computers were of like mind about end-of-line character(s), and ascii if they disagreed. I don't have a Windows FTP server account to login to to test this, but it should be relatively simple for a web designer with access to many different FTP servers.

Posted by Anthony Mills Friday, October 18, 2002 at 12:45 PM

The "French style", as you put it, of putting the important word first, certainly has some merit. That way, when the attributes are sorted, all the related attributes get put together.

This is a win because there are lots of treeview-style hierarchy tools that sort data at different levels as a primitive semi-categorization. Doing this allows you to find items quickly without having to learn a new categorization scheme, and it doesn't break if a new version of CSS comes out that defines new tags.

In certain languages that lack local functions, I'll often name groups of functions like this; for instance, "ProcessUserGroups" and "ProcessUserGroupsIterator" ...

Posted by Blaine Hilton Wednesday, December 18, 2002 at 08:37 PM

Why are there still buffer overflow problems? Perhaps when 60% of the computer population is using a *nix OS MS will wake up and start plugging holes.

Posted by Philip Dye Saturday, February 1, 2003 at 09:14 PM

"Why are there still buffer overflow problems?"

Frankly, shear lack of concern and laziness from management on down through mentors (and instructors) and finally to the individual developer. I firmly believe that all functions susceptible to buffer overflows be removed from the standard libraries. This would create havoc for a while but would certainly eliminate the majority of problems. Not all unfortunately, since programmers sometimes feel they should write their own 'simpler' functions to handle such details.

Microsoft should have eliminated getc() and fgetc(), among others, from their libraries years ago. I rather doubt they have started yet. I can't understand why they haven't been sued for all of the damages caused by their criminally negligent programming practices. Perhaps they will be sued when people start dying as a result.

Personally, I haven't used such error prone functions since my first years in school before I knew about the problem.

Posted by Jeff Winkler Tuesday, February 18, 2003 at 10:38 PM

Why does Windows allow other apps to popup dialogs, whose buttons may be triggered by your typing--not only do you lose your typing and concentration, but may trigger some unintended action. How many usability guidelines does that violate?
(found a fix to this, in hyperlink below)

Posted by Ingo Struck Monday, May 12, 2003 at 06:41 AM

why don't programmers read manuals?
plain cvs actually *does* remove the files for you
using the -f option. cf. info cvs

Posted by Chad Lundgren Monday, May 12, 2003 at 11:24 AM

One generally accepted rule of thumb with usability is that doing the right thing should be the default. In the case of cvs, you should have to turn OFF automatic file removal, not the other way around. When I want to remove a file from CVS I don't want it on the local version either.

However, as always, it would be preferable to run some usability tests and see if a consensus among different programmers emerges.