[Disclaimer and credit: I do not remember where I first heard about the brush turkey, but I suspect it was Douglas Adams during a book signing for his book Last Chance to See. The details of the brush turkey are exaggerated and maybe even wrong, but this is to serve a narrative purpose, so any zoologists can sit down, this parable isn’t for you.]
The brushturkey is very prone to boredom. Every time she lays an egg, she thinks to herself, “sitting on these eggs for several weeks is going to be really boring. There has to be a better way. I have an idea! I will build a compost pile on top of the eggs, and that will keep the eggs warm and I can go have fun.” She gets up and runs all over the place gathering organic matter and piles it up on top of the clutch of eggs. She has to gather quite a bit in order to get the temperature high enough to incubate the eggs. But finally she finished! Now she can relax!
After a while she thinks: “I better double check the temperature.” She sticks her head into the pile. “That feels too cool, let me gather more material”. She runs around gathering more material to add to the pile.
A few hours later she checks again. “Oh, no! It’s too hot, I’ll have to take some of the material off”. More running around.
She repeats this, constantly running around adding and removing material from the pile to keep the temperature just right. Day in and day out for several weeks.
Those with ears, let them hear!
As a programmer the urge to automate tasks is constant. However, there are many times when the effort of automating the task may be far greater than just doing the task manually. Let’s say you have a task which takes you 15 minutes, but with some automation you could reduce that to 5. So you spend a day writing a program to do the automation. But you only do that task twice a month. It will take years to break even.
You would have been better off sitting on that egg!
Some of my early career was spent working on Sun workstations and servers. Way back then they had the slogan “The Network is the Computer”. Clearly, that slogan is the old wine in the new bottle labeled “Cloud”, but that’s another story. As I sit looking at an hourglass or a spinning “progress” icon, I realize that the original slogan was incomplete, the full version is:
“The Network is the Computer… and that’s why it sucks so bad.”
Though, to be fair, the network is not the problem, as such. The problem is the way it is used. Specifically, the apparent pervasive assumption amongst programmers that all network operations have zero latency, infinite bandwidth, and are 100% reliable.
There’s an old saying that I first heard a couple of decades ago:
Good. Fast. Cheap. Pick two.
I was listening to an NPR story about Moore’s Law. At first I was thinking that it gave us computers that are “fast” and “cheap”. But we never got the “fast”. The workstation on my desk 25 years ago was just as fast as the one I’m sitting at now. Ah, but that old Sun 3/50 didn’t have to do nearly as much as my current workstation, which is true. That old workstation didn’t have color, virtual desktops, animated 3d icons, streaming audio and video, bloated web and email programs, etc. But somehow I got my work done just as quickly. What’s happening here is another law is cancelling out the “fast” part of Moore’s Law: Wirth’s Law. That law basically says that software is getting slower faster than hardware is getting faster.
Case in point: 25 years ago, when I fired up Emacs (which served as my text editor, mail and usenet reader, and web browser), the 4 megs of virtual memory it used had a noticeable impact on other users. Nowadays Emacs is a lightweight. Right now my email client (Thunderbird) is taking up 1.2 gigs of virtual memory!
Moore, himself, acknowledged that his law has its limits, and some people place that 10 years in the future. Thus far, Moore’s Law has managed to just barely keep up with Wirth’s law. So what happens when the latter tops out? I seriously doubt the latter has any limits, as I have yet to see a limit on human wastefulness and incompetence.
I guess we’ll need to go back to the trinity listed above. Maybe we need to start doing something toward “good”: stop adding new bells and whistles and go back and fix bugs, make software more reliable and more informative when something does fail, and generally reduce all the frustration that everyone feels when using computers. In other words, do the opposite of what we’ve been doing. It’s a massive challenge, and, by and large, unfamiliar, virgin territory.
I know this is probably another one of my utopian dreams, and will probably never happen, but it would be nice if, for once, I could encounter someone using a computer and not feel the urge to apologize on behalf of my profession.