This is a rant. As such, it is written partly in anger, and a lot of stray voltage is discharging. If you read this, you may find the tone harsh. If you find yourself targeted by this rant, don't take it personally. But do think about what has been said.
All these opinions are mine and mine alone. In no way should they be taken to represent my employers, my friends, or any companies mentioned below. I'm a renegade.
I'm a software engineer. I'm a computing professional. I have a bachelor's degree in mathematics and computation, and am well into a part-time doctorate on the same lines. Evil fate has dictated that I spend most of my working day plugged into a PC running the absolute cruft that is Windows 95 (motto: "slower than 3.1, and in more colours") trying to make it do what I want. Three years of frustration has built up to the point where I am no longer going to suffer in silence.
It didn't have to be like this. Contrary to the weight of evidence, it is possible for Man to work with his computing devices in harmony, each taking up the slack from the other. Just occasionally I have had the happy fortune to work with a machine or application which fits perfectly with what I want to do. In a way, I wish this hadn't happened; no longer can I remain in happy ignorance of how things could be.
I believe that coding is an art, like sculpture or oil painting, where the artist works with limited materials and physical constraints to produce a work that expresses him or herself. Sculptors take pieces on commission to earn a living, artists paint portraits to fund their more experimental work, and coders produce programs to complete tasks specified by a customer. The difference seems to be that if a painter produces a portrait which looks like something out of a bad dream by Tarantino and which is several weeks over schedule, he doesn't get paid. The coder who produces an electronic abomination will be paid extra to fix the more outrageous gaps in his initial delivery.
This rant is in the name of all the true artists out there, and is targeted at those who would dash off a sketch in poster paint and sell it to others at the price of an oil painting. You know who you are.
[Anyone who considers the above analogy flawed because people just don't write programs for recreation or enjoyment, you fall within the second category. If you don't program, don't start. If you program, you need to read this and / or have a serious attitude transplant.]
Last week I wanted to do something moderately complex in Microsoft Word '97. [I'm going to be mentioning Word frequently in this rant, but makers of other applications should not breathe a sigh of review and click the "back" button on their browser. Lotus Notes sucks rocks through a drinking straw, Aonix needs to shoot the authors of Software Through Pictures (twice, just to be sure), sendmail may be a wonderful program but Eric Allman should have thought a little more carefully before defining the syntax of sendmail.cf, and Longman Logotron's S-Base causes shivers to go up and down my spine. There are many more out there.]
I had thought carefully about what I needed to do, and all my years of programming experience assured me that it was a reasonable and feasible task. Word thought otherwise. The supposedly "intelligent" on-line help didn't give any hint on how to start. After half an hour of sound and fury, I had to give up and admit to myself that Word probably couldn't do it. Frustrating, but after a decade of exposure to Microsoft products you grow to expect these things.
I sat back and clicked over the "Office Assistant" (Mother Nature, less offensive than that fscking paper clip) to close it down. Instead it produced a pop-up menu on which the option "Animate!" appeared. I clicked it idly, and watched the Earth morph into a flying dove. Very pretty.
My brain suddenly clicked. I clicked on the option a few more times and watched the other animations. A back-of-the envelope calculation made it a 10-fps 256-colour 80x80 pixel animation; 6400 bytes per second, and I saw three different transformation animations in my Assistant, each taking 5-10 seconds. That's a minimum of 100k of graphics, heaven knows how much human time and effort in design and debugging, for absolutely no utility at all in Word's alleged role as a word processor.
I sat back in my chair and gasped in outrage. Word's little quirks, such as persistant and variable bad formatting, I could just about live with; I know how much effort is required to write and debug a big application. But here was effort and time to spare, utterly wasted on a feature which had nothing to do with word processing. WHY?
The Microsoft defence would no doubt centre around the premise that Word is easily the leading word processing application. "Oh, by the way, it doesn't have a monopoly, just in case the US Department of Justice is listening." People keep buying it, and when new versions come out, they upgrade. So what's my problem? It's a free country, isn't it?
I don't care. I don't give a flying squid how successful, shiny, colourful and loudly praised Word is. None of these things matter. Word is a program, coded by a very large team of programmers. And, by any metric, it stinks like roadkill skunk. It is huge. It slurps memory, and if you're very lucky it might free it when it quits. It is slow. It has got progressively bigger, more memory-hungry and slower as time has gone on -- despite modern processors following Moore's law pretty well and doubling in speed every 18 months. Run Word 2 on a 286 and Word 7 on a P166. Write a simple letter. Tell me why Word 7 is slower. Give me one good reason. Just one.
Each new version of Word has a new file format which cannot be read by older versions. Sure, it can read old files right back to the days of Word 2. But try to make Word 6 read Word 7 files and you have problems -- even the converter program supplied by Microsoft screws up the formatting. This is either sheer incompetence by the programmers, or sheer malevolence by the marketing department. I wouldn't bet against both being true.
Word is a scarlet blanket to the professional coder's bull, representing all that is evil, bad and just plain dumb about coding today.
Word, and similar applications, are an affront to my professional abilities and ethics. They are written to make money. There is nothing wrong in this per se -- I don't go as far as Richard Stallman in claiming that all software should be free, a man's got to eat. But that is their only aim. They are written to make money by people buying them, and (worse) to lock people and companies into buying future upgrades.
They do not provide a service to the world by being the only word processor. There are plenty of alternatives, for the PC and for other platforms. Personally I'm an Acorn fan, but this is not the place for an OS advocacy debate.
If anyone from Microsoft, or even a Microsoft advocate with no formal MS connections, would like to refute the above, I offer the space below. I shall be happy to place such a refutation in the space below. This is not an empty offer, any sensible refutation shall be entered -- I am a man of my word. Alternatively I'd be happy to hotlink to somewhere suitable on someone else's site.
This space awaiting a reply
You may draw your own conclusions.
Anyhow, that's the purpose of Word. I wouldn't mind so much if it was well-written. But blatantly, it's not.
First, let's look at size. Word is huge. Running Word '97 on a 16Mb PC running Windows 95 and nothing else (no big background images or anything) is do-able, just. Fire up Excel too, no document or anything, and listen to the hard disc sing. There is no excuse for this. Running Impression or Techwriter on an Acorn with 4Mb of memory, with the OS running at the same graphics resolution is eminently do-able.
What about speed? As Word advances through the generations it fails to get quicker in actual use, no matter what "benchmarks" are thrown at it. This despite the aforementioned advances in processor speed. Just where the HECK have all those CPU cycles gone. Dancing paper clips? Scanning the user's actions for something that looks familiar so that the aforementioned paper clip can offer smug, and utterly unhelpful, advice about how to do something completely different.
And craftmanship. Microsoft's build-every-night, massive beta-test strategy has produced a product of such stunning reliability that I run across a bug most every time that I use it. It's rarely the same one twice. And these are the operations most commonly used; the Microsoft testing strategy (as they themselves admit) is based on testers playing with each release as they see fit. As a result there are some advertised features that plain do not work.
By the way, how on Earth did that flight simulator get into Excel '97? Is there no quality control at Redmond?
Heroic coders like Larry Wall, Linus Torvalds and the Linux kernel team, Richard Stallman and Dom Symes are born, not bred. There are few of them in the world, and we're damn lucky to have them. I don't ask that each coder have the skills, determination and raw drive that these men carry; I ask for a state of mind.
When you write code, care about it. It is a part of you. No matter how well or badly it works, you have taken it from within you and brought it into being. Look at it, think about it. Take time to consider what you have done. Think on how it can be made better.
Don't view testing as an affront to your skills. No-one writes bug-free code, even though some produce a bug density several orders of magnitude fewer than others. A person testing your code is offering his time to improve what you have written, and is giving his time and effort to make you look better. Thank him for his time, listen to what he has to say, and act on it.
Whatever training you have had, it is insufficient. Read Knuth to understand the art of computer programming. Follow professional newsgroups, magazines, mailing lists or websites. Read Brooks to understand where projects go wrong, and learn from others' mistakes.
Be humble. Be wise. Be open to others.
This has been a public service rant. Thank you for listening.
[The screen slowly fades to black, and the credits roll.]
Web pages maintained by Adrian Hilton
"...it's not the bloat and the sluggishness that I mind so much, but that the authors don't care that it's bloated or sluggish -- FOR FSCK'S SAKE TAKE SOME PRIDE IN YOUR WORK!"
This article is released under the OpenContent license.