We recently started an online full-stack development bootcamp. So far, we’ve covered the basics of HTML, CSS, and JavaScript, and we’re about to dive into ReactJS and NextJS. In the process of teaching these topics, I’ve realized that web development today is simply too complex and requires familiarity with too many concepts.
Imagine someone you know who doesn’t know any programming. Now, think about what it would take for them to build a web application. They’ll have to start with the basics: HTML, CSS, and JavaScript. But they can’t stop there; they’ll have to learn about responsive design using CSS frameworks like Bootstrap. They’ll need to learn NodeJS as well to install libraries and use frameworks.
But who uses plain HTML & CSS these days? They’ll also need to learn React, with its props, state, hooks, and numerous helper libraries. But React alone won’t do; they’ll need to learn to use a framework like NextJS too. Both React and NextJS have recently made significant changes, like adding server components and the app folder, respectively. These are complex features that require careful understanding.
Then there’s the whole client-side, server-side, and edge stuff. What goes where? What are the best practices? Which JavaScript APIs and functions are supported in each environment? It’s easy to get lost. And while React and NextJS are moving in this direction for good reasons, the complexity can discourage newcomers.
But wait, there’s more! They’ll need a backend, which means learning SQL & Prisma or the intricacies of a serverless backend like Supabase. To avoid errors, they’ll need to learn TypeScript, which can feel like a jungle. And on top of all that, they’ll need a sense of good design and UX and have to use component libraries for even the simplest things.
As someone who’s been programming for 15+ years and teaches programming for a living, I still find myself shooting myself in the foot while building web apps multiple times a day. Aren’t these tools and libraries supposed to make things easier?
I know this post feels like a rant. However, I do love these tools because they enable us to build amazing things quickly. But we need to ensure we’re not leaving people behind as we develop these tools.
We need to find a way to let beginners experience the joy of building software without spending an eternity learning all the necessary skills. I’m not sure what the answer is, though. Maybe a new JavaScript framework that doesn’t assume knowledge of HTML & CSS is needed. Or perhaps a high-level framework in another language that uses existing tools under the hood. Even a no-code or low-code tool that allows assembling apps visually could be the answer.
The first step for building & shipping good software should be easy, so beginners can stay motivated as they navigate the complex web of languages, frameworks, and libraries. We need to find a solution that’s friendly and approachable. And we need to figure it out sooner rather than later.