Good Magic vs Bad Magic (in computing)
Programming computers feels like wizardry. This is both good and bad.
The good kind of magic is when there is no magic. I like it when I find a tool or technique and feels like magic. Then I read the source code and that looks like magic. So I learn it and study it until it becomes familiar. Is the magic gone? No, if anything, it feels even more magical. Especially when the solution is far simpler than I would have imagined. Simple but surprising.
"It’s still magic even if you know how it’s done."
Magicians Penn & teller have made a career out of revealing how certain tricks are done while leaving audiences amazed all the same. The magic is in the skill, the effort, the performance, and the idea.
The control loop is the simplest kind of computing magic and programmers often learn how to write a loop so early in their journey that the magic is forgotten.
But I have never lost the thrill of making a computer do work in a loop, reducing what would have been a thousand actions done by hand into a simple script with a handful of variables that runs in milliseconds. That’s still magic to me, even though I know exactly how it works in great detail.
Add a conditional so that a loop does something different as the input changes and you’ve multiplied the magic.
Good magic always leads to more magic. You learn it and it the learning becomes a building block for understanding more powerful magic. You take the knowledge with you and it keeps paying out over time.
Bad magic
Good magic opens the mysteries to all; bad magic seeks simply to mystify.
Bad magic tries to keep the secrets to itself.
An "appliance" is a device that performs some finite number of specific tasks. Your options for using the appliance are provided by the user interface:
-
A toaster may have a single dial for toasting level
-
A clothes washing machine may have temperature and time settings
-
A microwave will have controls for a timer and perhaps power levels
A good appliance is a "black box" that performs its actions as if by magic.
Sometimes this is exactly what we want. I am perfectly okay with the rigid functions of the appliances in my kitchen.
But a chef or cooking enthusiast is limited by appliances. A skilled cook needs not appliances, but tools.
Tools are more flexible than appliances. A tool requires that the user understands, at least to some degree, what they are doing. A tool takes more effort, but that effort pays off over time. You can transfer what you learn about a tool to another tool. You can combine the use of tools in powerful new ways.
Generally speaking, an appliance always does something you could accomplish with one or more tools. The appeal of the appliance is convenience. You don’t have to learn anything.
The danger of appliances is convenience. Convenience is tempting, even seductive. You get the task done, but you don’t learn anything. Knowing how an appliance works may transfer to another appliance (though often it does not!), but it’s not a skill like the use of a tool.
And so it is with bad magic. Bad magic promises convenience, but it obscures its functioning in a black box. It does not assist in understanding how the process works. It is not flexible. You are limited to the interface you are given.
Bad magic locks you into its grip, "forcing" you to keep using it through the weight of momentum. When you use bad magic, it gets harder to learn the fundamentals that underlie its functions.
To be clear, appliances aren’t always bad magic. (I love having a washing machine!) But they’re from that realm. (Doesn’t the mere existence of a washing machine make you much less likely to learn how to hand-wash clothing?)
Computers make the creation of bad magic far easier than previous technologies. Some computing technology is strictly bad magic. Bad magic offers zero paths to understanding. Bad magic computing seduces, it captures you.
Beware of bad magic.
Back to Computing