
Yer a Developer, Harry – Programming Is Magic - frd91gt
http://spin.atomicobject.com/2014/12/18/programming-is-magic/
======
Kronopath
I'm reminded of a scene from the _Inheritance_ series of books that I read
when I was younger. The main character, Eragon, was telling his mentor how he
blessed an orphan baby with the magic words " _Atra gülia un ilian tauthr ono
un atra ono waíse skölir frá rauthr_ ".

His mentor's response was "Wait what? Are you sure you said _skölir_ , and not
_sköliro_?"

Turns out while he had meant to say "May luck and happiness follow you and may
you be shielded from misfortune", he instead said "May luck and happiness
follow you and may you be _a shield_ from misfortune". Because of this, the
girl grew up prescient, supernaturally aware of when other people were in
danger or about to be harmed, and compelled to do anything in her power to
protect them from it.

I'm pretty sure I've seen problems that are almost as bad in some of the
codebases that I've worked with.

~~~
muaddirac
I read those when I was younger as well. I came away not a huge fan of the
series because of the (in my opinion) poor writing and huge plot holes.

Why didn't he just bless the kid with "May you be a killer of Galbatorix, and
may no one else die in the process."

~~~
ravitation
The extremely derivative plot didn't help either. I actually came away with an
active dislike of the series.

But, I like the connection to semantic errors.

------
bjterry
I think it's interesting that people associate programming with magic, but I
don't think it's the most enlightening comparison. The actual magic, from my
perspective, is social skills and the ability to organize/manipulate people.

People like magic narratives because magic acts as a force multiplier for a
single person. The force multiplier in real life is the ability to organize a
bunch of other people to do stuff for you. The real Merlin is Steve Jobs or
Obama. Just like magic, the ability to do this is generally an inborn talent
(theoretically it could be learned, but you can't do anything to change
whether it's the kind of thing you like to do, just like you can't do anything
to make yourself like golf enough to make yourself practice as much as Tiger
Woods).

There are weaknesses to this comparison, of course. In real life when you are
using social engineering to further your goals, you become beholden to the
network of interests that support you (e.g. politicians, customers). Also, in
real life the ability to gain positions of influence is not distributed in any
egalitarian manner.

One of the reasons magic is appealing to programmer types, is because they
tend to be weaker in these areas, and they wish that they could have access to
the same sort of power, but based on the things they are good at (studying
tomes, complex incantations) rather than the things they aren't good at
(networking, salesmanship). If magic were real, I would definitely be
dedicating a lot of time to mastering that, but even knowing the power of
politics I am not particularly interested in becoming a politician.

~~~
current_call
The ability to organize other people is not the only force multiplier in
reality, and it's very little like magic. Programming is like magic because
software is divorced from reality but also steeped in it. SICP does a better
job of explaining this then I can.

"We are about to study the idea of a computational process. Computational
processes are abstract beings that inhabit computers. As they evolve,
processes manipulate other abstract things called data. The evolution of a
process is directed by a pattern of rules called a program. People create
programs to direct processes. In effect, we conjure the spirits of the
computer with our spells."

"A computational process is indeed much like a sorcerer's idea of a spirit. It
cannot be seen or touched. It is not composed of matter at all. However, it is
very real. It can perform intellectual work. It can answer questions. It can
affect the world by disbursing money at a bank or by controlling a robot arm
in a factory. The programs we use to conjure processes are like a sorcerer's
spells. They are carefully composed from symbolic expressions in arcane and
esoteric programming languages that prescribe the tasks we want our processes
to perform."

The only other force multipliers I am aware of that have the same property are
language and math.

SICP source if anyone wants to read the whole thing.
[http://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-9.html#...](http://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-9.html#%_chap_1)

------
dyeje
Reminds me of this quote from the Mythical Man Month:

"The programmer, like the poet, works only slightly removed from pure thought-
stuff. He builds castles in the air, from air, creating by exertion of the
imagination. Few media of creation are so flexible, so easy to polish and
rework, so readily capable of realizing grand conceptual structures.

Yet the program construct, unlike the poet’s words, is real in the sense that
it moves and works, producing visible outputs separate from the construct
itself. It prints results, draws pictures, produces sounds, moves arms."

------
Zeronimo
I think it is a bit sad so many people see programming as pure magic. A
programmer should not, in my opinion, see itself as a wizard doing tricks.

Maybe see yourself as a modern magician instead: you have to work hard, you
have to do the tough job, you have to know every tiny part that can go wrong
during the show. Only then your work will appear to the audience as a great
piece of wizardry.

Never fool yourself!

~~~
mklim
> you have to work hard, you have to do the tough job, you have to know every
> tiny part that can go wrong during the show

I absolutely agree. My intent wasn't to describe programming as magic in the
sense that it's easy or as simple/nonsensical as waving a wand around. It's
very much a discipline. I was drawing the parallel to magic in that it's an
ethereal exercise—you describe what you want to happen, and then the letter of
your description comes to pass. Getting this description to accurately model a
moving system is a huge part of what makes the field so challenging.

dyeje was on the mark with their fantastic quote further up the thread:

"The programmer, like the poet, works only slightly removed from pure thought-
stuff. He builds castles in the air, from air, creating by exertion of the
imagination. Few media of creation are so flexible, so easy to polish and
rework, so readily capable of realizing grand conceptual structures. Yet the
program construct, unlike the poet’s words, is real in the sense that it moves
and works, producing visible outputs separate from the construct itself. It
prints results, draws pictures, produces sounds, moves arms."

~~~
Zeronimo
The message was not indeed directly at you but more for new comers in the
programming world. Just to remind them that without the hard work part,
they'll end up doing small tricks at dinner. They can't expect to run the show
in Vegas. And yes I feel very alike Gandalf some day, summoning intruders: you
shall not pass!

~~~
marvy
Summoning intruders? That sounds like the last thing you'd want to summon!

~~~
Zeronimo
Sure. Banning them indeed. For those interested in the why, in some language I
speak everyday you could say something that would translate literally into
"summoning someone to do or not to do something" as "summoning intruders not
to enter". Thanks for pointing that out. :-)

~~~
marvy
Cool. Which language?

------
Loomx
Great quote! - "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."

~~~
hcarvalhoalves
Priceless. Imagine that on a job description.

------
vec
This is one of the more fun corollaries to Clarke's Third Law: "Any
sufficiently advanced engineering is indistinguishable from wizardry".

------
vonseel
Entertaining post.. I tend to relate programming (in my mind) to engineers and
architects designing a large building, or civil engineers designing a city...
but considering "software engineering" is a named discipline, I guess that's
not a novel idea.

------
spdegabrielle
At least he is honest about his motivations.

------
uvTwitch
Author ought to start referring to themselves as a technomancer, it helps the
mystique.

------
lordbusiness
I found this to be a thoroughly enjoyable lighthearted piece of reading.
Bravo!

------
JacobEdelman
Wait, is there any other reason to want to become a wiza- I mean programmer?

------
0xdeadbeefbabe
I bet Harry ends up in computer security.

