// Open Source & Teaching
What I Learned Teaching 750,000 People How To Code
Explaining code to beginners exposes every assumption you make. Here's what teaching at that scale actually taught me, about teaching, about the internet, and about running it like a business.
Somewhere past a few hundred thousand students, the lessons stop being about code and start being about everything around the code: how to explain it, how to record it, how to support it, how to run it as a business, and how to keep doing it for years without burning out or going stale. Here's what actually stuck.
Recording yourself is its own skill, separate from knowing the material
Knowing how to code and knowing how to talk clearly into a microphone while coding are two completely different skills, and the second one does not come free with the first. Your pacing changes when a camera's rolling. Your "ums" multiply. You suddenly notice every awkward pause while you think through a problem you'd normally solve silently. The first dozen or so recordings I made were rough, not because I didn't understand the material, but because performing understanding out loud, in real time, for someone who can't ask a follow-up question yet, takes practice on its own.
Editing audio and video is a skill you have to earn too
Nobody warns you that teaching online eventually turns you into a part-time audio and video editor. Cutting dead air, smoothing a stumble, levelling out a mic that got quieter halfway through a take, these are learnable skills, but they take real time to learn well, and bad editing is distracting in a way that actively hurts how well someone learns from the video. A lesson with a clean cut is invisible. A lesson with a clumsy cut pulls the student's attention away from the code and onto the seam.
Fluff sells, but it doesn't teach
There's a real, measurable pull toward padding lessons out: longer intros, more "in this video we're going to..." recaps, extra energy and excitement stretched over less actual content. That style genuinely performs well in front of an algorithm and even sells courses. It does not teach well. The students who finish a course and can actually build something are the ones who got the information accurately and got to the point quickly. I had to consciously choose "accurate and to the point" over "longer and more engaging" more times than I expected, because those two goals pull in opposite directions more often than you'd think.
Never underestimate the internet, or the user experience
At a few hundred thousand students, every assumption you've ever made about "nobody will notice that" gets tested and loses. A typo in a slide. A code sample that works on your machine but not a slightly different version of the interpreter. A confusing paragraph you half-meant to rewrite. If you think nobody will find the flaw, you're wrong, somebody will find it within the first week, and they'll usually be kind enough to tell you. The user experience of a course, how a lesson is structured, how errors are explained, how easy it is to find the right file, matters exactly as much as the technical accuracy of the content. Scale doesn't forgive sloppiness. It just takes slightly longer to notice it.
Scaling is a problem, and hiring help is the actual answer
One person answering every question, editing every video, and handling every support request works fine at a small audience and becomes mathematically impossible well before you reach hundreds of thousands of students. Scaling teaching isn't just "work harder," it's recognizing the specific points where you need to hire help, editors, moderators, support staff, so the parts of teaching that actually require you stay yours, and the parts that don't get handed to someone who can do them well.
Teaching technology is uniquely hard because technology doesn't sit still
A history lesson doesn't need a rewrite every eighteen months. A programming lesson often does. Frameworks change their syntax, package managers change their defaults, entire tools get replaced, and a perfectly good video from two years ago can quietly become a video that teaches a beginner the wrong way to do something, through no fault of the person who made it. Staying relevant means accepting that a meaningful share of your past work has a shelf life, and budgeting the time to revisit and refresh it rather than treating it as finished forever.
Always offer a way to get unstuck
A video is one-directional. A beginner who gets stuck on a video with no way to ask a question just quits, and usually blames themselves instead of the material. Offering actual support, office hours, Q&A, a community, a comment section someone actually reads, turns a one-way broadcast into something closer to real teaching. It's also where you learn the most about what's actually confusing, because the questions that come in are rarely the questions you expected.
Invest extra time in the students who invest extra time
Most students take what they need and move on, and that's completely fine, that's what the content is for. But a small number of students show up consistently, ask sharper questions over time, and clearly care more than the average pace requires. Those students are worth a disproportionate amount of your personal attention. Over the years, a handful of those star pupils turned into genuinely excellent software engineers, and I'd like to think a bit of that extra attention, back when they were still beginners, had something to do with it.
Teaching internationally means running an actual business
Once students and revenue are coming from all over the world, "just a side project" stops being an accurate description of what you're running. Proper corporate structure, proper accounting, and proper handling of international payments and tax obligations aren't optional paperwork, they're what separates a hobby from something that can survive scrutiny and actually support the people depending on it, including you.
Teach what you believe in and actually know
It's tempting to chase a trending topic just because it's trending. I learned to resist that pretty early: I create content on subjects I genuinely believe in and genuinely know well, and I don't create content on subjects I don't. Students can tell the difference between an instructor who deeply understands the material and one who's a day ahead of them in the documentation, and the first kind of course holds up far better over time.
Teaching makes you learn faster, not just your students
Preparing to explain something well forces a level of understanding that passively knowing how to do it never requires. You can write working code without ever being able to say clearly why it works. You cannot teach it that way, not to 750,000 people, because the questions that come back will find every gap instantly.
Diversify your platforms
Putting every course, every student relationship, and every dollar of revenue on a single platform means a single policy change, algorithm shift, or account suspension can take all of it away in an afternoon. Spreading content across multiple platforms, and keeping a direct line to students that no platform controls, is not a nice-to-have, it's the difference between a bad week and a company-ending event.
Platforms take 90%, 90% of the time
It's a strangely consistent number across this industry: a lot of course and content platforms land right around a 90% cut, leaving the person who actually made the thing with the remaining 10%. That's not a complaint about any one platform specifically, it's just the economic reality that shapes every decision about where to publish, whether to build your own audience independent of any single platform, and how much platform risk you're willing to carry in exchange for their reach.
Stopping means falling behind
Pausing content creation for a few months doesn't just mean a quiet period, it means other instructors kept publishing, kept showing up in recommendations, and kept building the relationship with new students that you stepped away from. Teaching at this scale isn't a project you finish, it's closer to a publication you have to keep running, and falling behind is a real, visible cost, not an abstract one.
Flashy editing doesn't reliably sell courses
I tested plenty of flashy video effects over the years, transitions, animated overlays, all the production polish that looks impressive in a trailer. Nice to have, genuinely, and it can make a preview clip look more professional. But it rarely moved the number that actually matters: course signups. People sign up because they believe the course will teach them what they need, not because the thumbnail had a slick zoom effect.
Today, it's almost all chatbots
The landscape has shifted again. A huge share of how people learn to code today runs through a chatbot instead of a course. That's not inherently bad, a good model can get someone most of the way there, genuinely close to 95%, if they know how to use it. The difference comes down to what the student is actually asking for. Prompting a chatbot to explain a concept, walk through the reasoning, and check your understanding is learning. Prompting it to just hand over a working answer so you can move on is a shortcut that skips the part where the understanding actually sticks. Teaching people how to code now includes teaching them how to prompt for learning instead of prompting for shortcuts, and that's a genuinely new skill nobody was teaching a few years ago.
750,000 people is a strange number to sit with. It's not really about the number. It's that at that scale, every weak explanation, every stale video, every bit of fluff, and every flaw in the user experience eventually gets found by someone, and every bit of care you put into getting something right eventually reaches someone too. That trade held up the whole time.