Hacker News new | past | comments | ask | show | jobs | submit login
Yer a Developer, Harry – Programming Is Magic (atomicobject.com)
71 points by frd91gt on Dec 18, 2014 | hide | past | favorite | 24 comments



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.


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."


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.


I won't say I was a huge fan of the series either. I only ever read the first two books, and even then have only vague memories of them. I had to look stuff up online to fill in the details of my parent comment. But it had a pretty interesting way of treating magic, and that's one thing that was memorable.


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.


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#...


it's not just a question of beholdenness or privilege - the real distinction between technology-as-magic and social-engineering-as-magic is how the bill for your force multiplication is paid. if you manipulate/organise people into doing things for you you have definitely achieved some sort of leverage, but there's no real feeling of magic because you know that at the bottom of the pyramid, other human beings have had to put the work in.

what makes magic magic is that the forces you manipulate and control come for "free" - not in the sense that you don't have to do any work to access them, but in the sense that any output over and above your input is drawn from some more fundamental reservoir of universal energy.


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."


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!


> 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."


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!


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


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. :-)


Cool. Which language?


There is nothing wrong with adding a little fun and imagination to anything in your life. I don't know how many people fool themselves, versus viewing things with a particular narrative (magic) for enjoyment.


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."


Priceless. Imagine that on a job description.


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


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.


At least he is honest about his motivations.


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


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


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


I bet Harry ends up in computer security.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: