Courses
Practical courses for the work we actually do. Pick one, finish it, and apply it.
This is for people who have never written a line of code and want to start with Python. You will install Python, write small programs that actually run, and learn to read your own errors instead of guessing. If you skip the basics and copy code you do not understand, you will get stuck the first time something breaks, and something always breaks.
This is for people who can already write small Python scripts and now need code that other people can install, read, test and trust. You will set up projects that don't fight each other, split code into modules and classes, work with real files and CSV data, and prove your code works before someone else finds the bug. If your code only runs on your laptop and only you understand it, it is not finished yet.
This is for people who write Python every week and now need it to handle bigger data, more work at the same time, and other people installing it. You will build real decorators, process data one piece at a time, catch type errors before they run, choose between threads, processes and asyncio, then package and profile your code. Most of this is not needed for small scripts. When it is needed, not knowing it gets expensive.
This is for people who have never written JavaScript and want a web page that reacts when someone clicks, types or submits. You will write JavaScript that runs in your browser, change the page with it, and read your own errors instead of pasting code you don't understand. If you skip the basics and copy snippets until something works, you will be stuck the first time the console turns red, and it will turn red.
This is for people who can already make a page react with JavaScript and now need code that survives real projects: Node and npm, modules, classes, real data, waiting for APIs, and tests. You will set up projects that install the same way on every machine, split code into files other people can read, handle JSON and dates without losing data or a day, and prove your code works before a customer finds out it doesn't. If you skip this level, your code works on your machine with your sample data, and breaks the first time the data changes.
This is for people who already write Node and browser JavaScript with modules, async/await and tests, and now need code that keeps working under real load. You will learn how closures and this really behave, how the event loop orders your code, how to run, limit and cancel async work, how to process data that doesn't fit in memory, how to catch type bugs without switching to TypeScript, and how to ship a package and find slow code and memory leaks. If you skip this level, your code passes every test and still falls over the first week it runs in production.
This is for people who have never written HTML or CSS and want a page that looks right when they open it. You will write real markup, style it with CSS, open it in your browser, and stop pasting code you don't understand. If you skip the basics and copy snippets until something looks fine, you will be stuck the first time a layout breaks on a phone, and it will break.
This is for people who can write basic HTML and CSS and keep getting layouts that break on phones. You will build responsive pages with Flexbox and Grid, reuse components, and fix the overlap and overflow bugs that show up after launch. If you keep stacking float hacks and random media queries, every new page will reopen the same fights.
This is for people who already build responsive pages and now need styles that survive real traffic, real content and a real team. You will structure CSS with layers and tokens, lay out with Grid and container queries, ship faster pages, and audit accessibility before launch. If you keep adding rules on top of rules, every release will be harder than the last.
This is for people who already write basic JavaScript and want the compiler to catch wrong data before the code runs. You will add types to JavaScript you already know, compile with tsc, and stop guessing what a function accepts. If you skip the basics and add any until the red lines go away, you keep the old bugs and add a build step.
This is for people who can write basic TypeScript and now work on code that other people also touch. You will use generics, utility types and third-party typings so shared code stays honest when the data changes. If you keep reaching for any and as at every boundary, the compiler stops helping exactly where the bugs are.
You'll design declaration files, deep conditional types and migration paths so a real codebase stays typed as it grows.