What is this?
This is a guide to how to be a web developer.
This website started as a conversation at JSConf US in 2014. Because JSConfs are more fun than other conferences, the conversation was in a swimming pool. I was complaining about hiring junior people out of bootcamps. They knew JavaScript and a bunch of web frameworks, but there was this whole body of unspoken knowledge that they didn't have that they needed to pick up before they could really be productive as web developers.
My friend Kwyn was an instructor at Hack Reactor at that time, and she suggested I come to Hack Reactor and give a talk about all of that stuff. So I agreed, and crammed everything I wished junior devs knew into one big slide deck. Then, worried that it wasn't enough material, I asked people on Twitter for stuff they thought junior devs should know, and got another big bucket of stuff. I delivered it without practicing first, and to my surprise it turned out to be over 2 hours long.
Despite being epically over-long, it was a big success. So much so that Hack Reactor invited me back to give it again, and then other bootcamps did, again and again, until I had given the same talk over 30 times. I kept polishing and refining it, so by iteration 30 it was pretty good (but no shorter).
I long intended to turn the talk into a website so more people could read it (and I could cram in even more material), and this is that website. If you prefer video, a recording of a version from 2018 is still available; all the earlier and later copies have vanished.
This is not a tutorial
What this site is not is a tutorial. Tutorials are very specific to a time and a technology. This is intended to be a guide to tell you all the things you can learn, so you can then go off and learn them. It's like you're in a big dark room, and this is a flashlight that swings around showing you everything in the room. You won't remember everything you see, but hopefully it'll keep you from tripping over the big stuff.
But what about coding agents?
The bulk of this guide was written in 2014, long before anybody imagined LLM-powered coding agents. But it was intended to be timeless advice: I deliberately left out things like syntax and frameworks and short-term trends, and the result is that nearly all of it stayed relevant (I have trimmed a few bits now that nobody writes code directly any more). This is stuff a web developer needs to know no matter what year it is or what stack you're working in.
But what about frameworks?
If there's anything you take away from this guide, it should be that frameworks are transient. Pick them up as they become useful, drop them when they get stale and bloated. The same applies to platforms, programming languages, infrastructure trends and development tools. Never tie your career to any single technical choice; don't let them become your identity. Your identity is web developer. Your job is to develop the web, both in the sense of building websites, and in the sense of advancing the web as a platform.
Bookmark this site
There is a ton of advice in here and not all of it will make sense to you right now, depending where you are in your career. So remember this site is here and come back and read it later, and different parts of it will stick with you at different times.
Finally: a disclaimer
This is a ton of opinions glued together. They're opinions drawn from my 30 years of being a web developer, so they're not totally unfounded, but they are opinions. Smart, well-meaning people disagree with me about lots of this stuff. So every sentence isn't going to be prefaced with "in my experience" or "I believe", but you should assume that it's there. But that means you should remember:
I could be wrong. And so could you.
In fact, all of us are wrong, nearly all of the time, because knowing stuff is something humans are bad at. Which brings us to our first chapter: humans are bad at knowing stuff.
Chapters
- Dunning-Kruger & Impostor Syndrome The psychology of knowing what you don't know
- Automate Everything Typing, the command line, editors, and git
- Communication Is Half Your Job Why understanding and explaining problems matters as much as solving them
- HTML & Semantic Markup Why HTML is more than just divs, and why that matters
- JavaScript & When You Need It Progressive enhancement and choosing the right level of complexity
- User Experience URLs, predictability, and solving the user's problems
- Performance Is UX Why speed beats every other feature, and how to think about it
- Mobile First Why you should design for phones first and desktops second
- Accessibility Why accessibility matters and how to build for it
- Databases A tour of databases and the trade-offs that define them
- Security The three principles of software security
- Testing Why tests exist, how to write good ones, and what to avoid
- Debugging How to find and fix bugs methodically
- Architecture & Frameworks Why simplicity wins, scale is a trap, and frameworks are about people
- Soft Skills & Career Advice Don't be a jerk, value yourself, keep learning, and share what you know
