Skip to main content Accessibility Feedback

Modern JS is amazing. Modern JS is trash.

Way back in March, I announced that I was working on an advanced version of my Vanilla JS Academy.

I originally hoped to launch it early summer. Then late summer. Then early fall. I built 80 percent of it, threw it out, and built it again. Then I threw that out and rebuilt it again again.

I’ve been having a really hard time creating this course in a way that I haven’t with any other course I’ve built before.

Last week, I finally figured out why.

Modern JS is trash

When students told me the kinds of things they wanted to learn in advanced course, they said things like…

  • How to structure large projects
  • Building advanced apps with APIs and two-way data
  • Token-based login with things like OAuth and JWT
  • Offline web apps

These are awesome ideas!

But as I started creating some projects around these topics, and building them out, I invariably ended up drifting towards modern JS practices. Things like…

  • ES imports and exports
  • JS-based routing
  • State-based UI
  • Single page apps
  • Build tools

And these things are, to me, the worst parts of modern web development.

I was building something using tools and approaches I actively avoid in my professional life. And I was doing it because it’s what’s expected. So it felt like an utter slog to get through, and everything I built, I hated.

Modern JS is awesome

Modern web development might be trash, but modern JS is awesome.

There are some many amazing methods and approaches that make stuff that was really hard before really easy. Service workers let you turn HTML, CSS, and JavaScript into fully-offline capable web apps that load instantly.

I love the modern JS platform (the stuff the browser does for you), and hate modern JS tooling.

What does that mean for an Advanced Academy?

Honestly, I’m not entirely sure yet. The way I see it, I have two options:

  1. Try again. But this time, use my approaches to things rather than trying to conform to what I see as bad modern practices. That would mean, for example, skipping JS-based routing and single-page apps in favor of multi-page apps and service workers.
  2. Pivot into other parts of the stack. I absolutely love working with beginners. I’ve been wondering if, rather than trying to go deeper into JS, I branch out with a project-based course on introductory HTML and CSS.

Either way, I’d love to hear your thoughts!