(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:
|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 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:
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 ofin 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 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?