Back to archive

The myth of the self-taught programmer

by Jacob E. Dawson

I taught myself how to program. I spent a few months hunched over a keyboard, eyes slowly atrophying in the dim artificial light, and bit by clumsy bit The Knowledge magically flowed into my brain and somehow became lodged there.

Except, that’s not true.

The truth is that I didn’t teach myself how to program. I had teachers. I had dozens, if not hundreds of teachers — mentors who taught me the ins-and-outs of i/o; the ifs of if-thens. While it’s nice to bask in the warm, fuzzy glow of boasting that you’re self-taught, it’s disingenuous. If I had truly taught myself how to program that would be insanely awesome, and impossible. If you know how to code, you had teachers, whether or not they were physically present in a Comp Sci class or asynchronously sharing nuggets of gold via well-written blog posts.

It might seem like I’m splitting hairs with this argument, but it’s actually important to make the distinction, because in the modern world of web-development we stand on the shoulders of others who have laid out a path for the rest of us, whether through direct instruction or by sharing open-source software without which our revolutionary to-do app simply wouldn’t work.

This year there has been a lot of talk (at least in the front-end community) about ‘JavaScript Fatigue’ (including deliciously recursive JavaScript Fatigue Fatigue) and a sense of overwhelm that comes with all of the open-source libraries & frameworks out there. This reinforces the point that good teachers have never been more important for beginners — teachers that can help guide the new entrants through the noise and onto a path towards competence. Every noob that makes it over the initial hurdles of learning to code has the opportunity to become a teacher — and from that replenished community will come the next great (free!) tools. It benefits us all to do our best to teach & guide beginners, and to acknowledge the interdependence of our skills.

good teachers have never been more important for beginners

As with any type of communication on the internet there are always some inherent chunks of negativity embedded within open conversations. As a community we should do our best to reject this. Although new programmers might not all be children, we need to accept their questions as though they are — responses to ‘dumb questions’ should be more ELI5 and less EVIL. Once upon a time it was you who was asking what a server was, or trying with furrowed brow to understand the difference between CSS and HTML. (Of course, there are always a special few who came out of the womb understanding closures…).

There is the saying that ‘hindsight is 20/20’, and some of us are guilty of looking back at the path that we’ve taken and seeing a single, self-generated stairway to coding heaven. Yet, anyone who has actually learned to program knows it’s tough as hell and there is no way to make it through without helping hands. It’s easy to fall into the trap of saying that you’re ‘self-taught’, because at some point in the process we begin to suffer from the curse of knowledge, which makes it very difficult to understand the beginner’s mind. That doesn’t mean we shouldn’t try. It’s easy to take all of the (free!) information offered to us for granted and not pay-it-forward. That isn’t the right approach. Each one teach one — that should be the motto of the modern developer.

It’s important to shatter the myth of the self-taught programmer because it shows all of us in the coding world that the cycle of learning & teaching should continue. When you reach a certain point it becomes not just an opportunity, but an obligation to continue that cycle.

Thanks to (some of) my Teachers:


Eloquent JavaScript — Marijn Haverbeke

Essential JavaScript Design Patterns — Addy Osmani

You Don’t Know JS — Kyle Simpson

Idiomatic JS — — Rick Waldron & Contributors

JavaScript Allonge — Reg Braithwaite

Speaking JS — Dr. Axel Rauschmayer

Human JavaScript — Henrik Joreteg

Modern JavaScript — Nicolás Bevacqua


JS The Right Way — Multiple Contributors

Superhero.js — Multiple Contributors


Pony Foo — Nicolás Bevacqua

Coding Horror — Jeff Atwood

Eric Elliot on Medium —Eric Elliot

Rising Stack — Multiple Contributors

CSS Tricks — Multiple Contributors

A List Apart — Multiple Contributors

Code.Lengstorf — Jason Lengstorf

Milan Petrovi Blog — Milan Petrovi

Todd Motto — Todd Motto — Multiple Contributors

David Walsh Blog — David Walsh


A Drip of JavaScript

Pony Foo Weekly