I've grown very fond of saying, "I don't use computers, I just make them work." My relationship with computers has been based in programming since my first interaction with an IBM PC (yes, the original one), that my father brought home in 1981. Basic first, Pascal later, and even some 8088 assembler mixed in. Administering and tweaking WildCat on that same box (with the addition of a Hayes 1200 baud modem) for my late night BBS adventures kept me sane through adolescence.
One downside of this strange love-affair with computers is that your friends automatically assume that because you live your life in them, you must be good at fixing them. This is partially true. There are many things about the machine that I know well, and can fix quite easily. However, when it comes to the most popular desktop operating system, I'm almost at a total loss.
Microsoft Windows seems to have been built by labyrinth designers. The primary metaphor of configuration and troubleshooting is opening boxes, only to be presented with an array of more boxes, which are mostly labeled with particularly misleading phrases, which contain an even more confusing set of boxes, et cetera, et cetera. To make it even easier for one to troubleshoot, often the opening of one of these boxes, prohibits the view of other windows that might contain information needed for input into this box. This is how I feel today after a few incidents in the last week of helping friends and coworkers mend their hobbling Windows computers:
Most computer users have probably never used a command line interface (specifically, a UNIX command line). If they are known by the user, they're regarded as an arcane way of interacting with a computer that the windows graphical user interface "fixed". The reality of the command line, is that after learning a few new verbs and nouns, it's quite like talking to another human being -- with much more control than graphical interfaces normally provide. "Move this file from here to there." (mv <origin> <destination> ) "Go to this web page and download all the images." (wget -r -l 1 -A *.jpg,*.gif,*.png <web page>) "Find a file with 'book' in the title on my hard drive." (locate book) Additionally, configuration is achieved, not by stumbling through a series of boxes, but by editing simple, and well documented text files.
It may look a little Greek at first, but after you know a few of the primary verbs, you can just ask the computer to tell you about them with a simple "info <verb>" or "man <verb>". The descriptions are very complete, and often give the exact example you're looking for. In any case, they do a great job of telling you exactly what the command is going to do, which is much more than I can say for the terror of clicking "OK" in a box, when you're not quite sure what you're responding to. An additional benefit, is that it is very simple to help someone else remotely, by simply telling them the commands to use, rather than trying to verbally give them directions through the labyrinth.
I don't imagine people are going to run out and start using the command line, but I think a little exposure to this kind of control could be very powerful for the normal computer user.