When I tell people about why I chose to become a software developer, I tend to give one of the following answers:
- I loved and wanted to make videogames.
- I participated in FIRST Robotics in high school and got hooked on tech.
- It’s a satisfying way to combine my desire to find definitive answers to tough problems with my desire to be creative.
But the real reason is much more embarrassing:
- I read a glut of fantasy novels growing up, and software engineering is the closest I could come to fulfilling my lifelong dream of becoming a wizard.*
Software as Spellcasting
Writing a program is the craft of describing exactly what you want a tiny chunk of reality to look and act like. You put down this description in an archaic and symbolic language, and then the Magic happens and you get to see your description play out in its own corner of reality.
Both spells and programs are (usually, ideally) descriptions of what the author wants to see. There’s an element of the intangible to both, since they both involve creating something out of nothing but thought. Software development is difficult not because of the laws of physics, or a lack of resources, but the cognitive difficulty in editing a written schema attempting to capture how a chunk of reality should behave. It involves a lot of reading, and thought, and careful writing.**
Compare the following:
Avada Kedavra
– Derived from Aramaic, “let this thing be destroyed”Person.destroy(harry)
– Railsism for deleting a record, presumably a member of the Person class named “Harry”
Note, there are slight differences here between writing programs and spellcasting: talented wizards can cast spells in a matter of seconds using nothing but their thoughts and a wooden stick. Programmers are still stuck writing their incantations down in a way that devices made of elaborately etched metalloids — powered by lightning energy gained from harnessing the power of the wind, water, or, most commonly, motion itself via the liquified corpses of ancient beasts that used to dominate the earth — can understand and execute.
Lines of Power
Speaking of, let’s compare some diagrams of the hardware:
I would like to point out that the idea of the lines being connected is intensely important to both summoning circles and circuits, and required for energy to flow through both. Breaking the current in either is done deliberately to directly change the behavior of the item.
A Motley Crew
Both fields also tend to have their gamut of colorful characters, like:
- self taught practitioners who just happened to pick it up in their tiny hometown,
- well-studied and respected craftsman from ivory towers that delve deep into the theoretical,
- wide-eyed would-be students who occasionally manage to get their own hands cut off, overworked half to death, or both,
- and the eccentric few who probably know and can do more than everyone listed above combined.
There are black hats who practice destruction, and white hats who try and defend against them. Practitioners of all sorts cause minor disasters for the general populace at an alarming rate (interdimensional portals popping up outside the castle and eating the West Wing, system shells being written to execute foreign code, servers having a tiny bug that means that they can be nudged to vomit up whatever private information they happen to be thinking about at that moment, etc.).
An Air of Mystery (Kind of)
The most superficial reason for my career decision last: the clothes. Cloaks are awesome. Unfortunately I can’t wear cloaks when I’m out and about, because apparently that’s “weird” and “socially unacceptable” outside of Renaissance Festivals. But I can wear hoodies to work every day. Not really that awesome on its own, but it was definitely a bonus and one of the deciding factors that convinced me to show up at my advisor’s office with the Declaration of Major paperwork ready to go.
Any sufficiently advanced technology is indistinguishable from magic.
—Arthur C. Clarke
Footnotes
* Full disclosure: my original dream was to become a dragonrider a la The Dragonriders of Pern. But the lack of telepathic, flying, tesseract-travelling, flame-throwing creatures in my childhood made me decide that wizardry was a more achievable goal.
** Sometimes I think about what the great editor wars of wizards would be (metal vs soft-tipped quill pens, parchment vs vellum, etching runes into flint vs quartz vs sandstone) and laugh about it to myself. I may be beyond help.
This post generated some good discussion on Hacker News.
1: Are you familiar with the CodeSpell series by Kelly McCullough? The Practice Effect by David Brin?
2: I recall (from half a century ago) it taking me a good year to internalize the semantic equivalence between Boolean Algebra and Predicate Logic, and the way logic gates work. I don’t remember not knowing, but I do remember the Aha! when it finally clicked. I’ve been building computers and coding ever since, for both a living and a life. The magic: there is a one to one correspondence between the symbology on paper and the flow of the electrons, and I am not required to be present to interpret the results, they are self-evident.
1. No, I haven’t heard of either. They both look interesting though, I’ll go check them out.
2. Yeah, makes sense. Awesome. :)
The book Structure and Interpretation of Computer Programs starts out with a similar comparison.
“The programs we use to conjure processes are like a sorcerer’s spells.”
You may be interested in CodeCombat. It’s an RTS where you have to write code quickly in order to fight.
One other programming/spellcasting book recommendation: Rick Cook’s “Wizard’s Bane” series.
Can’t agree with this recommendation enough.