Programming in the Twenty-First Century has a great piece with this title on why most programming language tutorials fail. Namely, they’re written by accomplished programmers who highlight the issues/concerns relevant to them (syntax, data types, quirks, etc.) not necessarily to a beginner who is far more focused/motivated by something like, “Build a simple blog with Python.”

I couldn’t agree more with this sentiment. When I was learning how to code I found it so frustrating that tutorials for beginners dove right away into advanced concepts without any baby steps or even context. And I couldn’t understand why. Now that I’m comfortable with several different programming languages, I understand why guides are written in this way. It’s how I would want to learn my next programming language but it’s not how I want to learn my first.

If you ask programmers why they became interested in learning how to code, the answer is always that they wanted to build something. A blog. A video game. An app. There was some larger goal in mind that allowed them to push through the frustration and confusion and learn what they needed to.

Books and tutorials for beginners should make more of an effort to distinguish between “total beginners” who have never programmed before and “beginners” who have some background and want to get up to speed. But most don’t. Really I wish we had a standard term for these two types of beginners which would save writers and readers a lot of time!


So what are some good resources for total beginners? Concept-first approaches I like are Learn Python The Hard Way, Invent Your Own Computer Games with Python, and JavaScript for Kids.

I’m working on my own Learn with JavaScript book that will introduce programming in an interactive, concept-first way. And a set of total beginner tutorials for Django, Django For Beginners, that takes a similar approach.