Why Software Usability is Important
Software is meant to be usable to all people, and not just for people who knows their operating environment intimately. Good, usable software prompts for rapid adoption, which means writing good usable software is inherently good business.
This is especially inherent in the geeky *nix world, where software
usability is something that is more overlooked than not. Let’s cite the
simple example of checking for software authenticity such as in Linux
where there is a command line tool called
'md5sum' that allows you
perform authentication of your files using a well known algorithm called
md5 checksum. Funnily, its usability
may strike general users as surprising, or simply unintuitive.
Assuming that you have downloaded an archive as well as it’s md5 checksum to verify it’s authenticity:
-rw-r--r-- 10596439 2008-12-07 14:22 example-archive.tar.gz
-rw-r--r-- 57 2009-01-29 12:20 example-archive.tar.gz.md5
If you pass md5 sum on the command line with the example archive, you’ll get something like this:
% md5sum example-archive.tar.gz
The tedious way to visually inspect the file is obviously to compare it
'example-archive.tar.gz.md5', or maybe to use
'diff' to perform
But reading through the
'man' pages, it indicates that you’re able to
check the file downloaded with the MD5 using the
--check | -c
parameter, but doesn’t give a usage case.
Given the ambiguity, you might have tried:
% md5sum -c example-archive.tar.gz
md5sum: example-archive.tar.gz: no properly formatted MD5 checksum lines found
Maybe I was just plain dumb in my understanding, but obviously if I
passed the same file with the
.md5 extension, it will have indicated
% md5sum -c example-archive.tar.gz.md5
The main confusion stems from the fact that the
'man' page did not
indicate what kind of a file that I have to pass using the
argument, but worse, did not indicate that it’s a different file that I
have to pass in order to get it to work! (Read the man page
The simple fix in this case will be for the software to look for a file
.md5 extension, where the program verifies the result
Even so, I think the ideal case will have to be that the checking/verification should really be transparent to the user without having to know it exists at all.
All these improvements does simply imply more work for the programmer, in which is why software development is often a laborious, thankless job.
Whenever you do it right, the user will never know; do it wrong, and you’ll have tons of angry users directing their wrath at you. ;)