Learn to code. Or don't.

Reasons to learn to code:

  • You have an offer for a job that involves coding, or could benefit from it

  • Existing tools don’t serve your needs well, or at all

  • You enjoy it

“Learn to code” is the common refrain for what to do when you’re poor. It’s misguided at best, malicious indifference at worst.

I had a problem trying to learn to code: I mastered all the syntax of a language, got comfortable understanding the standard library documentation, followed guides on applying common frameworks and libraries.

And then…

Well, what next? I can do it well enough, but all my hobbies have great tools already. None of the open source stuff I might contribute to comes close.

And no one will give you a programming job in the current environment if you don’t have a GitHub bursting with personal projects. So doing it as a job is out as an option if you don’t lean that way. Some people enjoy it and have no problem filling out a GitHub, or they have enough problems with the tools available to them that hacking on them is the best path forward.

This is not me. Of course, I reserve the right to change my mind without explaining myself. I probably will if it happens, but only because it’ll make a good article.

Most people will not make a better living programming than they could pursuing things they actually care about. The people at the top levels of the field are hard at work coding themselves out of a job by lowering barriers. This is a good thing for society, but it’s bad for salaries. Accessible means more competition: it opens the field to people who maybe aren’t brilliant with syntax, but can piece together elegant or at least functional solutions from off-the-shelf components. The gold rush is on the way out, and “programmer” is turning into an actual job and losing its value as a status symbol.

There is a future, probably not far off, where the shine wears off and it’s enough to be able to pick up syntax quick. Where companies hire for ability to learn and do the job, not ability to pass gatekeeping exercises.

But let’s say you’ve decided to forge ahead and learn to code. Here’s some tips.

Behind “where do I start with programming?” is “what if I pick the wrong language or framework?” For every possible path, there are fifty popular tracks. I think this overwhelm is a problem of approach.

No one tells you that it’s impossible to know which path to take before trying a few. You have to learn how to make a loop and instance a few objects or toss a few functions around in different languages until you have an idea of what appeals to you, and what well-worn paths or broad fields you can explore with those appealing aspects.

Other people’s opinions—theory, tutorials, forum posts, reviews, podcasts—are for when you have enough experiential knowledge to tell whose advice fits your needs and inclinations.

So that’s it. Pick a language. Mess around in it. Make some toys. Pick another language. Repeat. Like that framework? Goof around in it. Does that tutorial video look promising? Watch it, then see what others said about it.

Given enough time, you’ll get a sense of what you gravitate toward and discover the magic words to find other stuff that employs the bits you like. Then, and only then, are you prepared to get something out of some Elder Programming God’s treatise on Python bytecode. You aren’t ready for Python bytecode. Experts in Python sometimes don’t even know there is a bytecode.

Did you know Python list comprehensions and their expanded equivalents compile to bytecode with different performance profiles? Down this treacherous path lay premature optimization and wasted time until you know what to do with that knowledge, or if you need to do anything.

Go play. Have fun. You used to get this when you were a toddler. Did you worry about who had the best take on toddling form? Of course not. Be like a toddler and bump into things at random until something clicks. The sheer wall of frameworks and languages and platforms and tools doesn’t exist until you’ve picked enough at random and played with enough to filter the pile into something you can reason about. Then you realize the wall is a staircase that branches off in different directions.

Your assignment: pick a language. Find it on Learn X in Y minutes. Find some way to apply the different patterns to something you care about. A good clue is to see what libraries are available for that language, and how many target your interests. Try to implement one! Can’t find any? It’s a harder road, but someone had to make the first library. Maybe you’ll start a trend. Maybe you’ll figure out why no one wrote a library. You can write and publish a warning for others.

  • If you like listening to music, find a library that cracks open audio files and reads their metadata, then do something useful with it. Can you out-do Spotify’s recommendation algorithm? Look up how to make a K-nearest neighbors (KNN) algorithm.

  • If you make music, build a tool to open your project files and see which chords you use the most. This one’s trickier than it seems. Answering “what is a chord?” fills books.

  • If you’re a writer, do some statistical analysis on your writing and see what insights you can pull out. See where your findings meet, diverge from, or clash with the writing advice people give.

  • If you’re an artist, crunch the pixels and see which colors you use the most. Try to generate a set of pallets and compare what’s “right” in color theory to what you make and what looks good to you.

My advice to you, is to stop listening to advice until you know what to do with it. Do first. Find what you enjoy, then what you can do with it, then how you can do it better. Some people take on programming as a hobby and write code for the sake of writing code, but for most of us it’s a force multiplier. We need something to multiply.

After that

I am going to be honest with you: if you fully intend to make a go at this, you need to eventually have a passing familiarity with what nerds like to call idioms, patterns, and algorithms. Or something to that effect. Roughly translated: all the ways to do stuff that other people found after beating their head against countless dead ends.

For example: you’ll often encounter advice in the form of “don’t roll your own…” and it’s most often attached to crypto. But only because the hazards of getting encryption wrong are higher than with most things. Find the patterns. Find the idioms. Find the algorithms. Find the well-documented pitfalls. Then roll your own, if that sounds like fun, or if the existing stuff doesn’t fit your needs.

You’ll want to know this stuff eventually. Play, practice, have fun. But as you do, seek out a good book on common programming patterns. Things that transcend programming language tend to be called patterns or algorithms. Your bubble sorts and such. Languages often have their own word for the way things are done in their community. If you’re exposed to online games at all, you’d call this the meta. And like in games, it’s always evolving. In Python, for example, things in line with the meta are pythonic. For the rest without a word, idiomatic is the term. So if you want to find good ways to do something, search something like “idiomatic way to do [x] in [y language].” This is the stuff that most people get bogged down in trying to learn. Any good guide will cover this stuff, but do follow up with other perspectives. Truth comes out when ideas clash, but you don’t know what truth looks like yet.

Concerns about efficiency and security, which the meta generally focuses on, don’t really apply until you post your code up for others to use.

One caveat that you should care about from the start: there are different ways to mangle and manage data, and computer science has a good handle on what to use and when. I had a great list of these algorithms bookmarked somewhere on GitHub a while back that gave a rough overview of the common algorithms and examples in popular programming languages, but it went missing. You can guess and fumble your way around for writing personal code, but you should look up battle-tested ways of handling data for anything you let other people use.

Wikipedia has a huge list of algorithms you can do a page search on (Ctrl+F in most browsers) to find something suitable for what you’re working on. It’s more unwieldy than the list I had. Most languages implement these in their standard libraries, and they’re made by people who know computer science and practical programming, so you probably won’t improve on them by rolling your own implementation.

History is cancelled

Grade school curriculums erase the rough edges and rotten cores of history. By the time you reach a point where any of these missing details are taught, or even accessible, the rewritten history is not easily dislodged.

I try to take this awareness into interactions with people who say ignorant things. I try to show the same patience and understanding shown to me over my many and vast ignorances. If my angle on something is better than yours, it’s only because I listened to people whose angle was better than mine.

Information is sparse even in our high-speed interconnected world. Perhaps more so because of all the noise. It’s easy to point to people in past times who Got It. Abolitionists existed, after all. They Got It. Or at least by some quirk of ideology believed the treatment of some people was wrong even if they didn’t fully recognize the humanity of those people. But the majority of people of a time fall victim to its popular narratives.

Some commentators in our modern time of social media, falling victim to the era’s narratives, will tell you that one mistake is enough to end your social existence. They call it cancel culture. I don’t believe it’s as big a deal as it’s often made out to be.

As a budding, insecure queer who didn’t understand their feelings or know anyone who might have guided me through it, I called every bad thing “gay” back when that was fashionable before a teacher explained why it was bad. “What if you were gay?” Lady, you had no idea. This was at the tail end of the plague that wiped out queer elders, so us ‘90s kids were on our own in a society that had mellowed out from the gaybashing ‘80s to the casually homophobic ‘90s. Watch “Paris Is Burning,” check IMDB, and see how many hands you need to count people in it who survived past the 2000s and how young they were. They should be alive and well, but most aren’t. Nobody beat me up, but being alone in a society that understood me as well as I understood it---poorly---left injuries that are still healing.

Does it seem dangerous to admit these things in a “cancel culture” environment? I’m sure there’s someone out there who would hold an adult responsible for a mistake made and learned from as a child, but I don’t plan to edit to suit them.

The logic of cancel culture worriers goes that one mistake is enough. I’ve made tons of mistakes and learned from them. Admitting this should be insta-pariah by the worry-logic. I think about the luck I had in having elders to pull me aside and treat me with the care an ignorant child needs. I think about how most people don’t have that, and end up making the same mistakes into adulthood where those mistakes have real consequences for others, especially those they have power over. I think about how much would have been different if I’d had even one queer person in my life who’d had any real life experience. The closest I had was a friend who I just thought was quirky, but turned out to be a trans woman when we met up again. Now I understand why her dad kept making her cut her long hair to something more masculine. He wasn’t just worried about her resemblance to Kurt Cobain.

I’ve made yet more mistakes as an adult and learned from them, often right out in public on social media. I fearlessly swing my foot around knowing it might end up in my mouth. Just like everyone who has or will practice patience with my ignorance, I understand I might be the first nonbinary or generally queer person someone has ever met.

“Cancel culture” isn’t some new phenomenon. It’s the latest growth from apocalyptic soil watered with a bloody history our institutions would prefer we forget. A hate mob on Twitter can quickly propel you to just enough temporary celebrity to bring out every kind of human, good and bad, all in one indecipherable cacophony. The character of individual messages ceases to matter because they don’t resolve as individual. But it’s not new. The din of a real mob with torches blends in with one person off to the side telling them to chill out. What’s new is that the historical targets of these mobs can now turn mob fury on others. It still doesn’t make anything better. I won’t lose any sleep over J.K. Rowling being run out of decent company for her ignorant comments on trans people, but the subculture of misinformation people like her find when confirmation shopping under the guise of research is still there. The false histories they share, the lies they cling to for dear life as they try to explain away other people’s existence.

People on the boot end of society aren’t fragile. We don’t wilt at mere ignorance given voice. We won’t “cancel” you because you said something wrong. To quote Uncle Frank in response to a family member’s kindly ignorance: “I understand that’s the best you can do.” I understand people say these things. I understand they mostly mean well. You have to pair it with something sinister before I get out the Pitchfork of Gentle Correction. I say I, not we. There are people who get out the pitchforks early. It’s usually on social media or in blog posts where there’s little threat of violence in response.

They’re mostly people whose elders, the people who might guide them to a fierce but strategic advocacy, were murdered by police or mob violence, thrown in prison for bullshit reasons, or allowed to die in a plague. People like me were left in the camps by the “good guys,” and things have only improved in little pockets of the world. And we seem to be headed toward a stark regression. If you can bring empathy for the guy who got fired from Google for circulating a paper that made his colleagues uncomfortable, you can bring it for people who are dealing with a strange world with no one to talk to who gets what they’re going through.

“History is written by the victors” doesn’t just mean the losers get to be ignorant of history. Everyone is ignorant of the truth. We didn’t know the “good guys” of World War II left people like me in the camps, or chemically castrated the gay guy whose work in cryptography helped end the war. We didn’t know the pile in that famous book burning photo was substantially from the era’s equivalent to a queer center. We didn’t know the good guys loved eugenics, then a world craze for years, and mostly disagreed with the Nazis on how to go about it. Mass murder was mostly off the table, but sterilization, forced reeducation, and stealing children was quite popular among former British colonies. Still is. Nazis took notes and inspiration from the people who wanted to punch them.

We sure didn’t know Texas didn’t get the memo on Emancipation until soldiers marched over the apocalyptic ruins of the Indian Removal Act to let them know slavery as it was practiced was over. Not that it was actually over.

Perhaps you were fortunate to have an education and experience that included these things, just as some people in that time long ago had an education and experience that led them to support abolishing slavery. This is not the norm.

All our queer elders were wiped out by malicious indifference during the AIDS crisis. Vast swaths of black elders were and still are sent off to prison in service of the so-called war on drugs, or just murdered in the street by cops and vigilantes taught to see them as Other. Indigenous peoples, who faced the worst of the victor’s attempt to rewrite history, try to piece together some kind of heritage as they forge ahead creating new culture even as people parade around in fake war bonnets whooping like idiots while braying about how they’re celebrating “The Culture.” They don’t know. They don’t listen when told, but it’s how they’ve been taught to handle conflicting histories by their elders. The people who cancelled history.

"Cancel culture" is the villain in an episode of Scooby Doo. Pull the mask off and it's just colonialism trying to steal and rewrite the history of yet more territory.

Further reading/watching

Tim Ferris on what happens when you get famous. As someone who’s been on the receiving end of an angry Twitter mob, so much of this is familiar.

Zack Airas on his racist upbringing. I grew up in more or less the same area a decade or so later and the situation wasn’t much better. A friend’s moms had a pride flag a street over, but the KKK recruiter was closer and more available. Elders steered me away from that one, too.

Netflix documentary on the 13th amendment. Free to watch.

The Case for Reparations. This is essentially an abridged chronicle of racism in the US, past and ongoing, with a gentle suggestion at the end for congress to study lingering effects of slavery.