Why Software Sucks: Matilda and Hansel
After 20 years in the business, I’m finally starting to be able to explain why. This is #1 in a series.
Computer Science and software development have less in common than you might think. I’ll tell you why with an example from the movie “Zoolander”.
There’s a plot point where the savvy reporter, Matilda, sends the clueless male model, Hansel, to steal some files from a computer. Hansel puts his eyes up close to the iMac, whispering in awe, “the files are in the computer.” Later, at the climax of the movie, he smashes the round orange appliance to ‘release’ the files.
Hilarious! But, not wrong physically. For an electronic device to store information, it has to make a physical change. Any memory device with its capacity filled up physically weighs slightly more than the same device empty. How can that possibly be? Well, mass and energy are equivalent. A device containing more energy weighs more. The files really are IN the computer.
Wrong in the interpretation. The memory measures regions of energy or no energy, and those get interpreted as ones and zeroes.
They’re not really ones and zeroes. They’re regions of energy or no energy. If we think of them one and zero, we can use math techniques to manipulate them and produce desirable results.
Very useful, but not the same. We care about the files, the interpretation. Do you care if your software is mathematically correct? No, we care whether it does what we expect — manipulate our data in useful ways, while keeping it reliably protected.
As software developers, we’re like Matilda telling Hansel what to do. We can’t reach into the computer ourselves; we have to give instructions to this clueless idiot to be carried out for us. Sometimes Hansel interprets our instructions in ways that we did not intend. That’s a bug, friends!
I have tremendous respect for and interest in Computer Science. But CS is a branch of mathematics, and math is to software development as linguistics is to creative writing. We use math, but we’re ultimately judged on what the machine produces.
A good writer may occasionally use un-grammatical constructions, like a sentence fragment or dangling preposition, in the service of communication. Good programmers give instructions to make sure Hansel behaves as intended, not to satisfy mathematical correctness.
Like writing comes with ethical responsibilities, a programmer has a moral responsibilty to protect users.
Even male models.