Does anybody else feel overwhelmed by the JavaScript ecosystem?

50 points by szark ↗ HN
Does anybody else feel overwhelmed by the JavaScript ecosystem and 'needing' to keep up with the latest tools/frameworks/libraries? I have read a lot about new things like esbuild, Vite, Nuxt, and many more, but between my 3 kids and full-time job as a developer I have almost no time to learn them, and choosing 'what' to learn often feels overwhelming because of how many things are out there.

If I don't keep up I feel like I'll soon be irrelevant. Is it just me, or do other people feel this way as well?

I suffered some extreme burnout a few years ago so perhaps I just don't have the drive anymore.

39 comments

[ 3.2 ms ] story [ 82.6 ms ] thread
This is on you, no one asks you to have to follow these things. Each company has a specific setup that would be what you are required to know. Most companies use a variant of the same stack (webpack thesedays, never worked anywhere that uses vite), so no risk of non-transferable skill either. If you buy a new phone every year then you'll waste money and after 10y your phone is no better than someone who only buys once every 10y.
No, I just stick to a particular set of tools. I'm not going to chase every new fad.
It's always been a little overwhelming but in the past few years it's definitely increased.

I stick to learning only what is sensibly required for the project, which can be complicated enough if that means React, redux, GraphQL, Angular, NgRx, etc.

The time to learn comes when there is an actual need to build something on a reliable, widely adopted tool/framework.

You learned this much and you won't forget how to learn. Trying to learn everything on the rapidly expanding edge is not necessary.

If you still feel compelled to learn something on the frontier pick a small area to make it scale.

Otherwise yeah Javascript has become only more insanely complicated lately.

For my personal projects I am planning to stick to HTMX. No more fancy js frameworks.
Perhaps I've just matured and don't jump after the next new thing anymore, but I feel like the ecosystem has actually slowed down.

I remember when it felt like every year there was a MAJOR new library that you HAD to use. I started with vanilla js, then it was jQuery (which was a huge improvement), then Backbone, Angular, Meteor, React.

Then there were the different build systems that went along with the libraries/frameworks, new CSS frameworks as well, etc etc.

I'll admit, the last few projects I've been working on have been React and React Native, so I'm rarely diving into new frameworks and tools anymore.

Find something you like that is fairly common, and go deep on that.

I'm not that familiar with web but I think we've settled upon React as just good enough for most things lately.
I'm in the minority in HN, but to me (frontend dev) React is the gold standard. It's simple and flexible, which is everything a framework should be. There are a few old warts and the dev tooling is not perfect, but architecturally it provides a very straightforward structure to what is normally a very chaotic endeavor (building reactive asynchronous UI code). There's not much I would change about it except for removing some stuff (class components and maybe some unused/deprecated features). I almost can't picture a scenario in which you'd need to do something but couldn't do it in React.
After many years of following the JavaScript ecosystem, there's one thing I learned: most of the "many things" out there don't stay relevant for long. I personally make a conscious point of not diving into the hot new thing of the week when it first pops up on my radar. But maybe when it pops up for the eighth time, maybe only when it keeps popping up consistently over months and years. There is, for a developer, little to no first-mover advantage when it comes to the JS features or frameworks. And even if there was any point in trying to stay "on top of things": expecting yourself to know your way around every mayor JavaScript tool and library is as unreasonable as trying to become an expert in every programming language.

Truth be told, even though I live and breathe even keep a list of things (JS frameworks and APIs) that I've _explicitly_ decided to never take a closer look at, just for mental memory management purposes. No one can be an expert on anything in any field.

IMHO, don't chase the next fad thing.

Be an expert in two to three things. Currently, I concentrate on React, TypeScript, GraphQL, APIs (Axios). This keeps me busy and continue to be for next couple of years.

It's impossible to keep knowing 'all' the latest tools/fws/libs/etc...

Just focus on what you are using or you think you will need for your job.

At the end it's only JavaScript, so if you need to use a new library, just learn it.

I think it comes from that either creating a new library or contributing/publicizing such a new library can yield enermous value for a developer (blogposts, clients, CV) "why work on established stuff, when you could work on the Next Big Thing (TM)"

don't sweat it if you miss a few, the newest stuff is just around the corner, and always will be

The ecosystem churn is ridiculous. Absolutely know the basics and trust that you can learn whatever it is you need when you need it, but do nothing more. Doing it in advance like you are trying is a recipe for a bad time.
Counter thought: Trying to keep up is keeping you behind.

If you're in a stable employment situation, diving deeper into existing things you use will be more beneficial than knowing the tip of 10 different icebergs.

Learning something by doing a hello world or building a todo list app really skims the surface of what its like to work with that tech on a constant basis. After working in software development for a couple decades, I have the mindset that I can learn any of these if I need to, the underlying tech doesn't change that much.

Thanks matt_s. That's an interesting way of framing it. Since posting I've decided to let go of trying to keep up with everything and instead focus on improving my existing skills, which will actually be more beneficial to me and my team in the long run than having a basic understanding of everything out there. Thanks for your insight! :)
Familiarize yourself with the MDN docs, including JS language features, and the DOM-manipulation API. The rest is optional / as-needed, depending on your project requirements.
Everything is just building blocks or layers on top of other technologies/paradigms making different trade-offs. You just have to figure out which features of which products compete with each other.

That said, it involves a ton of reading, and reading Twitter daily to stay up-to-date.

I've been thinking of putting together a curated website to break down the differences between JS tools, explain what the metrics and trends mean. In the end, everyone wants an exhaustively researched short-list so they're not missing some obvious trend, and then they want recommendations to suit their personal preferences. Existing comparison sites lack the necessary curation component to tease apart the layers involved in each tool.

I tend to be picky about what libraries I use in any project so it's best to pick a couple that you know you'll need and make sure to trim the fat where possible. If a specific date/time library seems far too big for your purposes then see if you can make some functions that fit the bill on your own. Eventually, you'll figure out what's absolutely necessary from trial and error and what's just "nice to have."
Once you have a deep knowledge and experience applying core ideas in any language, framework, why bother learning another new fancy implementation flavor?

If you would need to — you open docs, spend few days learning, playing with examples - and you ready to go.

This is how I became JS developer one day with near zero prior JS experience. Okay, i'm not that smart and it took me few weeks instead of days )

But still, after java and ruby I didn't face any radically knew info or challenges getting on js train.

So long as you're fluent in the underlying language in this case JS (and I guess TS too), you'll be fine.

All the frameworks and tools are just built on top of those, once you know the basics you're set.

> by the JavaScript ecosystem and 'needing' to keep up with the latest tools/frameworks/libraries?

The struggle to keep up with JS feels more like a meme to me than anything else. I've been a professional front end dev for 5 years and have never felt this alleged pressure.

There hasn't been a new player worth noticing in the front end framework space in years. Tune out the noise and learn the fundamentals. Choose tooling that does what you need out of the box. You don't need to know everything to get started.

Why should people stop creating personal projects so you can keep up? The problem is you keep adopting and thinking they'll be your silver bullet. You're being sold snake oil. Recognizing fads is something we each need to learn. Pay attention to them, build context around them, but use proven technology. You don't have to be the early adopter.
Definitely stick with the more mature things and the things other things are based on.

Example: If you’ve learned React, stick with it or React-native. Don’t learn a React derivative such as Next.

I think it just takes a bit of experience and chatting with other devs, and comparing libraries’ popularity metrics and reviews, to get a sense of where the ecosystem is headed in terms of framework/library traction.

Definitely don’t unfocus and learn random things. Learning should be a strategy towards a goal.

In my case it’s to have corporate in-demand skills and skills I can use to build my own projects. So, I focus on React, Node, PSQL, AWS tools, etc. while occasionally researching new tools and dabbling.

For example I’ve recently begun dabbling with Parcel, but only because I see it as relatively accepted in the community via chatrooms, forum posts, and articles. Otherwise I’d stick with webpack for reactjs compilation.

WebDev, specifically the JS scene has largely been hijacked by a bunch of smart and capable people who constantly propagandize their framework as being 'the best'. It's mostly fluff. Once you know how to code in vanilla JS, and are super proficient in that, frameworks come and go throughout the decades, having a brief flash in the pan, and then dying a spectacular death. (Look what happened to jQuery for example).
jQuery wasn’t a flash in the pan, it ruled for a decade and its “death” is because many of its features got merged into browsers.
I’ve been ridiculously productive with Npm, webpack, typescript, react, redux for years now.

I toy with new tech on occasion but there’s no reason you have to worry about it.

I absolutely agree with you. Thank you for letting me know, that I'm not alone!

I'm coming from a backend-environment and had to learn how to do frontend as well. While JavaScript as a language can be handled (it has its quirks, as all the other languages out there, still quite logic IMO), the tooling around creating an application is totally a mess. A packager and babel and module handler and use express and build with vite oh and version ES6 or better ES20 or back to ES5 and serve the static content with sirv and ts.config and ... On the backend side I was used to just install my packages and be able to start coding. Not on the frontend side.

I have to admit that I find it to be a more complex environment, as you need to support different browsers, you have a client and server part, you need to handle session/state data and so forth. Beside that you need to take into account security, performance on client/server, network communication, local storage, and the list goes on. There are also hundreds of ways to do a single thing. In the end what helped me was to stick to a single framework and follow its way from start to end.

Also the advent of frameworks like Svelte/SvelteKit helped a lot as they reduce the tooling to a bare minimum, keeping single components maintainable with mostly pure JavaScript.

Tl;dr: You are not alone :-).

Not really, I just focus on vanilla JavaScript fundamentals.
No, because I find I can always learn anything easily. Once you know one or two frameworks well enough, you can learn anything easily. I used Angular for years. Then decided to try React and had no problems with it, actually liked it a lot more. The secret is: Go to Github, find some well written boilerplates/templates that use the things you want to use. Study it, see how everything works, base your project on that starting point, and build upon it, learning as you go. Then as you go, look for completed project examples, using your tech stack, and see how the usual stuff that every project needs is implemented: Pages, Components, API calls, DB access etc. Then just keep iterating.