tech

The Six Labors of Learning to Code


These days, everyone’s learning to code. And that’s great. But developer evangelists often forget to mention one drawback: code is the equivalent of an ancient scroll you find in a horror movie. It’s powerful, sure, but its weird characters turn out to be written in blood, and eventually twist your soul into a veritable Möbius pretzel of evil. Web development is my job, and I’m confident learner – Sanskrit! I learned the Sanskrit alphabet for Christ’s sake, which means my The Evil Dead character would be toast – and I still find that code has unique ability to fill you with table-flipping levels of rage and frustration.

the necromonicon from the Evil Dead

I really don’t get how code evangelists can fail to mention this danger. Maybe they’re afraid to scare away potential learners. Maybe they simply didn’t find it that hard to learn in the first place, having the good sense to make a pre-emptive deal with Beelzebub. Or maybe it’s because talking about your frustration at your failed code, rather than the code itself, seems too much like talking about your feelings. I don’t know.

We can’t keep acting like it’s easy, though. It isn’t right. It’s a lie that makes people feel bad about themselves, and drives away precisely the potential coders whose brains could really add to the conversation. Too often, I hear a well-intentioned programmer saying, “It’s easy,” right before they attempt to teach someone something. Stop. Just stop. You simply cannot promise it’s going to be easy, when you’re teaching someone a new skill.

But if we’re not going to lie anymore, we should probably find some other means of encouragement.

There’s always the hero’s journey. Belly of the WhaleEnkidu, sort of thing. As the persistence of comic books, Buffy, and Cory Booker shows us, hero myths are a) universal, and b) pretty effective inspiration when you’re trying to accomplish something hard.

So, since Hercules had twelve labors and Theseus seven(ish), I decided we needed some heroic labors for the beginning coder. I’ve drawn liberally from Greek myths, as well the post-Classical tendency to reboot violent hero myths as noble analogies. Hercules, for example, was suddenly sporting a metaphorical “club of virtue,” rather than a real, dead-making club – my students always loved that one.

The Hydra of File Structure

Most beginning coders put everything – Javascript, CSS, whatever – in a single file, and to my mind, that’s fine. While multi-folder structure is a best practice, the reasons for using it aren’t obvious until later. But eventually, you’ll have to move to the proper file structure and furthermore, debugging will always require you to figure out relationships between all the folders and files. You’ll move from one thing to another to another then back again, and you’ll feel rather like you’re fighting a hydra, which would grow two heads every time one was cut off.

a hydra

I can’t think of a better analogy for multitasking (which human beings can’t actually do, incidentally). The mere act of trying to focus on the multiple files living in different in folders, you are, by definition, doing a really hard thing that requires buttloads of concentration.

Side note: if you disturb a web dev’s train of thought, they might turn into a hydra. So you should leave them the hell alone.

The Yak of Yak Shaving

(Yes, yak. Get off my back. Theseus fought a fucking turtle, okay?)

Even if you have Oprah-like clarity about what, exactly, you’re trying to accomplish with your code, odds are you won’t get to it right away. You have to download the right text editor. You have to install node.js. You have to update your operating system, or the right compiler, or troubleshoot the bug that doesn’t appear anywhere on Stack Overflow or Google, just to find a not-very-rewarding answer. Oh-so-many tasks stand between you and what you really want to accomplish.

The technical term (one of my favorites) is yak-shaving. Alternately, you can call it “all the unexpected steps standing in the way of my real goal.” The bitch of it is, once you’ve figured out the latest in the seemingly endless steps, it may have taken all the energy or time you had planned for the thing you really wanted. But don’t give up. Tomorrow is another day.

Sisyphus would do here, too. That guy constantly rolled a boulder up a hill, only to watch it roll back down.

The Chimaera of the Fucking Browser Cache

The browser cache has produced the most exquisitely pained expressions I’ve ever seen. For good reason. Let’s say you’re working on your first project and feeling good about seeing your CSS changes appear. This is awesome! You are wielding fearsome power and the browser is obeying your will!

a chimaera

But then suddenly, it’s not. Nothing you do in any of your files makes any difference. Unbeknownst to you, the browser in its infinite wisdom has decided to save energy by caching the page, i.e. not really loading it any more! This is fine and good for web browsing but terrible for development. And you can tell it not to cache, but it doesn’t always listen. (You need to keep Inspect Element open at all times, in Chrome, and sometimes use CMD-R inside Inspect Element.)

What’s annoying is, in this situation, you can’t believe what’s in front of your eyes – and that’s grounds for a serious existential crisis.

The Three-Headed Dog of Arrested Development

At every level of learning, coding can quickly return you to adolescent levels of confusion, rage, and euphoria. Witness this exchange:

Parents tell me that in children, excessive moodiness and flashes of anger can be a sign that the brain is about to have a growth spurt. I feel that way every day at work, and I’m just going to assume it means I’m learning because the alternative is too grim to contemplate.

The Cyclops of, Um, Trolls

Some people aren’t very nice. Some people delude themselves into thinking that, if they know more trivial facts than other people, they are smart. These people are assholes, and you shouldn’t hire them. But you’re not in a hire-or-fire position, yet, and you’re running into them online, in forums, and possibly even in the first few jobs you get. Or maybe it’s just a “helpful” jerk at your Meetup:

Personally, when faced with one of these twits, I think of the Cyclops. As a race, the Cyclops symbolize the complete absence of any civilizing influence, and that’s really what we’re dealing with here: lawless, ignorant blowhards. I’m not suggesting you try any physical violence – Odysseus himself employed savvy, for the most part — I’m just reminding you that these people are uncivilized brutes who should be avoided when possible, and outfoxed when not.

This is why most hero myths include helper characters, and even helper gods. So, gods willing, you’re not going it entirely alone. Whether you’re coding in a group of maenads or checking in with your local centaur, or maybe pouring some libations to Athena, it’s imperative to find people who won’t act like jerks when you ask for help.

The Gates of Hades

There are people in this world whom machines simply obey. This is a fact. If you’ve tried the same command three times, you’ll call over your local computer guru and they’ll do exactly what you’ve been doing already, but this time, it will work.

And then you feel like a crazy person. I mean, come on, aren’t computers supposed to be all objective and scientific and shit? The mere presence of an individual should not in any way make a difference. And yet it does. (My current working theory is that these people just have a quantum field.)

Any hero worth their salt faces death; one of the best things about the programmer lifestyle, on the other hand, is its low-risk actuarial implications. But let’s melodramatically call self-doubt the potential death of self-esteem (if you were with me on the “club of virtue” you can’t really stop now). Why is this so hard? Why does it look so easy when [other person X] does it? Am I just an idiot, or what? Constant. Brain hurting. Like banging your head against a wall. To mix metaphors, it’s like that mirror where you see yourself in The Neverending Story, and it’s no fun.

But that’s why we need hero myths. As Steve Martin observed, delusions of grandeur are a perfectly acceptable way to make it between periods of genuine inspiration. Hell, I got through my dissertation solely by watching two episodes of Buffy every day at lunch. So, while you’re learning, use whatever hero myth works for you.