You should learn to code.


by Justin Crawford

(This post is adapted from a presentation I gave recently to a lunch meetup of the Boulder Chamber of Commerce's 2140 group.)

A proliferation of online courses promising to teach you how to write computer code have attracted some big celebrity names this year. But even if you're not a billionaire mayor or a celebrity BBQ sauce taster (OK, I totally made up that part), you probably should learn some coding skills. Below I offer six good reasons to try.

Open Pit Barbeque Sauce, 1970's by Roadsidepictures, on Flickr

First, let's be clear about terminology:

  • For the purpose of this article, I mean the same thing when I say "coder", "developer", "hacker", or "programmer". It's big fun to divide all software makers into subtly different teams and then encourage them to face off against one another, but that's not what I'm doing right now.
  • When I say "code", "develop", "hack" or "program", I really just mean, "create coded instructions that a computer can interpret to produce some result." Computers are machines that implement logical instructions. Coders write the instructions in code.
  • When I say "coders write the instructions," I mean they use a keyboard, not a mouse. Coders don't drag & drop code. Coders do write drag & drop code, though. Sometimes in drag.

Now that we're talking about the same thing, here are six reasons you should learn to code.

REASON 1: If you learn to code, you will be a better communicator in the future.

Some autumn day in 2020, you will find yourself feeling a little chilly despite the full body silver spandex suit you're wearing. So you will say something out loud like, "Hey house, please turn up the heat three degrees." Then a computer will make the thermostat in your house rise by three degrees. But if, instead of that, you said, "Dang, it's cold enough in here to freeze the fuzz off a snow weasel," your house would definitely pretend it didn't hear you.

We will soon interact with computers using a variety of inputs besides mice and keyboards, including the spoken word. But in the near future when we speak to computers, we will have to speak to them in a dialect they can understand, just as we speak to children and dogs and our bosses using special vocabularies. And learning to code will make you much more fluent in this dialect.

Cheddar Drone 03

Lest you fret: A day will also come when computers understand the part about the snow weasels. But the road to that bright horizon is paved with a lot of zany mishaps. Meanwhile, learning to talk and think like a computer will grant you power and convenience you only dream of now. And in the distant future it will enable you to pilot a cheddar drone using only your mind!

REASON 2: If you learn to code, you will make cool new friends!

Most of the people on the internet are not coders. But if Facebook came down with a debilitating case of tyrotoxism or something and fell off the internet, most of the remaining people online would be coders. Many would be fairly pleased, too.

Anyway, a whole lot of people on the internet are coders and many of them spend a lot of time helping each other learn stuff. They're usually smart and nice. And despite stereotypes to the contrary, most coders are also pretty hip.

You think I'm joking? Imagine a group of people who are so passionate about their work that they do it on the weekends, too, and then give the fruit of their efforts away for free to anyone in the world. Most coders consider this standard procedure. They do it because they love it and the community expects it of them. It is their way of influencing history. Like artists.

Now, imagine you are trying to learn to code and you run into a problem. If you diligently attempt to resolve it through reading and experimenting and you still can't solve it, and then you ask for assistance in an online forum of coders, you will almost always get a friendly, helpful, and downright generous response from someone you've never met whose time is worth a lot of money. If you participate and contribute to the community, you may even befriend or become such a person. You thereby join a global fellowship of coders and will eventually receive by post a discreet, mysterious book of rites.

leave the area leave the area by dno1967b, on Flickr

On the other hand, if you don't try to resolve your coding problems yourself and instead ask straightaway for help, you will be roundly ridiculed. Kind of like if you asked a bunch of artists how to operate a can of spraypaint. The artists would scoff and say, "RTFC, man!", which is short for "read the effing canister".

REASON 3: Adventure, fortune and freedom await you!

There is no question that computer programming is a lucrative occupation for many people who are good at it and also for many who are not. As of this writing, a senior Ruby on Rails coder can make about fifty thousand dollars per hour. So if you like money or the things money can buy, you might want to get a job as a coder.

On the other hand, you may not care about money, in which case would you mind buying me a beer? Thanks.

That link you just clicked goes to InspirePay, a payment startup founded by Mark Fischer. Mark charges nothing for the service -- so, since you're buying, do you mind getting him a pint too?

Like many software entrepreneurs, Mark seems to be motivated in part by the sheer adventure of it. The world is stacked a mile deep in problems that software can solve but has not already solved. These problems will occupy software innovators for decades to come. Entrepreneurs like Mark are like early pioneers crossing the tall grass prairie, like legendary cattlemen on the high desert, like the first gold miners in the Sierras. They see the promise of adventure and they accept. They go first.

Learning to code gives you a gleaming toolkit to carry into this vast new frontier, a frontier where you will find countless opportunities to make a fortune and take wild risks. Sounds exciting, doesn't it? I'll drink to that.

REASON 4: If you learn to code, you can kill a lot of birds with one stone. More than two birds, anyway.

I have a friend who runs a software development firm similar to dojo4, except his company works primarily with the PHP programming language instead of the Ruby programming language. He doesn't pronounce PHP as "fup", but I do.

Most software development firms get a lot of inquiries, and a fraction of these inquiries turn into service contracts. Along the way a firm often produces a proposal describing the work contemplated. This is a challenge: Proposal writing is repetitive, time consuming, and often fruitless.

So my friend wants to automate his ideal proposal generation process with a web application. He's hacking on it nights and weekends using the laravel framework. Plenty of technology service companies do this kind of thing; some even make a business out of it it.

When he's done, my friend will have:

  • A tool that satisfies his own business need, making his sales process more efficient and fun.
  • A software product that he can either give away to generate goodwill, or sell to generate revenue, or both.
  • Launch experience (which is the best kind) with a new coding framework (laravel) that he's A) been looking for an excuse to work with and B) would eventually like to offer as a service to his customers. Big Scary Bird by anna_debenham, on Flickr

That is at least three dead birds; it could be more depending on how you count. So if you hate birds or something, now's your chance to do something about it.

REASON 5: You have everything you need to start coding.

Computer programming is a difficult occupation, no doubt about it. But it does not take any more smarts than being an actuary or an attorney. It is probably less stressful than being a paramedic or a stockbroker. And it involves practically zero large predators, unlike zookeeping. Coding is mathematical and conceptual, abstract and very dynamic, and it is not for everyone. But look, you're already on REASON #5 of a long and irritating six-reason blog post. You clearly have the most important characteristic of a good coder: speed-reading focus patience interest.

Are you reading this on a computer that is sometimes connected to the internet? If not -- if you're reading this in print -- I'd like to thank you. I've always wanted to be published on paper. It's really, like, flammable, you know? Do you mind lighting a corner of it on fire right now? Yeah baby.

Now, if you're truly interested in coding and you have a computer that is sometimes connected to the internet, then you have everything that most people who code ever had when they started. Most of them didn't have computer science training. Many of them didn't have college degrees at all, or even high school diplomas. All good coders are self-taught to some extent. With your computer and your interest, you can do just what they do:

  • Build a development environment -- a sandbox where you can fling computer code around without harming other things on your computer that you care about. For example, you wouldn't want to damage those blurry photos of enchiladas you took during that road trip to Tucson.
  • Try and make something simple in code, starting from a tutorial online or from a crazy vision in your head. 
  • Make lots of mistakes on the way, but who cares? You're in the sandbox!
  • Read lots of documentation online.
  • Maybe ask some questions online, explaining that you already read the documentation.
  • Repeat these steps for a while, and do it again every time you want to learn something new.

Seriously, you can learn to code no matter who you are. Everybody starts somewhere.

REASON 6: The world needs more people who understand, care about, and can make things with the raw materials of our brave new society.

This cannot be overstated: Humanity has experienced only a few inflection points as important as the one that makes it possible for me to say this to you right now. No matter how you feel about the media, smartphones, blogs, Facebook, the internet or computers, you must understand that they are radically, rapidly transforming culture and society in every direction at once. _Your financial transactions and the football scores and your precise location on earth, pictures of your baby and adoring comments from its grandmother, your job and your friends and your secrets, your final conversation with someone you love, groceries on store shelves, missiles in their silos, the stoplights and the cars waiting at them and the people sitting in the cars and the news on the car radios -- all that and more every day is connected and controlled through an information network that humans created with code _.

When it appeared, the printing press made written material much more accessible to many more people. Still, not everyone immediately learned to read and write. The people who did learn to read and write are the ones you and I descended from. They fully participated in the new world that the printing press made possible. They controlled economic activity. They made the government and its laws. They recorded the histories. They propagated the world's religions. They owned a portion of the culture, and they fought for their part.

The ones who didn't learn to read and write? Most of them lived well enough, just like most people for most of history always have. But a universe of richness and capability eluded them. Fantastic novels, inflammatory pamphlets, laws and holy books: All were just mysterious symbols to the illiterate. Just like code is to so many people now.

Go to it! by drbexl, on Flickr

Today, too many smart people fear or disregard code, and shrug away their disregard as acceptable and normal. But code keeps food on our shelves. Code brings us all we know of world events. Code makes the miracle in your pocket (sorry fellas, I meant the smartphone) possible. Code enables the unfettered personal expression we call a right. Code is the weapon that will win future wars. Code is the medium of future artworks. Code is the conduit of freedom.

Now, since you read this far, you obviously have plenty of time. So c'mon -- why don't you make some code? Here are a few places to start: