Modern Savages
As I write this, I'm too busy to wonder whether the word processing software I'm using is bad for me. If you read this online, perhaps using a web browser, no doubt you wonder the same thing. If my software is sending private information across the Internet, or damaging my computer, or dumbing down the saleable skills I've struggled to acquire, or addicting me to some destructive Pavlovian behavior, there's little I can do about it at this second. I would have to break out of my current income-earning tasks to address the problem. If I wanted a systematic solution, my only recourse might be to buy one of those career-change books featuring parachutes. At least my last downloaded game failed to installa minor reprieve from an occasional bad habitbut hardly a quality software experience.
I wish I could be sure that the software I use is good for me, but I have enough experience with the programming problem not to crucify the poor programmer for failing to fulfill that wish. Quality software development is a hideously difficult task, with fundamental obstacles such as the intractability of correctness proofs and other hopeful rocks that one would like to cling to. Separately, there's the engineering arm-wrestling over territory that comes from sitting next to another programmer whose ideas you don't like. As far as I know, there's no big lever you can pull that will elevate a programmer to the status of a mind reader and a godat least, not with respect to the code they write. At Microsoft, it has been two years since Bill Gates took all programming staff offline for a "code scrub" designed to increase security. Nevertheless, the list of cleverly successful viruses, Trojans, and worms aimed at Windows seems to have continued unabated. Have mercy on programmers.
Programming is process-oriented, though, and that's where hope lies for better software. Open source software development practices provide that hope.