circa75 Home | About circa75 | Articles | Links | Contact Us

Posted by gustav at 02:01AM, Tuesday, December 04th, 2001

Failings of Computer Science

I had a good basic education in CS, but it failed in one pretty central way, and, judging from all my experiences in the industry on the East Coast, the educations of my comrades (such as they were) were much, much worse.

The failing is that the whole time I was in CS classes in school, nothing was mentioned of the User. This is sort of like talking about cars and never mentioning driving one -- going to automotive industrial design courses and never saying "Well, we traditionally put the seat here, because that's where the driver needs to be to hit the pedals."

Now, most programmers I know (and that is really more of a lopsided Venn diagram than a 1:1 correspondence with "most people I know who took CS classes in college") don't give a damn about the user. "If they're too stupid to be able to use this program I'm making, that's their own damn fault. I enjoy watching the bizdev folks downstairs try without success to use my products." This is stated with varying degrees of frankness and humor. And, really, that's hardly surprising, given the climate the bizdev folks on the right coast seem to try so hard to engender. (See "dmod" for examples.)

What's more surprising than seeing poorly-run dot-coms fail because nowhere in their corporate strategies do they take their target customers into account, is seeing presumably smart and talented, though narrow-minded, open-source developers pour weeks of effort into writing complex but ostensibly reliable web servers or templating systems or ejb containers, then treating the documentation phase as something to be grudgingly and obligingly done to placate those sorry souls too clueless to read your mind and dance through your inconsistent use of terminology and the self-contradictory statements you make on the project's website.

All the good publicity in the world isn't worth anything if people can't sit down and use your software. I know there are people out there who revel in taking a completely obtuse piece of source code and making it work on their bastardized Linux system cobbled together from four different vendors. Usually, they're called system administrators, and while those skills are useful for them, I think they're a distraction for software developers. I prefer not to have to remember arcane system commands I'll only use while setting up a system -- I prefer them to be unnecessary. I prefer to have clear and evocative GUIs to guide me through this sort of thing. They're almost as important as having fast and unobtrusive ways to do everyday tasks, such as checking email or switching windows. While the total amount of time those infrequent tasks take amounts to less than all the email checking I'll do in a year, I don't want to have to track down and crack open three different books, and take four hours figuring out the steps to go through, each time I install a webserver on a new machine.

This is one of the reasons I'm thrilled that the Mac OS has become such a great programming system since OS X came out. Mac people seem to understand how to write useful documentation much better than Linux people, who are more inclined to the sysadmin approach. Some of the documentation I've found on Apple's site for installing things like Tomcat on OS X has summed up what it took me a few months to figure out on my own, using the standard Linux and project documentation. I find "1. get this file. 2. unpack it here. 3. add this to your PATH environment variable..." much more useful than "JBash is a multiprocessor aware, J2SPEC3DOT-compliant E2GGABBA client container system that conforms to the OBOOGA-BB2 spec. For information on how to deploy and manage your JWHibbles, look there."

Is it just me?

circa75 Home | About circa75 | Articles | Links | Contact Us

All content copyright © 2001-2009 the owners of