JS Community, we need to talk
Abdullah Alhusaini
Posted on February 15, 2024
First off, I'm new here say hi!
If you ever took a look at the javascript ecosystem. You'll notice that there are meny popular projects like React, Vue, Angular, Svelte, Solid etc.
Then we have other projects like is-even and is-odd.
Now, I believe in personal freedom. You can publish whatever library or framework you want. But why do these 2 npm packages have over 500,000 weekly downloads?
Then we have what I like to call the leftpad crisis.
Then on top of the base frontend frameworks (React, Vue, etc) we have even more frameworks like Redwoodjs, Remix, Nextjs, Nuxtjs, Gridsome, Vuepress, etc.
Do we want to be known for the projects we build. Or the frameworks we keep reinventing?
I want to build interesting software. Switching frameworks every few days won't really help me build something cool.
Lets compare the JS ecosystem to php.
- In php, we have one big framework for web development (laravel)
- in javascript, we have a million options
This is one example, the same theme repeats itself if you look at Ruby or Python.
Now, I am a fan of having multiple options. But having too many options isn't something that helps us create awesome apps.
In a world where the best minds in a community focus on fewer projects, the quality of the work is higher.
But in JS land. Every great developer is making their own frameworks instead of working together.
We would be much better off if we focused on one or two projects per usecase. Maybe we only focus on 2 frontend frameworks and push those forward.
Rich Harriss in his talk "Rethinking Reactivity" criticized React's design in a few areas. He then goes on to explain why Svelte is a better option because it does not have any of React's pitfalls.
But what if he focused on correcting React's mistakes instead? In that scenario, all react projects would've gotten a huge improvement without having to switch frameworks.
Now, imagine if Evan You also worked on React.
You see where I'm going with this?
If all these great minds worked together on one project. We would have a great tool for creating frontends for our applications.
We need to consolidate
I hope I've demonstrated why we need to consolidate our tools.
But, since we can't really persuade every framework author to drop their own projects and collaborate on one project, whats the next best thing we can do?
What can you do?
Stick to the tools you know
If you know a tool really well, there is no reason to switch to another tool. Some tools change over time (I'm looking at you, Nextjs and your app directory) some other tools remain stable.
Libraries and frameworks should be static. If they keep changing then that means that you need to keep relearning the basics.
How can you create your awesome app if you keep learning new ways to submit a form because Vue 3 introduced a new API?
I'm sticking to my tools, now what?
After you have laid out your tools. You can now start actually creating awesome software.
Who follows this approach?
In makebook.io Pieter Levels explains how he builds all his websites with php. He also mentions that a lot of people hate on php. He ignored them because he could use it to build good websites. NomadList and RemoteOK were built with this methodology and they give him great annual returns.
Meanwhile, if you keep switching and learning new things, you'll never have time to build cool software.
Frameworks are there to help you build things. Not to waste your time.
Lets make it our creed to use our tools to build new software.
A construction worker doesn't perform a deep analysis on which hammer to use to hit a nail. He just picks one up, and hits the nail.
Treat frameworks and libraries like our construction worker treats his hammer.
Conclusion
This post was a bit all over the place. Its my first blog post after all. But I hope it helps you build cool stuff and avoid your time getting wasted. Cheers!
Posted on February 15, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 27, 2024