wasp/web/blog/2023-02-02-no-best-framework.md
2023-02-02 12:25:15 +01:00

70 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "The Best Web App Framework Doesn't Exist"
authors: [vinny]
image: /img/best-framework/pretending.png
tags: [framework, StateOfJS, react, webdev]
---
import Link from '@docusaurus/Link';
import useBaseUrl from '@docusaurus/useBaseUrl';
import InBlogCta from './components/InBlogCta';
import WaspIntro from './_wasp-intro.md';
import ImgWithCaption from './components/ImgWithCaption'
<br/>
The web app framework you choose doesnt *really* matter. Well, it matters, just not as much as others would like you to believe.
The fact that so many libraries and frameworks exist in 2023, and that **the best one** is [still hotly debated](https://joshcollinsworth.com/blog/self-fulfilling-prophecy-of-react), proves my point. Its the web developers biggest “first-world problem” — a problem thats not really a problem. On Maslows *Hierarchy of Developer Needs,* its definitely near the top (ok, I made that up 😅)
<br/>
<ImgWithCaption
alt="hierarchy of developer needs"
source="img/best-framework/hierarchy-of-dev-needs.png"
/>
<br/>
<!--truncate-->
For example, according the the [StateOfJS](https://2022.stateofjs.com/en-US/libraries/front-end-frameworks/) survey, there were 5 Front-end Frameworks with good retention in 2018, now there are 11 in 2022. Thats a 120% increase in a matter of 4 years, and thats not even taking into account the hot meta-frameworks like NextJS, SvelteKit, or Astro!
<br/>
<ImgWithCaption
alt="State of JS 2022"
source="img/best-framework/state-of-js.png"
caption="A growing family of frameworks..."
/>
<br/>
These are great developments for the space, overall. They improve things like developer speed, bundle size, performance, and developer experience. But they also make it damn hard for developers and teams to make a decision when trying to decide which to use for their next project. Its even worse for beginners, which is probably why they just go for React — which, of course, is perfectly fine.
And I think all of this is OK, because in the end it doesnt really matter which one you choose. When it really comes down to it, all that matters is that the framework you chose:
- Is stable
- Allows you to move quickly
- Allows you to reach your end goal
Why? Because most of them are built around the same concepts, have proven themselves capable of performing at scale, and have communities you can engage with and learn from.
React might be the most prominent in job descriptions, but if youre looking for a new role and only have experience in Vue or Angular, I cant imagine it would take you more than a week to build a side-project with React to display your ability to prospective employers.
On the flip side, if youre a beginner or Junior dev, once you have the basics of HTML, CSS, and JS under your belt, it doesnt really matter what framework you learn. I personally started learning backend development with Node/ExpressJS, but landed my first role as a Frontend developer with Angular. In my second role I used NextJS, and now I work with [Wasp](https://wasp-lang.dev) (a full-stack framework built on top of React and ExpressJS). [Developers never stop learning](https://www.youtube.com/watch?v=gl5HvBpUbt8), so its kind of a non-argument to deride any specific framework — unless it really sucks, but then no one will continue to use it anyway.
<br/>
<ImgWithCaption
alt="Use what works"
source="img/best-framework/midwitwasp.jpeg"
/>
<br/>
So, in the end, use what works. Because in 99.99% of cases, your choice of web framework will not decide the fate of your project.
If youve done a bit of research and found a framework that suits your needs and you enjoy using it — use it. Theres really no good reason not to.
<br/>
<hr/>
*Want to stay in the loop? → [Join our newsletter!](/#signup)*