Are there too many JavaScript frameworks?

Show notes

All Podcast episodes: https://maximilian-schwarzmueller.com/podcast I also have a Podcast with @academind: https://academind.com/podcast

Want to become a web developer or expand your web development knowledge? I have multiple bestselling online courses on React, Angular, NodeJS, Docker & much more! 👉 https://academind.com/courses

Show transcript

00:00:00: If you are a front-end JavaScript

00:00:02: developer, you got plenty of options and

00:00:07: alternatives.

00:00:08: You got plenty of libraries and

00:00:10: frameworks to choose from.

00:00:12: You got React, Angular, and Vue to

00:00:15: name the biggest, most popular ones.

00:00:19: But you also got very popular

00:00:20: alternatives like Svelte, or SolidJS, or

00:00:24: Quik.

00:00:25: And then you got other libraries like

00:00:27: HTMX, where you wouldn't write a lot of

00:00:31: JavaScript code, but which still uses

00:00:33: JavaScript under the hood.

00:00:35: So you got plenty of options if you want

00:00:38: to build complex web user interfaces

00:00:42: with help of JavaScript.

00:00:44: And of course, it's easy to feel

00:00:47: overwhelmed with all those options and

00:00:50: alternatives.

00:00:52: And the question is, how do you decide

00:00:54: which of those frameworks or libraries

00:00:58: you should learn and use?

00:01:00: Do we have too many of those?

00:01:04: Because I recall that when I released my

00:01:08: Svelte course in 2019, so that is a couple

00:01:13: of years ago, but still, when I released

00:01:16: that course, I was quite positive

00:01:19: regarding Svelte.

00:01:20: And that course, it's a good course.

00:01:22: It teaches Svelte.

00:01:23: And Svelte is a really nice library, if you

00:01:28: want to call it like this.

00:01:31: So I was really happy with that course.

00:01:33: And I was surprised that quite a decent

00:01:37: chunk of all the feedback I got on that

00:01:40: release was not about the course or

00:01:43: about Svelte.

00:01:44: It was about the fact that it's yet another

00:01:49: course on yet another front-end

00:01:52: JavaScript library or framework.

00:01:55: And a decent chunk of my students or of

00:01:59: the people who left feedback and left

00:02:02: comments seemed to feel

00:02:05: overwhelmed.

00:02:05: And I would say annoyed by the fact that

00:02:08: there is yet another JavaScript

00:02:12: framework and library to learn.

00:02:15: And I would say that's already the first

00:02:17: problem.

00:02:18: Also a problem on my part and maybe

00:02:21: from the entire JavaScript ecosystem,

00:02:24: but of course you don't have to learn it

00:02:26: all.

00:02:27: So if you feel like you have to learn it all,

00:02:29: that's not the case.

00:02:31: And people like me who create courses

00:02:36: and content on all these different

00:02:38: technologies can definitely give you the

00:02:41: feeling that you need to learn all these

00:02:43: things.

00:02:45: But just because I like learning all these

00:02:49: things and like working with all these

00:02:51: things, and just because I create content

00:02:54: on many of these libraries and

00:02:56: frameworks to help people learn it, does

00:02:59: not mean that you need to learn all

00:03:02: these libraries and frameworks.

00:03:04: And just because all these options exist

00:03:06: and new frameworks and libraries keep

00:03:10: popping up, does not mean that you

00:03:13: have to learn or use them all.

00:03:16: But I understand that it can sometimes

00:03:18: feel as if you do have to do that.

00:03:22: Because why do we have all these

00:03:24: options to begin with?

00:03:26: Why don't we just have one or two

00:03:28: libraries or frameworks?

00:03:31: Because to some extent that is the case,

00:03:35: or is a bit more the case you could say, in

00:03:39: backend web development I would

00:03:42: argue.

00:03:43: If you're using JavaScript for backend

00:03:46: web development, you of course have a

00:03:48: lot of frameworks and libraries you can

00:03:50: use there.

00:03:51: But the most used library still is

00:03:56: Express.js, if you're working with Node.js.

00:04:00: It gets millions of weekly downloads.

00:04:04: It's super popular, even though it

00:04:07: definitely has its issues and it's not under

00:04:11: super active development.

00:04:13: But maybe that's also the reason.

00:04:15: It's very stable and people know it and

00:04:18: therefore it's getting used by many

00:04:20: projects and companies.

00:04:22: And hence if you're working as a

00:04:25: backend JavaScript developer, there's

00:04:28: almost no way around Express.js.

00:04:32: Of course you can learn one of the more

00:04:36: modern alternatives and that might

00:04:38: make a lot of sense.

00:04:40: But if you want to land a job as a

00:04:43: backend JavaScript developer, you very

00:04:46: likely need to know Express.js.

00:04:50: And it's kind of similar to some extent I

00:04:53: would say, if you're working with PHP for

00:04:56: example.

00:04:57: Of course there are multiple libraries and

00:05:00: frameworks to choose from there as well.

00:05:02: But let's be honest, the clear winner in

00:05:06: the PHP world is Laravel.

00:05:09: If you want to work as a backend PHP

00:05:13: developer, and now that I say it, I guess

00:05:16: there are no frontend PHP developers.

00:05:19: At least you don't use PHP for frontend

00:05:22: code.

00:05:23: But anyways, if you want to work as a

00:05:25: PHP developer, you very likely need to

00:05:28: know Laravel.

00:05:29: It is the PHP framework.

00:05:32: You could even argue that it made PHP

00:05:35: popular again, if it ever was not popular.

00:05:40: And that's also a topic for a different

00:05:42: video.

00:05:43: But Laravel is super important for PHP

00:05:46: and therefore there as well.

00:05:49: We don't have like five or six almost

00:05:52: equally popular options as it seems to be

00:05:56: in the frontend JavaScript world though.

00:05:59: And of course there you could also argue

00:06:01: that React is the most popular frontend

00:06:04: JavaScript library.

00:06:06: And then Angular is also pretty popular,

00:06:09: especially also amongst enterprises and

00:06:12: big companies as it seems.

00:06:14: But you could argue that it's these two

00:06:17: mostly.

00:06:18: And if you just learn React and nothing

00:06:21: else, you'll probably also be fine.

00:06:23: And I tend to agree that probably is the

00:06:27: case.

00:06:27: But nonetheless, we have more options

00:06:30: there and somehow every new option

00:06:34: that appears, every new framework or

00:06:37: library that appears in the frontend

00:06:39: JavaScript world gets more attention

00:06:42: than it seems to be the case for backend

00:06:45: projects.

00:06:47: And I'm not 100% sure why exactly that's

00:06:52: the case and why that's happening.

00:06:54: And I'm super interested in hearing your

00:06:57: opinion and perspective on that.

00:06:59: But I think that maybe we give more

00:07:03: attention to every new frontend

00:07:06: JavaScript framework or library that

00:07:08: appears because a, there might be more

00:07:13: frontend JavaScript developers than

00:07:16: backend JavaScript developers.

00:07:18: I'm not sure about that.

00:07:19: I don't have any official numbers.

00:07:20: It's just something that could be the

00:07:22: case.

00:07:23: And in addition, maybe frontend

00:07:27: JavaScript development still has more

00:07:30: unsolved problems or more problems

00:07:34: that can be solved now that were harder

00:07:37: to solve a couple of years ago.

00:07:39: There may still be more progress

00:07:42: regarding how certain problems could

00:07:45: be tackled.

00:07:46: It feels to me, and again, this is just a

00:07:49: feeling, I could be wrong here, but it

00:07:51: feels to me as if there's still a lot of

00:07:54: innovation happening in the frontend

00:07:56: JavaScript space.

00:07:59: And that is not purely a positive thing

00:08:02: because it also means that maybe there

00:08:04: are more unsolved problems there than

00:08:07: on the backend.

00:08:09: It also feels like we move a bit in circles

00:08:13: in the frontend JavaScript world.

00:08:16: I mean, we're coming from a world

00:08:19: where we built websites, web

00:08:23: applications that worked such that we

00:08:26: had some backend code that rendered

00:08:28: an HTML page, an HTML document and

00:08:31: sent that to the browser.

00:08:33: And then maybe that document also

00:08:36: loaded some script code to add some

00:08:39: interactivity to that page.

00:08:41: And then we had all those frameworks

00:08:44: taking over the frontend and we started

00:08:48: building single page applications

00:08:50: because they also solve a problem.

00:08:53: They allow us to build more interactive

00:08:56: frontend applications.

00:08:58: They allow us to give users a more

00:09:01: interactive feeling with our websites.

00:09:06: They can make websites feel like

00:09:10: desktop or mobile applications, even.

00:09:13: So they exist for a reason.

00:09:15: But now we're moving back to a world

00:09:19: where we also render a lot on the server.

00:09:22: And currently there is this trend in

00:09:27: frontend JavaScript development where

00:09:30: we try to blend these two worlds, these

00:09:33: two ends, the backend at the frontend,

00:09:35: and where we try to get the best of both

00:09:38: worlds.

00:09:39: And I did talk about that in separate

00:09:42: videos and episodes, so I'll not reiterate it

00:09:45: here, but that seems to be the future we

00:09:50: seem to be moving towards with

00:09:53: frontend JavaScript.

00:09:55: And maybe that's also why we see so

00:09:58: many libraries and frameworks pop up

00:10:02: because it's clear that we're not there

00:10:07: yet.

00:10:08: There are some problems and there

00:10:10: were problems with the way we built

00:10:13: frontends five years ago.

00:10:16: So maybe that's why we see all that

00:10:19: innovation and all those different

00:10:21: libraries and frameworks pop up.

00:10:23: Maybe that's the case.

00:10:25: But what does that now mean for

00:10:27: developers?

00:10:29: Do you have to learn all these different

00:10:32: options?

00:10:33: How can you make sure that you don't

00:10:36: feel overwhelmed by all these different

00:10:38: options?

00:10:39: And I can only say you don't have to

00:10:43: learn them all.

00:10:45: You can just stick with the option you

00:10:48: personally like the most or with the

00:10:51: framework or library you want to learn

00:10:54: because it gives you the best

00:10:56: perspectives on the job market or

00:10:58: because you may be needed in your

00:11:00: existing job.

00:11:01: You can't just learn React or Angular or

00:11:04: Vue and call it a day.

00:11:06: You don't need to know them all.

00:11:08: But I would recommend that you at

00:11:11: least take a look at multiple options

00:11:14: simply to find out which of those options

00:11:17: you like the most and also to stay in the

00:11:21: loop regarding the innovation that's

00:11:24: happening in the frontend JavaScript

00:11:26: world.

00:11:27: That does not mean that you have to use

00:11:30: all those latest features and concepts

00:11:33: right when they come out.

00:11:35: Indeed, I would recommend that you

00:11:37: always wait a bit until you use some new

00:11:41: library or framework or feature of a

00:11:45: library or framework in a real app until

00:11:48: it's polished and battle-tested.

00:11:51: I would recommend that you don't start

00:11:53: using all the latest libraries and features

00:11:56: immediately in your production apps

00:11:58: because that can lead to problems and

00:12:01: we've seen that in multiple libraries and

00:12:05: frameworks in the last years as well.

00:12:07: It makes sense to wait and you don't

00:12:10: have to learn everything at the point of

00:12:13: time where it comes out but keeping an

00:12:15: open mind and just staying informed

00:12:18: about some general trends and

00:12:20: developments I guess makes sense and

00:12:23: at the same time this approach also

00:12:25: ensures that you hopefully don't feel

00:12:28: overwhelmed and that you can see all

00:12:32: these different alternatives and options

00:12:35: as something positive because it is that

00:12:39: innovation.

00:12:40: It is the appearance of all these different

00:12:43: libraries and frameworks and features

00:12:44: and the evolution of existing libraries

00:12:48: and frameworks that drives the overall

00:12:51: frontend JavaScript ecosystem forward

00:12:55: and that ensures that we'll hopefully

00:12:58: reach a point where we are at least very

00:13:02: close to having the best of both worlds

00:13:05: and where we maybe have a great way

00:13:07: of merging backend and frontend

00:13:10: because there is one big advantage

00:13:12: JavaScript has over PHP for example and

00:13:16: that is that it can run both on the server

00:13:20: side and in the browser and that holds a

00:13:24: lot of potential because that indeed can

00:13:28: allow us to build web applications where

00:13:32: backend and frontend are integrated

00:13:34: seamlessly and where we therefore can

00:13:38: give our website users a great user

00:13:41: experience because ultimately that's the

00:13:44: main goal.

00:13:46: As a web developer no matter which

00:13:48: technology you're using you have to

00:13:51: build websites and web applications

00:13:53: that give their users a great user

00:13:57: experience and that do their job so that

00:14:02: if you build an online shop it's an online

00:14:04: shop that's easy to use.

00:14:06: If you're building a complex web app like

00:14:09: Google Sheets or something like that

00:14:13: you build it such that it's easy to use that

00:14:15: it's performant that it's intuitive that's

00:14:19: your main job and all that innovation

00:14:22: that's happening in the JavaScript world

00:14:25: in the frontend JavaScript world

00:14:27: hopefully helps with making that job a

00:14:31: bit easier and a bit more pleasant but

00:14:34: there is no reason to feel overwhelmed

00:14:37: at least in my opinion.

New comment

Your name or nickname, will be shown publicly
At least 10 characters long
By submitting your comment you agree that the content of the field "Name or nickname" will be stored and shown publicly next to your comment. Using your real name is optional.