Don't call it magic

I recently wrapped up 6 months of teaching at General Assembly. I was teaching WDI - a 12 week course that turns beginner programmers into employable junior web developers. It taught me a lot about teaching. One subtle thing I picked up is that we shouldn't talk about magic when we talk to novices.

Novice programmers like to ask questions. Sometimes, those questions can't be answered immediately. Either the explanation would be too confusing, or take up too much time, or just be useless for them. So when the beginner asks, "But how did it know to do that?" we reply "Magic." We say "Magic" because developer culture is tied up with D&D, fantasy novels, and the idea that programmers are mystical and inscrutable. But what we really mean is "Don't worry about it." Rails isn't actually magic. You know that. I know that. The novices know that too.

But the beginners don't always hear "Don't worry about it right now." Sometimes, they hear "It's beyond everybody's understanding, and we're all OK with that." These brackets and semicolons are confusing to everyone. Just repeat it back phonetically and everything will be fine. Nobody understands it anyway.

That's not true - it's all understandable, every line, every word, every symbol. Some of the most productive teaching sessions have come from not allowing a student to handwave past a method called "updateList" and insisting they explain how it works, atom by atom. What's this line do? It assigns something to a variable. What's in that variable - what's its type? OK, where was it set? That second half, after the plus - what's it doing? Good. Next line.

One half of an instructor's role is imparting knowledge & understanding[1]. The knowledge will come in time if you immerse the students in it, but the understanding will be slower to arrive if students aren't looking out for it. There's a difference between "We don't have to look behind the curtain right now," and "The Wizard is real,"; the language teachers use should reflect that.


  1. The other half is instilling confidence & self-belief. Programming is hard, technical, confusing work; that gnaws at almost everyone. You have to reinforce that yes, they are programmers. What they are doing is programming - no matter how much they have to Google for answers and ask for help.  ↩