(This post is for May’s The Shift)

When I started learning how to web, I was terrified of “programming”. I knew it was hard and confusing. And if you did it wrong, computers would crash, or real programmers would make fun of you on the internet.

But HTML, I could do that. Through HTML I grew confident enough to try real programming later.

Think about the differences between publishing a web page and making it onto the App Store:

Requirement App Store Web
Hardware Apple computer Any computer
Software Xcode (≈3GB download) Text editor, browser (came with your computer)
Registration Apple Developer Account Your web host
Money $99 Free hosting isn't rare
Examples to learn from What Apple/app developers publish What web developers publish + every site there is
Time waiting Couple of weeks for review As fast as you can upload an HTML file
Quality standards A lot None
Knowledge Objective-C (maybe Swift) HTML (maybe CSS)
Cost of mistakes App won't compile You can't screw up HTML that bad

The web's requirements get harder over time; you'll outgrow free hosting, worry about all devices instead of just iOS, etc., but getting started is much, much easier.

Even the web's low fidelity compared to apps is a virtue here. It's like LEGOs: building is tempting because it looks primitive. It looks like you can do it! And it's not so pristine and slick that you feel anxious jumping in.

When compared to "real programming", the web is crude, limited, kind of laughable, and friendly.

Why is this important?

When beginners stop entering a field, it dies.

The head designer of the tabletop game Magic: the Gathering talks a lot about keeping the learning curve of the game low, so he can keep his job as head designer. He has a graph to drive the point home:

As the designers add more things to the game, its complexity goes up. But beginners always start with the same amount of knowledge of the game: none.

The same is true of the web. As its capabilities improve, it grows more complex and harder to learn. But beginners still start with zero knowledge. (And the less complex, the more experts can focus on important things, but that's for another time.)

I keep an ancient copy of Web Pages for Dummies in my bookshelf to stay humble about the learning curve. The beginning talks about how pressing Enter in your HTML doesn't output a line break on the web page. It's a necessary quirk (can you imagine how unreadable HTML would be if it didn't do that?), but still a gotcha. It's utterly unfamiliar to learners—what user-facing program does that?

The book also explains how to type < and >, and it needed to. We have a huge amount of such assumed knowledge. What else have we internalized?

What else can we make simpler?

What barriers to entry are we creating?

2,385 3 26