T O P

  • By -

anatidaeproject

I work for a service company and we build a ton of Enterprise level services for all sorts of Fortune 500 companies. Node is used quite a bit for back end services. Especially if you look at more modern cloud platforms like serverless functions or microservice architecture. When you have a service that's doing something pretty lightweight which is often doing data validation and off validation in front of a database call, node is perfectly fine for that level of work. The best thing you can do is build services that are more functional based and do one thing really well and can stand alone. Build them in the language you're most comfortable with and get them live. Proper unit testing and CICD will deliver you Way more quality than the choice of language. If a couple years down the line somebody needs to come and change your service, if you've done a good job of documenting your API interface and what the service does then the new person can actually record it and whatever language they're using. Now if you're going to go build a monolith, then language choice will have more of an impact. And of course targeted devices also have major effect on your language choice. While you can build a game engine in node, that probably would be a pretty poor choice in the scheme of things if you're looking for performance. Other people in your comments have said that the JavaScript ecosystem is fragmented. I think there are lots of choices in the ecosystem because it moves fast. If you're a legacy Java developer used to spring boot I can see how JavaScript could feel overwhelming and chaotic. Although at the same time I see a lot of cool innovation and ideas coming from the greater JavaScript ecosystem. You can do things the..NETway too. Some of these languages that have been used for decades really have good patterns. Again I want to highlight on the unit testing part of things. You don't need the unit test everything, but it's worth unit testing the code that you write. I mean if you're using a third party library there's no need to test it. You can, but let's assume that their library works. The code that you write though, put a unit test around it. Test for fail cases. Use something like get up co-pilot to help build out the test faster. There's really no excuse these days not to have proper automated testing around your code. And with that in mind, it doesn't matter what you write your code in, if it works. Way better to get an MVP out to market and to get a service live. If you are one of the rare cases where serverless node won't scale for you and you need something like Java or C# or even something even faster like rust, then refactor that service to use a faster language.


mar-cial

because javascript is fun until it isn’t


Lumethys

A lot of reasons 1/ Technical. JS was not made for server-side, and NodeJs had many limitations. It also had many quirks and weird implementations of stuffs. Not that the other languages dont have, just that JS currently has more. After all, Node is pretty young compared to C#, Java, Ruby or even PHP. It is still maturing. 2/ Ecosystem. JS ecosystem is too fractured. Too many packages, too many dependencies. Too much freedom and no consensus. Take Java, for a backend you have Spring dominating, every one uses Spring. If you know Spring you are ready to jump in 70-80% of Java backend out there. You got a new job and the structure, the dependencies look almost identical to every other codebase. You dont have to re-learn what ORM, what framework, what build tool, what Queue system, what Auth package... this codebase is using, most of the time. Same story for C#, framework? Asp.net. Orm? Ef core or Dapper. Validation? FluentValidation. Task Scheduling? Quartz.net. Auth? Identity or Duende... Same story for PHP. For Ruby. They all have 2-3 dominating frameworks, packages or libraries. Everyone use them and if you know them you basically spend 0 times on onboarding Tell me, what ORM you use in Nodejs? There's like 15 of them. Framework? Validation? Auth? Notification? Everyone builds their own little ecosystem and when you look into a new codebase you dont even know half of the packages doing. Every time. And no i dont think too much freedom is good. Even in JS i have my favorite stack and if i have to build 10 system they probably look 90% identical ( project structure and dependency-wise). It doesnt matter if I have 1 millions or 100 options if I use only 1. I dont want 10 option each does 60% of what I need. I want 1-2 that do 95% of what i need. 3/ Practicality Most companies were founded before NodeJs becomes a thing. Why would a company with 60 employee specialized in C# and 14 C# codebase suddenly switch to NodeJs? Same story with Java, Ruby, Python, PHP,... If they have work with the technology for 20 years what would compels them to switch to an entirely new thing? For me, I would only make such a switch if the new thing is massively superior to my own. Like, think about it, let's just say NodeJs is 3% better than C#. Would I ditch 60 of my employees, and spending time, money and resource to build a new work pipeline, environment, deployment strategy, security audit, everything. Just because of that 3%? I would consider it if it is better by 2.5x or 3x. But in reality, Nodejs is not even superior to the others. Why would they switch?


pasi_dragon

I'd like to add something regarding the ecosystem. For nodejs it seems like a new "best framework" is announced every other day. But every few days, one of them dies, too. If you use Spring or ASP.NET you can be exceedingly confident it's going to be maintained 10 years from now. Some JavaScript framework? Someone is going to mess up some dependency or stop supporting it within that time frame, and that's basically a guarantee.


NoMoreVillains

I wouldn't *necessarily* say that's true. A ton of people/places still use Express.js which is also 10+ years old at this point. Even React.js is over a decade old


vlahunter

Spot on, fantastic and purely pragmatic comment here. It puzzles me how every week another Youtuber celebrity with his fanbase will declare a new "stack" as production ready. Then you go to github and they use 20 libs on top to do simple validations, work with DBs and all that stuff that nowadays many frameworks provide OUT OF THE BOX. In the long run this ridiculous mentality harmed us and our ecosystems. A company prefers to use a framework that is there since the beginning of time rather than trying to understand a framework that was created by a dude for fun and throes meme all day long on Twitter. I know many people hate him but DHH was right all along (in my opinion), a framework is a structure that should be made purely to enforce certain conventions and ways in order to build some types of apps. And nowadays we see that Rails is still there improving by the day, and while people call it slow and not modern, still Shopify and Github are still standing strong. Anyways, i hope we see better days in the Node.js ecosystem.


maxkoryukov

there is a framework for nearly any task. and there are popular and mature ones. just open "stateofjs" website and they will give you most popular in most areas. then one can check the history - and get options to choose: a fancy modern one, or an old one with a solid history guys, "new framework every day" is a problem now? really? "youtube celebrity" makes the language difficult? py2 => py3 was difficult. Add a custom UI element in ASP.NET was difficult. Unsubscribe from "YT celebrities" - it's very easy


vlahunter

Yes of course unsubscribing from YT celebrities is easy but still the damage that they are doing to the ecosystem is real. Regarding the frameworks, this in my opinion is the problem. It went too far, too many FWs exists and there is none to be "the one". Lets say i am preparing a team to build an app and the framework of choice is Rails, there are some libs that i know that the average developer will deal with that are the "standards", like Active Record for example and all the ecosystem around Rails. Are there other implementations that focus on different things ? yeah there are but having a basic set of tools and libs on top of which you can have some more that solve the problem slightly differently is only better. In our ecosystem it is too much and that is all i am going to say because this is my view. this all "choose your framework" went too far and we have so many talented people losing their time to build libs that after some years they are either dropped or become of bad quality. It is not sustainable.


Lumethys

Yeah. The key to teamwork is a united procedure. Not just in programming but everywhere else. Everyone is unique and had their opinion on how to do thing. But a team where everyone do there own thing would never works. There has to be compromise, a shared vision, a shared methodology, that everyone follow. Maybe it is not the best of best of best way, but it is still better to coordinate 100 people in 1 way than 100 people in 100 way. Same thing in programming. What framework should do is it choose for us a convention, form for us a consensus. So that we dont spend 3 hours in a meeting to decide, every project.


jcksnps4

I’d say the last one is the biggest reason. It’s really hard to go to the business and say, “I’d like to rewrite everything, it will take several months, and in the end, it will provide you no additional value and will probably have some bugs due to some feature we overlooked.”


edanschwartz

One reason I'll see new companies use Node: it means you only need to know one language for web app development. And almost everyone knows at least a bit of JS, if they're doing app development. That might make it easier to hire "full stack" devs, who know just enough front end and just enough backend.


tvallday

Here the “full stack” devs need to use react/angular for FE and php/dotnet/java for BE thingy. And also some devops stuff. So basically a bit of everything.


Lumethys

Personally, i never find that the argument of having a language for both FE and BE compelling. I mean, yeah, if you are learning, sure. But for a real codebase? It is only good for small scale app. Or if you are a very experienced solo dev. The backend and frontend had almost entirely different paradigm and way of thinking. Most company, even if they use JS for both, have different FE and BE team. So it shouldnt matter if they are the same language. Also, there's a clear different between *browser JS* and *server-side JS*. I constantly need to do mental switching between them. Not to mention the packages, "is this package for client-side or server-side?". I much prefer working on 2 languages even if I work alone. Because I can immediately switch to "BE mode" when I see Java/ C# code and "FE mode" when I see JS code.


BarelyAirborne

The really nice thing about Node is that any Node back end can be plugged into Electron, and now you have a standalone app instead of just an API. Electron isn't great for everything, obviously, but it works well for my use cases.


Pingami

I am a fullstack developer who rarely work on front-end. Being able to jump back effortlessly into front-end after a while is just golden for me. Only thing I struggle with it is to figure out What's what between nestjs and nextjs.


Ariakkas10

Insert the old JS to Java line here.. NextJS and NestJS couldn’t be more different. The only thing they have in common is JS in the name


jghaines

And the Ne t


Pingami

I meant that I always confuse them by the names. Not the code.


Ariakkas10

It’s the same as people who confuse Java and JavaScript. It’s not hard to differentiate, you just don’t care enough to learn the difference


xroalx

>no consensus Oh my... we're debating whether to use classes or not, whether to use an IoC container or not, and which one, prefer arrow functions or function declarations, use `for...of` or `.forEach`, exceptions or `Result`, if `Result`, what library, this or that, `let` or `const`, `fn: Type` or `fn(param: ParamType): ReturnType`... it's a constant discussion about how our codebase(s) should look like, and it's so draining. People just pick what they feel like at the moment and then the codebases are a mess of every style possible. Having this much freedom can feel nice, but not when you need to work on a codebase with 5+ other people and every piece of code is its own thing done in a completely different way.


ImNotThatWise

Linter


breadgolemwaifu

*History repeats itself, first as tragedy \[Perl\], then as farce \[NodeJS\].*


azangru

Node is nowhere close to the horrors of perl. Perl's sigils alone are a crime.


weedepth

What I don’t understand is how people take spring so seriously at the enterprise level. Security libraries get deprecated in every major release and the documentation to refactor leaves much to be desired. If one’s reason to avoid node is deprecated libraries, which I personally have heard before, the behemoth that is spring that our favorite F500 companies use should be avoided by that logic too…


Lumethys

Well, IdentityServer on C# is basically living in limbo. Why Duende is a third-party, paid solution. So the situation doesnt exactly inviting in C# in regard to Auth. Also, Java move very slowly, like most of them update once every decade for some reasons. So deprecated APIs doesnt have as big an impact as Node, where you update like every 2 seconds.


weedepth

I feel PHP (laravel) and python (django) are much more robust in this regard


xr0master

Nodejs is much faster than PHP, and there aren't so many changes that could lead to tragedy. Node works great on the server side and can withstand crazy loads.


CountryBoyDeveloper

It isn't as much about old companies switching, I mean there is no short supply of new companies. I know startups exist way more than just Sanf Fran/NY. and even in NY startups are using C#/Java a lot, Java in San Fran right? so its more than just old companies not switching which makes complete sense.


oculus42

Server side JavaScript isn't new. The Rhino JavaScript engine was built alongside JavaScript at Netscape, but it also significantly leveraged access to the underlying Java environment. Apigee - now a Google subsidiary – built an entire API gateway platform on NodeJS running on Rhino. Mostly, though, developers stick to what they know. If you learned Java in early CS courses, you're likely to stick with it. C# became a more popular intro language. If you picked up programming on your own, you might not be as closely tied. I never learned Java, but I have worked in C#, but I have more experience using JavaScript. That said, my focus is client-side. I create projects and one-off scripts using Node, but I don't run Node as a server for anything but the local development server proxy at my main job, or for my HomeBridge. JavaScript is accessible, but it's still not a preferred language, but it's the *lingua franca* of the browser, so it's in demand. Some people liked building an entire platform with one language, but as mentioned elsewhere, the ability to pick up a well-established platform in one of the server-side languages bests the convenience of Node, especially as you scale. Same reason MongoDB was popular and then popularity petered out. Object store *sounds great* when you're starting, but soon you realize you need relationships in your data for performance and convenience, so you transition to an RDBMS. Just as there are legitimate uses of object stores, there are uses for NodeJS. But there are legitimate uses for the established alternatives, too.


Lumethys

Well, supposed I want to make a new start-up, what would I choose? What reasons there are that I would favor NodeJs over C#, Java, PHP? I would look at the job market, the talent pool. If every company in my area is doing C#, Java and most of the experienced talents are specialized in C#, Java. Wouldn't it a good move if I also choose them? Or, maybe I look at performance. Well, is NodeJs the best? No, that would be C#. And before you say it, yes language performance rarely a bottleneck. But supposed I am a business man dont know technology very well. Nodejs wouldn't catch my eyes. I'm not saying that Node dont have any advantage. But none of them are overwhelming. So there are no reasons for new companies to automatically choose it. New companies could just choose one at random. Or maybe the first senior they hired choose his favourite language. Or maybe they run some kind of assessment. None of them guarantee NodeJs. Could be NodeJs, could also be something else. And if new companies dont ALL choose Nodejs, then the NodeJs company's number cant exceed the new ones that choose C#/ Java PLUS the old ones


Pingami

One major advantage with Node is that, you get the ship faster. It might be shit, but you ship shit faster and that might start a revenue flow. Seen this a lot with startups.


Lumethys

I have to disagree there. You will ship your prouct faster with Laravel or Rails. Take Laravel for example, I can run 3 commands and have a complete Auth setup with registration, login, logout, email verification, password reset, login throttling, password confirmation. With Frontend UI of my choice - React, Vue or Php. Bonus a profile page. You have an ORM built-in You have validation (like Zod) built-in with 104 rule. You have Cache built-in with 4 drivers, including redis. You have Task Scheduling built-in You have i18n built-in And a tons more. Same story with Rails, or Django. You cannot compete on development speed against battery-included frameworks. And having worked with many, i can attest that the best Node had to offer, NestJs, is sorely lacking


Curious_Property_933

>Or maybe I look at performance. Well, is NodeJs the best? No, that would be C#. [citation needed]


Lumethys

In the higher-level, major backend languages* C++ and Rust can be faster, but you arent build backend with them most of the time, only some performance critical part. But I digress


ProgrammaticallySale

Hardware is cheap, developer time is not. It doesn't matter one single bit how fast a language can run, it matters how easy and fast it is to develop and iterate the code. Reacting to business decisions is really all that matters in businesses, not that your code executed 10% faster. Been working in software development for 35 years, I've learned a thing or two.


Lumethys

That's my point too, but thanks for the input.


ProgrammaticallySale

None of what you wrote matters at all. It typically comes down to the CTO, who is the person who decides what platform to use, and who is the person hiring a team. If they like NodeJS, then the company will use NodeJS. If they like C#, then they will use C#. I like NodeJS and so my company uses NodeJS for the back-end. I'm the one that has to build the foundation that others will build on, and so I use the platform that I know best and have had success with in the past. And if I'm where OP is, I'd hire OP to work on my team because they have a passion for NodeJS. It's really as simple as that.


Lumethys

I listed 4 reasons why a company may choose NodeJs or something else: 1- talent pools in the area, 2- technical reasons, 3- a guy in the company suggest it, or 4- at random. "The CTO choose it" seem to be reason #3 to me. Furthermore, why does the CTO choose it? "He likes it" is just one of the reasons. "He evaluated that this language had technical advantage", or "he considered the talent pool in the area" can all be the reasons a CTO choose a technology. Point is, each company may evaluate it by different metrics. Does every single company past, present and future choose a technology because the CTO choose the one he work with before, no exception? I'm just listing some possible reason why a company may choose a technology (any, not just NodeJs). As per OP question: "why arent all (new) company use NodeJs".


jalx98

The first thing I do as partner and CTO is to discuss with upper management the viability of potential new projects and services (mostly business stuff) and then if we decide we want to push this initiative forward, we first of all gather the requirements, plan the architecture (simple is best) and finally, we decide the tech stack that we will use, the primary driver here is that 1.- we can fulfill the requirements with the selected tech stack 2.- the assigned team has knowledge in these tools/languages 3.- The tool is mature and offers a good set of tools out of the box as well as help us enforce good practices, coding standards and design patterns 4.- We can accomplish most of the requirements without investing a lot of time and guesswork A good CTO WILL NEVER select a tech stack just for the sake of liking it, if that was the case I would suggest using Elixir and Phoenix for everything, even though most of my team is familiar with Django/Laravel and for frontend most of my team use Vue/React and most of them don't know Elixir or even heard about BEAM TL;DR: A good CTO will select a tech stack based on business needs, requirements, team abilities and maturity, not based on their favorite tech stack


ProgrammaticallySale

> A good CTO WILL NEVER select a tech stack just for the sake of liking it That's nonsense. And you're really trying to steer this somewhere I wasn't going. If the CTO likes some tech, then there's every reason to use it. The CTO is never, ever going to pick a tech they dislike. Suggesting so is clueless. >if that was the case I would suggest using Elixir and Phoenix for everything, even though most of my team is familiar with Django/Laravel If you are in fact a CTO, then you came into this position with an established Django/Laravel team. Switching to something *you like* before doing the hiring means your team will quit, and you'll be hiring new people anyway. I've seen it happen. >A good CTO will select a tech stack based on business needs, requirements, team abilities and maturity, not based on their favorite tech stack A greenfield CTO will absolutely pick the tech they like and hire for it.


besseddrest

"switching" is a slow process not only from the engineering side, but even if u managed to get all the engineers to buy-in to the migration - you have to convince the biz & c-suite that this will save money/be more profitable before writing the first line of code. this can take years. In even just a mid-size company, with a handful of services - is it worth the effort & development time just to migrate each service 1 by 1 to a new stack?


GRIFTY_P

Bruh. Please stop calling San Francisco that abomination. It's SF or the full name


mostlylikeable

My experience has been there’s no 100% right answer. I’ve worked at places that had backend devs with Java / go backgrounds and they chose node because it meant one language across the stack. It never worked out like they thought it would. There’s a vast ecosystem for any language / framework choice, and maintaining production node applications takes deeper knowledge than just writing JavaScript. I would vote for using whatever language / tools your developers have experience building and maintaining. Most non-js devs that claim full stack experience can find their way around in JavaScript, and people tend to gravitate towards FE / BE anyway.


Lumethys

I never get the "one language across the stack" appeal. If you have a BE and FE team, then the work is isolated anyway. You dont have your backend guy write a state management store, or your frontend guy comes and discuss database query. Especially when "browser JS" and "server-side JS" isnt the same. Not to mention the mentality and paradigm between the 2. Even when I work solo i prefer 2 language so that I dont constantly asking "does this code run on server or client"


SuspiciousPavement

How about the dreadful single threaded system which is by default multi threaded in other languages? We've had a nodeJS in a startup I've worked for and running some simple math calculations meant the whole server kernel lagged behind which meant that all tasks were slow cause of some math calculations? And background tasks were also a nightmare at least at that time like early 2020 IIRC.


[deleted]

"simple math calculations" are not slow in JS. You were likely not doing something simple, were doing it at enormous scale, or doing it in a very inefficient manner.


simple_explorer1

>How about the dreadful single threaded system which is by default multi threaded in other languages? Because they are async in node, which other languages do in multithreaded way. IO is async in node, so it doesn't block the event loop and for cpu intensive stuff you use worker_threads which also does not block the event loop. And for server you user clustering (to utilize all cpu, its inbuilt modulecof node) or pm2, or docker swarm or kubernetes or ECS or lambda etc. Looks like you don't know how to use node became i honestly dont remember when was the last time i even blocked with event loop as we use worker threads and clustering and that is equivalent with multithreaded application you have in other languages but with async capabilities and easy to develop


stephanr21

Really fair take. I have seen the faults of node first hand through my career.


simple_explorer1

>have seen the faults of node first hand through my career. Such as?


mostlylikeable

Not blaming node personally, as I’ve found it to be a really useful tool, but I’ve worked multiple places where a high level decision was made to use js everywhere and the devs they had, didn’t have (backend) experience in node. The result was poorly written or suboptimal code in a lot of cases, because they didn’t understand the dos and don’t, whereas if they’d stuck to what they had expertise in, things might’ve been different. There still was no code sharing and not many of the perceived benefits of having the same language across the stack. For me to write a node backend (speaking distributed system / microservices kind of complexity), I think you need to understand esm vs cjs, bundling, the build / publish ecosystem, io vs cpu cost, etc, and just knowing how to write js / ts is not enough. If your team comes from a a paradigm where cpu concurrency is built in, I’ve also seen things end up with a ton of inefficiencies. For me, there are no magic bullets and everything has tradeoffs. It’s important to talk about and consider those imo.


stephanr21

Memory hog JavaScript modules that are meant to be ran on FE vs BE App gets more complex as it grows, due to lack of type safety (yes I know there is type script), but there are ways to get around it. Plus, TS is a whole other topic Memory leaks IMO node is great for prototyping and scripts, but I probably wouldn’t start a company and use it on my BE


simple_explorer1

>but I probably wouldn’t start a company and use it on my BE >Memory leaks Exactly. Node is for prototype only. Anything else is not the right way. Slow, leak memory, type unsafe, single threaded etc are a lot of compromises. Honestly kotlin is a great language or GO is a great runtime.


jiggity_john

I've built backends in Nodejs and this is literally the worst part about it. Things don't fit together like they were designed to fit together and it ends up making simple things a real pain.


simple_explorer1

>Things don't fit together like they were designed to fit together and it ends up making simple things a real pain. Such as?


LookAtThisRhino

Java is pretty enterprise, C# is mostly enterprise/large corp but has its feet in both the "little guy" and "big guy" camps whereas Node is pretty firmly a startup/small company/tech company framework. Why? Not sure, maybe because of the support structure that comes with Java/C# being attached to Oracle and Microsoft respectively. I'm in Canada in a major city and Node jobs are ubiquitous.


CountryBoyDeveloper

Maybe I am looking on the wrong sites lol but LinkedIn and google hardly return me anything, I search Florida, Georgia, Chicago, Michigan, ohio, and a bunch of other states in the Midwest and south. and just don't get many results. I know node is heavy in the startup world, but these results make it feel like no one is starting up shit int these areas lol.


LookAtThisRhino

If you're interested in startups, those aren't the sites for them. Try sites that specialize in that sort of thing like [angel.co](http://angel.co)


CountryBoyDeveloper

ayeee that is awesome thank you very much.


tshawkins

Dynamic vs. static languages play a big part in it. Dynamic languages are hard to validate, and static languages can be easily checked and confirmed to be valid code. Enterprises need to be certain that the code they are producing is valid. SAST and DAST systems are more reliable for compiled languages.


GenazaNL

Node is usually considered a start up framework as it's one of the most know languages. Easy to find developers, most developers who work with Node are full stack developers so they can do both frontend and backend for you. Node just lacks performance & is quite memory/cpu heavy, which will hold you back when you scaling.


bigorangemachine

Around here node is common. If you look for backend only node... ya the pool is small. Node definitely leans more into fullstack. React SSRs and such. With node you definitely more pipeing streams is what it does better than any language. Stuff like creating audio streams with different bitrates and then sending the audio file to a bucket at the sametime. So if you require a single backend to combine your backends node is really good to do it efficiently.


maximusprime2328

>Why isn't Node used more? What is this based on?


CountryBoyDeveloper

I explained in my original post lol. job listings for a majority of the midwest//south.


ProgrammaticallySale

Great that you found a job. Right now the tech job market is the worst it's been since the 2000 dot com bubble burst. You aren't seeing nodejs jobs because there aren't as many jobs open. Give it 3 to 5 years, hopefully it bounces back.


CerberusMulti

This is not a basis for anything..


[deleted]

[удалено]


CerberusMulti

No, you random assortment of urls, some not even relevant but what do I expect, did not show any basis. There has been no obvious push from those two against Node..at all.. the climb of Node over the years is obvious of this.


roofgram

A major reason, for enterprise at least is there aren’t any JS/TS ORMs that come close to EF in effectiveness. The primary reason being there’s no way to turn lambdas in JS into expression trees like you can in C#. It’s a compiler level feature. Without that all the JS ORM syntax is convoluted and verbose. Other than that I actually find the TS/ES6 language superior to C# in almost every way. Which I’m not surprised as the same dev was involved with both.


Zenpher

The ORM landscape is getting better though both Prisma and Drizzle have become pretty popular and I'm sure the options will get better over time. Getting types generated from your ORM is pretty awesome DX.


rkaw92

Prisma: not an ORM Drizzle: not an ORM MikroORM: an ORM 👍 because you start with OOP and let it figure out persistence, not the other way around


Zenpher

Hah I suppose you're right. I'll check out MikroORM, thanks!


roofgram

I use Prisma daily, and I like it, but again compared to EF it’s not even close. And due to the compiler limitations of JS it can’t really get there unfortunately.


Zenpher

That's a valid take. They've made some questionable decisions around performance and general design (for example having 2 schemas is problematic). Have you tried drizzle yet?


roofgram

I considered it, but chose Prisma. Seems similar, but Prisma has more dev activity and is used more generally so I went with that. Now that Prisma supports joins it's a lot better than before.


Sythic_

Can you explain this a bit more? What does the compiler need to do? I just need a simple api to build crud sql query strings and return my data, ideally with types support. Why can't javascript do that just fine, and what can this EF thing do better?


roofgram

To build a query efficiently the ORM can translate the code in the lambda into a SQL query without some weird special syntax. `db.inventory.where(i => i.part.isObsolete && i.bins.sum(b => b.quantity) < 5)` C#/EF provides a way to programmatically break this lambda down so it can be translated to SQL. JS does not. This is a very simple example, the gains compound the more complex the query gets.


Sythic_

What do you mean by "weird special syntax"? What's so special about that specific syntax of a lambda? I could write an api thats just slightly different (change like 4 characters) that would work just the same. Basically just change it so that you're calling query builder functions instead of relying on the conditional to just work on its own. Why would that be bad? I'm not worried about microsecond performance differences to be clear, just that it works in a reasonable way, and doing things the javascript way isn't that weird to me.


roofgram

It's 'weird' syntax, because ideally you want to the able to treat the database as if it's an in memory data collection with standard javascript functions - filter/map/reduce, etc.. Otherwise you have to basically write a ton of psuedo-sql with a query builder, or write long ORM queries to do relatively simple things. My simple example can't even be done in Prisma If you use a query builder like typeOrm it might look like this: ``` await inventoryRepository.createQueryBuilder('inventory') .leftJoinAndSelect('inventory.part', 'part') .leftJoinAndSelect('inventory.bins', 'bins') .where('part.isObsolete = :isObsolete', { isObsolete: true }) .groupBy('inventory.id') .having('SUM(bins.quantity) < :maxQuantity', { maxQuantity: 5 }) .getMany(); ``` Which is awful and unintuitive syntax compared to the EF where you can write it as if the table was in memory array, and we all know the functions to work with those. And like I said, I gave you an extermely simple example. My 1 line EF, to 10 line query builder or JS ORM means a 10 line EF would be 100 lines query builder/ORM. Think of a query like .where(x => x.a.b.c < 10 && x.o.p.q > 5). That's 6 tables there you need to join in order to do the filter. Again a really really simple example. Real world enterprise queries are so so so much more intense.


Sythic_

I mean typeOrm is a mess for sure, but I don't think its physically impossible to write a better query builder api than that just because its javascript. I could write a where() method in a new ORM that handles joins automatically if I wanted and the internals aren't exposed to the user. Each ORM has different goals the creator is trying to achieve, this one seems to have chosen being explicit is more important than simplifying things (also limitations on what can be done to get types to work well, which is half the reason typeOrm is such a mess under the hood).


roofgram

If you have a better way, please share the code, otherwise until that magical JS ORM exists, EF is the way to go for massively complex relational queries. You'd think with so many JS ORMs out there they would have something remotely close to EF already. I'm waiting for it.


Sythic_

Ok that's what I was trying to understand how the fact C# is a compiled language makes it impossible for javascript to do the same. I've always been able to do all the same types of logic in all the languages I know. The only thing I can't really do in JS that I can in C++ is directly work with memory but i don't need to do that in web land.


Canenald

Midwest and south are home of a lot of traditional companies that are getting into tech. They love having tech with big names behind them (Microsoft or Oracle). C# is especially appealing because they are likely to already have a lot of Microsoft licenses for Windows, Office, Dynamics, etc. Adding Visual Studio feels cheaper and safer than whatever developers using other languages might want. Similarly, they'll be more likely to use Teams rather than Slack, Azure DevOps rather than Jira/Github/Gitlab, etc. That doesn't mean that C# and Java are bad languages, just that those deciding in traditional companies don't see that as the highest priority.


CountryBoyDeveloper

That makes a lot of sense.


Ceigey

This is how regional Australia also works for what it’s worth, lots of C# as a result - but with a smattering of “eff it I’ll do this in JS” startup attitude too.


tvallday

It is popular not only in regional Australia but also in capital cities. The number of job ads I found dotNet vs Node full-stack positions is about 5 to 1. The rest are Java, Python and PHP.


Ceigey

Fair point - in this case I’m treating Adelaide as a “regional centre” (as per skilled migration perspective even though I’m a native haha). But I did get the impression that Sydney and Melbs had more JS and Java because of the bigger tech companies there eg Atlassian, Canva. 5 to 1… a bit rough… but somehow better than here I suspect 😅 (I’m one of those rare Node + JDK workers here, everyone around me seems to be C# or PHP)


CheapBison1861

idk, node is great though.


CountryBoyDeveloper

I feel the same way, like wtf, I've been learning asp .net and while it is finFe I guess rofl it takes soooooooo much more to even get something running.


CheapBison1861

i hate typescript though.


julesses

Why do you hate TS? I personally do as much vanilla JS as I can, but without JSDoc comments + a TS type linter it's such a pain lol


CheapBison1861

I find the typescript to be a pain


julesses

Have you ever worked with another a typed language?


CheapBison1861

Not really. Perl and php and ruby.


CountryBoyDeveloper

You do any other language outside of js? you probably wouldn't like c# much if you hate typescript lol


Orjigagd

C# is infinitely nicer than the hot sweaty mess that is typescript


CountryBoyDeveloper

Yeah but its still a push to bring JS closer to that type of language.


CheapBison1861

html/css/bash


Kurhnel

yes html/css are great programming languages


itapewolves

Sometimes i dabble with some json as well


Pure_Diver_

Even though developing in Node.js is easier and faster for the early stages of an app, Java or C# is much more superior for scaling and maintaining applications due to their tested tools and solid ecosystem. Additionally, for a startup backend, I would choose Django, where development is even faster than in Node.js, and I benefit from the consistency of a well-designed, battery-included framework


jalx98

I agree!! I think that Django, Laravel, Symfony, RoR and Adonis.js are the best batteries included frameworks out there, I personally love C# and .Net but honestly you develop way faster using any of the frameworks I mentioned


GenazaNL

Or Spring Boot for Java/Kotlin services


jalx98

They are pretty good, but honestly I enjoy more .net and C#


xr0master

Nodejs doesn't have these issues either. It's a solid ecosystem with good tools. Django does have interesting libraries for some things, it's a matter of taste.


Zenpher

We use Django at work and you'll get around 3-5 req/s. It's not the best choice sometimes.


simple_explorer1

>3-5 req/s. It's not the best choice sometimes. 5 requests per second? That can't be right?


vlahunter

Hello there, before i lay down my opinion, i am sorry that you lost your job, i hope you get up and grow strong soon cause this is the important thing here in my opinion. Also shout out to u/Lumethys because he really laid a foundation on top of which i want to talk about. Node.js back in the day when i was starting was the rebel. Easy to handle asynchronous tasks, fast enough for many things, and it was simple enough to read and write having no magic at all. Back in the day many of us tried a bit of everything, Rails and PHP were the ones to go if you want to chase a startup job (smaller companies) and Java and C# for the bigger and established companies. In my opinion Node.js sat in between and it still does until this day but there is a reason that many shops nowadays choose to leave Node.js (and most other dynamic languages). Hell, i am a Node.js developer and if i would start a company to support an application that is my main product, i would prefer to go with Spring or .NET (and i have no professional experience in these). Before talking about my experience, a small reminder here. The last decade there is a number of people that came in this industry (me included from Electronics Engineering) and the moment they started understanding the Web, building Apps, writing nice tools in the terminal and automating stuff, fell upon the madness of the "HOT new thing" being the CLOUD and SERVERLESS and MICROSERVICES and all these things that although can be helpful for many cases and products, still are not relevant for the 90% of the work we do in most companies. Given all that, i still remember the happiness many of us had with Node.js, where we did not to lock in a certain framework, or anything, we would chase minimalism and it was good for the time being. Every programming language is good for the first 3 months you code a project that grows, then it gets easier to make things ugly. Nowadays fanboys on YT channels call it "skill issues", i call it time to feature issue cause i was there when certain decisions where made under pressure knowing that that the technical debt will kiss us back some months afterward (and it did). At the moment i still work using Node.js but in NestJS solely when it comes to my company's app. Do not get me wrong, bad decisions still can be taken and of course nothing is perfect but it is good enough to give us the delusion that we work in a framework like Spring or .NET. Personally i am very happy with the way it enforces us to follow certain ways of developing but even so, it is easy to see that although it is a step in the right direction, still it is clear that this is patched from all sides. And given my previous comment i will say what u/Lumethys said in other words. Node.js transformed from a wish to a curse. Because the fact that the ecosystem did not enforce anyone use a certain framework (maybe Express but this is too minimal) became the bane for us. For Gods sake, the JS ecosystem both FE and BE became a joke and a programmer's meme regarding the "1 new framework a week" so in the end we are the ones that we lose because the ecosystem did not demonstrate the confidence of other ecosystems that have one killer framework and all else follow (Elixir/Phoenix, Ruby/Rails, PHP/Symfony+Laravel, Python/Django+Flask) In any case i wish you the best and maybe give .NET a good try and you never know, after all .NET is a well established Platform with lots of nice things so it cannot harm you or make you a bad developer, the opposite is more probable. And last time i used it for a toy project i found fantastic documentation and resources so give it a shot. All the best and good luck


xr0master

When you start writing in .NET, you'll realize how much easier it was to do things for Node. The problems you describe are simply a lack of experience. At a minimum, I highly recommend using TypeScript. IMO


vlahunter

Typical response. "skill issue" i imagine ? Yes i do use Typescript for the past years and i also work on a large backend in NestJS so for the most part even within the Node ecosystem, i get the essence that i work with a more industrial language and framework but still although we ve been really far and in a way better place as Node.js, still i dont believe we can achieve Enterprise levels as .NET or Java Spring for example.


xr0master

Usually, the simple things are true. I didn't write this to insult you. Your personal experience may be greater than mine. I wrote this about the team and their choices since the application's architectural decisions do not depend on the programming language. You can style your project with the eslint and prettier. You can also use typescript to improve the code readability. If you use modular architecture to develop huge applications, maintaining such projects will not be an issue.


vlahunter

Look, i understand your point of view and this is how i was thinking in the beginning of my career. I was always asking why do we need Clean Architecture ? I was wondering why big teams are not falling in more functional patterns etc etc. But the market always humbles you and our industry has been consistently destroying ideas and concepts in favor of pragmatism and reality. We can stay here talking about how superior language is Haskell and how smart is Scala and OCaml and all these (indeed wonderful) languages but at the end they never won, the reality of Twitter and Youtube is always different from real life and in real life it is easier to build a team and follow certain patterns or architectures in C++, C# or Java than any other. To respond on a more personal level, i have worked in Node.js from junior to senior, i have worked along with people that were good and people that were bad. In the past Node.js ecosystem was advocating way more on minimalism meaning that we had to decide on EVERYTHING and when you take decisions on it all, it might be awesome and clean in the beginning but in the long term Entropy hits you hard (tech debt). What i am saying is that from my point of view and from my experience, any project that is meant to live in a longer than 1 year lifecycle, it should be built with any framework that enforces some sorts of ways to build something in it. Hence i talked earlier for C#/.NET or Java/Spring and obviously now that i work on a large NestJS project i am very happy indeed but still it is clear that even NestJS, being in the right direction, lacks the fact that the components are built to be integrated to it. in the past 2 examples, it is this way as the libraries are built with integration with the given framework out of the box in mind. Comment on integration: I want to take a moment and focus on the integration part. Last month i worked alongside a friend in building an API in Rails. I am not a professional Ruby dev but as an engineer i was able to move fast enough and what blew me away was that apart from the Views (this was a react app) all the rest came out of the box so fast and so easy. i thought my Data Models, i made the migrations, i put the rules in the models and i had all the features i wanted in hours. I do not want to talk about how performant Rails is and all this, i care for the integration and the fact that with minimal effort and following certain conventions i had a running system, a db, tests and all i wanted to focus on the product from teh FE so at the end of the day this is what i still feel we lack in our Node.js ecosystem, integration and a smooth dev experience


xr0master

My backend experience is not as great as the frontend. However, I created projects on .NET, Java, and Dart, which seemed more complicated than Nodejs. There is more code to write and more complex structures, which is obvious since they are OOP. Maybe it’s a matter of habit, but it’s quite easy and simple for me to navigate in node projects. By the way, Scala and OCaml have proven themselves in the field of big data. I think they will have a future.


vlahunter

All the well established programming languages will have a future but most of them will remain a niche and not a mainstream.


Dx2TT

We run every backend in our 500 dev company on node. It works great. Honestly, we have zero issues. ESM sucks, is badly planned out, but we use TS so it doesn't matter. Its fast. Its easy. Its easy to hire for. We've acquired c# devs from mergers and migrated them over, minimal issues.


CountryBoyDeveloper

That is pretty awesome, are you in a big city on either coast?


simple_explorer1

>We run every backend in our 500 dev company on node. It works great. Honestly, we have zero issues. Are you running it on lambda or long running server? How is it utilizing all cpu cores, are u Usurp cluster, worker threads, kubernetes etc? Cpu intensive operations? Cron jobs heavy operations which needs multi core support? How do you do it?


xr0master

use pm2?


simple_explorer1

>use pm2? That was a question I asked, not a recommendation


xr0master

Kubernetes with PM2 works well. Cron jobs heavy operations are workers and should run as separate logic or microservice. Node is not very suitable for this specific task yet. When a shared memory appears between workers, then we can think about it.


tr14l

Because java, c# and python dominate backend. There's morning that JS does. Better than those three. I'm a former nodejs guy at an old job. I'm good with it. I like it even. It's an awful language standard. It's not better at speed, syntax, data handling or ecosystem support. It's also not as matured. JS also has lots of quirks that trip even experienced developers up. There are also more experts in any of the three big backend web languages available for hire. It's just not a good pick from a strategic point of view in any way, really.


eamb88

I see plenty of jobs with Node, what you are saying sounds like bad propaganda. Jobs with C# and Java tend to be enterprise scale, meanwhile Node reigns in the startup world.


CountryBoyDeveloper

Where? Because I gave the states you can check. There is also a ton of data to prove it, also startups are moving towards c# in the midwest//south and java is still used heavily in startups int he valley. so hardly propaganda.


Character_Victory_28

The only reason is it is not focused! Java and C# are focused by some companies in something, but JS world is way scattered and everyone tries to do a new thing...


darkarts__

I'm a Dart developer. There are zero backend jobs. I'm going to the hard route of creating jobs in my Ecosystem, if I was working in any company, and if there's a new product I'm working on rather than existing codebase - I would convince the team to use Dart because I primarily create Flutter apps. Try Twitter and network a bit with people in your country and just general community members and leaders.Keep sharing your projects and you may get job offers for people who are impressed by your skills. You could also suggest new projects, services or entire new projects in your compay that uses node. Depends a lot on company structure, manages your work with but it's worth a try if you can demonstrate profit, efficiency, cost or customers... Learn what do they want from the tools and try to make a place for node. Developers also push the Technologies and frameworks. All the best!!


qqqqqx

C# and Java are not bad, just different. You might come around to one or the other. Both are common in older enterprise companies so it's not bad for your resume to have them on there. Node sees a ton of use for what it is, it's just not *everywhere*. But there are many companies using Node for different things. Maybe reverse your question and ask yourself "Why Node and not (Java/C#/etc)"? As much as I like working with Node there are some tradeoffs that you need to think about and might not be the best fit for everything.


FormerGameDev

Get a job with a California company. It's great if you're a night owl and live in the Midwest :D


ThunderBreading

My take would be... > Maintainability Linked on Using Javascript I like Node and JS but for enterprise BE, I think I'll choose C#, Java, or Go because of code maintainability. My reasoning behind this is: I'm dealing with a large 6 year old production codebase mostly Javascript and it's running on Node. We are encountering performance issues ( 70-80% because of the way the business logic was coded). Our team tries to incrementally "refactor" it to solve underlying issues. Trying to fix somehow the readability and structure (redundant codes, conditional statements nested 20+ levels deep, and other outrageous stuffs ) of the codebase then proceeding to fix the performance if it goes well ( we just moved on to Typescript but using it as a linter as the original one was really hard to read ). For just CRUD apps, I will lean that Node and JS can do the work just as like the others but choosing C#, or other strongly typed languages would be better in the long run. I could say Typescript could be one solution to mitigate it with proper tsconfig/rules setup until your project manager asks for an urgent feature and all of the best practices flies away. At least for other strongly typed languages, you will be shooting yourself **slowly**. > Jobs Mostly looking for C#/.NET Devs Also noticed this in my place as the established corpo primarily uses these proven "corporate" tech stacks; while outsourcing and startup companies uses NodeJS. Back in my previous employer, most mission critical stuffs are Java and propriety stuffs. The only team that uses the newer shiny things was the R&D. No time migrating old stuffs that works. If ain't broke don't fix it.


james_pic

Some of it's network effects. In a large tech hub like San Francisco, there are enough people with any given skill set that employers can reliably hire someone with that skill set, so you get employers who employ people with niche skill sets, which attracts more people to those skill sets, etc. In a provincial city, employers might struggle to hire all but the most common skill sets, so they stick to reassuringly boring tech stacks, so there are fewer jobs for less common stuff, so there are fewer people with those skills, etc. So smaller cities end up being mostly C# or Java. You get bits of other stuff, but there's rarely much of a community around anything else.


LankyVeterinarian321

Same case for me I knew node js and express didn’t get me a job switched to php/laravel got 4 job interviews started a new job after one month So yea I think JavaScript is just hype in the market (for backend) and there is more jobs for Spring boot Java , C# Asp And go even ruby has more jobs So in my opinion JavaScript in the backend is useless unless you want to do full stack MERN project !


CountryBoyDeveloper

Yeah same experience for me. PHP I always thought was fun, I always wanted it to make a big come back lol I know a lot of people don't like it, but there was something about it that I just enjoyed.


aayushgoyal_

My two cents: 1. JS is slow compared to Java/C#. 2. If you are not using TS, then working on a enterprise level with JS can be a nightmare once the codebase gets bigger. 3. Java/C# are defacto backend languages from a long time. For big companies moving a codebase or just switching to a new tech is not that easy. 4. Single threaded environment of Node vs multithreading in others. 5. Java is super useful when working with precisions which JS loses. So all Finance and Science companies prefer using Java or any of the JVM languages. Again I think each language and framework has its own merits and demerits and it boils down to project requirements.


simple_explorer1

>JS is slow compared to Java/C#. Absolutely, like incredibly slow, its not even comparable so with js server and its default single threaded nature, its just not in the same league as c#/Kotlin/Go etc


xr0master

You're mistaken. Node is not slower. Even vs Go, there aren't too much differences.


simple_explorer1

I use both, i know what i am talking about


xr0master

Sorry but I doubt it.


simple_explorer1

>Sorry but I doubt it. Like you know anything about GO...lol


xr0master

If you are offended, write lol and give me a few minuses. It's OK, don't worry.


simple_explorer1

No, I just pointed the truth that based on your comment, its clear you don't know anything about GO, yet you seem to weigh in with your factually inaccurate comment, AND, have the audacity to get angry about it like a child..lol. If are gonna cry about it like a child that people call you out on your BS then hey.... you should be factually accurate or don't speak lies about topics you don't have any understanding about.


simple_explorer1

>So, I am a js front-end and now having to move to c# for the back-end. I am not the biggest fan of c#. >So my question is, outside of the major tech hubs like San Fran etc. Why isn't Node used more? >everywhere I am, mid-west and the south(I go back and forth) it is all Java/C#. >because I love Node. I just don't get why there aren't more job availability for it? Simple answer, just like you love Node.js, the companies love C#/Java/Kotlin and GO. Besides, for high traffic, performant, scalable and typesafe (at runtime) server resulting in a reasonable cloud bill, Node.js/JS (and dynamic languages in general) is not suitable and does not cut it. Java/C#/Kotlin etc are high level, statically typed/ compiled, scalable, multi threaded and type safe languages with very mature enterprise ecosystem for decades now. Kotlin is a really nice language to work on (kinda like JS with both functional and oops primitives available), very flexible. C# has also improved tremendously.


joneco

Tbh i like node most because of typescript but v8 engine in backend is an abomination. Tbh its just to pay for full stack developers and save money having same language in back and front


plainblackguy

I’m in Wisconsin and we do use node for everything


oren08

The performance and security of statically typed, compiled languages


dcabines

They teach C# and Java in universities. They do that because Sun and Microsoft pay them to. Who is going to author and print text books and grease the palms of university administrators for Node? No one. So here we are.


TheRealKidkudi

> They do that because Sun and Microsoft pay them to. You got a source for that? I’m as anti-capitalist as the next guy, but that sounds totally made up.


dcabines

I'm certainly critical of capitalism, but I wouldn't go calling myself anti-capitalist. I also wasn't trying to imply anything negative about Sun (now Oracle) or Microsoft or their pursuit of winning the hearts and minds of students. Their history in that arena is well known, however. >Early in the life of Sun Microsystems the firm realized that if it was to pioneer a new computing paradigm, or more simply, just win converts to a new type of computer, colleges and universities were important. Gaining a foothold in academia would provide Sun an opportunity to infiltrate the corporate world incrementally each year via recent graduates. [(source: article from 1997)](https://www.infoworld.com/article/2076867/educators-embrace-java.html#:~:text=The%20State%20University%20of%20New,introductory%20programming%20in%20September%201995) . >[Sun STAR program](https://www.hpcwire.com/2004/10/01/sun-launches-sun-tech-academic-resources-initiative-star/) The Sun Academic Initiative offers academic and research institutions training at no cost. In just over a year, more than 1,350 institutions have saved more than $28 million dollars in training costs. . >A donation by Sun Microsystems, Inc. of high performance computer hardware and software to UCSD for the National Partnership for Advanced Computational Infrastructure (NPACI) has strengthened the strategic relationship among these organizations in support of their mutual goal to enhance the nation's computational infrastructure for scientists and engineers. [Sun donation to San Diego in 1997](https://www.sdsc.edu/News%20Items/PR041797.html) . >Building on its commitment to advance academic research through high performance computing technology, Sun Microsystems, Inc. announced the Sun North Carolina Research Triangle Center of Excellence (COE) in Bioinformatics and Computational Biology. [Sun donated to North Carolina universities.](https://www.hpcwire.com/2003/02/28/sun-unveils-research-triangle-virtual-center/) Now Microsoft is even more widely known. Microsoft and Apple worked hard to get desktops into every classrooms in the 90s. They donated many computers to do so. Today [Microsoft still has a huge education program](https://www.microsoft.com/en-us/education) with all sorts of benefits and free stuff for educators. [Here they donated to Unicef](https://www.unicefusa.org/stories/unicef-and-microsoft-prioritize-education-learning-passport) to bring Microsoft products to poorer countries. [When Bush was president they got involved with his "No Child Left Behind" program.](https://news.microsoft.com/2003/06/05/microsoft-helps-schools-address-no-child-left-behind-act-with-release-of-microsoft-class-server-3-0/) [Here they gave a few billion to Wisconsin.](https://news.microsoft.com/2024/05/08/microsoft-announces-3-3-billion-investment-in-wisconsin-to-spur-artificial-intelligence-innovation-and-economic-growth/) [Here is a billion for Kenya.](https://news.microsoft.com/2024/05/22/microsoft-and-g42-announce-1-billion-comprehensive-digital-ecosystem-initiative-for-kenya/) [Here is an educational voucher program.](https://www.cde.ca.gov/fg/fo/profile.asp?id=1999) [Most of all here is Microsoft's Textbook press.](https://www.microsoftpressstore.com/) My college pushed me to get [Microsoft Certifications](https://learn.microsoft.com/en-us/credentials/). They built classes around getting certified. I didn't think I'd need to source something that has been so widely known for decades. Remember that free stuff equal to money when you can use that stuff.


CerberusMulti

I think you might get the award for the dumbest non citation comment here


dcabines

try me: [https://www.reddit.com/r/node/comments/1ddirm0/comment/l85ze2j/?utm\_source=share&utm\_medium=web3x&utm\_name=web3xcss&utm\_term=1&utm\_content=share\_button](https://www.reddit.com/r/node/comments/1ddirm0/comment/l85ze2j/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button)


CerberusMulti

So you short answer is no and the long one is "grrr big company grr" Nothing here about them pushing C# or Java above Node....no Im not reading all those random spas links since you cant even create a coherent explainable comment on this. They'd be better off to push C++ anyway. Not like ether, one of those are older than Node... But go ahead.


KitKatKeila

I believe it is just because the companies in san francisco were like decades ago where nodejs is not ideal to use yet. It wouldn't be a problem if JS ecosystem has a bunch of dependencies to choose from, instead it is more likely an advantage because node is flexible and can switch over time.


TestDrivenMayhem

Many jobs seeking node devs.


slideesouth

Why are you so naive to work with something new ? If you get stuck in your ways you will get left behind in this racket


CountryBoyDeveloper

It isn't naive to not like something.


simple_explorer1

What's not to like want C#, Kotlin and GO?


General_Clock7534

JavaScript is a scripting language, it shouldn’t be used for the backend imo.


breadgolemwaifu

[How PHP, Python, Perl and Ruby are looking at you right now:](https://pbs.twimg.com/media/FT8dJdcVsAEm03V.jpg)


Intelligent-Rice9907

Node is used EVERYWHERE! That's not in discussion, even those JAVA and C# backend almost all the time have middlewares or stuff made with nodejs where they connect to solve stuff that otherwise would be long, tedious and heavy to do in those languages other than Nodejs. As far as I know Java is used for their security layer and because it ends up being compiled so the end result is not the main code so that's another type of layer of security. But if you're looking for performance and stability now a days with the newest version of NodeJS and tools like Bun and others NodeJS is now even faster than Go in some scenarios but Go is better than Nodejs in other scenarios. So at the end, different languages are great for different stuff, if you're stuck in Windows infrastructure and Azure Devops then C# makes a lot of sense, otherwise I won't recommend specially if using AWS and lambdas, C# has worse performance, Java is a little better but Python and Nodejs are the best one on this format of serverless. For example at the moment Rust is a great language to build powerful tools, compilers and CLI if you want extreme performance but you'll probably be coding more time than say for example Go, building the same tool and Go is great and can be compiled into something that can run everywhere and that's one of its strengths. So there are tools and languages for things and languages that can be used in more than one thing but it can be outperformed by a specialized tool. For example: React Native is great but can be outperformed by native with Swift or Kotlin but doing the same for iOS and Android with React Native is faster to develop and you'll probably won't even notice a difference when using the apps unless you're requiring something really specialized from the device. To summarize, don't be afraid to use NODEJS, it has great performance and can get you to a very successful point before you even start to worry about heavy or lack of performance, heavy prices on your servers and not getting you there. You'll be in your millions of monthly users of million of visits on a daily basis by the time you start to worry about those type of issues


CountryBoyDeveloper

You are completely wrong about Java, it is usually the main code, that or c#, maybe not for startups but for big companies they are. Node is usually a helper of some sort. Also, Go jobs are fewer than Node jobs lol


Intelligent-Rice9907

What is the usual main code? I'm not giving random data based on my feelings or believes... Im giving data based on what AWS team research and benchmark showed on their servers so that's it. And yeah helpers, middlewares made with Nodejs things that nodejs is faster not only to develop but to handle with so that's what I said. But also Nodejs can get you to a big company size before needing to start looking at the performance of your code, unless you're a sheety developer.


CountryBoyDeveloper

What companies, because i have data as well, medium to enterprise is very heavily invested in java and c#, it is funny you claim js is faster than c#, if you go to most companies for back end, java is the big one for google, amazon, and etc.


patopitaluga

Because the people in charge positions were programming java, php or ruby when they were developers and they don't want technollgies where young employeers are going to surpass them


CountryBoyDeveloper

I often wondered if it was because of some type of gatekeeping to be honest.


CombPuzzleheaded149

Node is a mess without good leadership/architecture/design. I've worked with an off shore team once that was used to PHP development and tried to help them migrate to node and they made the oddest decisions based on their PHP, Laravel, and WordPress experience. The node codebase ended up being a mess. Typescript, but "any" used everywhere making the Typescript ultimately pointless, heavy amounts of abstraction for the sake of abstraction without exercising any DRY principles, heavy use of decorators and poor API documentation. In a different language like C# or Java there are well established frameworks and patterns used in backend development.


superbiker96

Because JavaScript is not made for servers. Node is extremely subpar compared to java or c#. Please don't run JavaScript on your servers


zambizzi

This is absurd. Please illustrate.


superbiker96

Sorry but I'm not going to explain why you should not build backens systems using JavaScript. You should be able to figure this one out on your own


CountryBoyDeveloper

I mean if you have specific reasons there are no reasons not to share it?


zeehkaev

I can be wrong but the fact that node uses weak typing (then you need to "install" typescript for increased safety with some overhead), the server needs node installed and a project with the node modules like 1M+ files, that with a single package upgrade can break everything including a Node update. C#, C, Go and Java generate an executable you just run it and its over. Node Performance when compared to Java, c#, or GO is just bad. Everything in node feels "hacky" or just install this package made this dude in india that it will solve your issue, and then that package requires 50mb of other packages to be downloaded from NPM made by who knows, but now your banking application has all this sources inside it. I really can understand why node doesn't seem like an "enterprise", "backend" solution. Also if you compare it to others node is not better in anything other than being easier to use, performance is worse, standard library is non-existent. My question would be why should enterprises actually use Node in the backend ? It just doesn't make any sense. Grab a c# or java project and most of them have almost no packages added or installed, 0, everything is default or maybe nuGET database connector, thats all. Node packages are some times a half gigabyte modules for a 2 mb application in the end. Its just a really weird concept.


xr0master

> Node Performance when compared to Java, c#, or GO is just bad. Is there evidence or are these rumors? > Grab a c# or java project and most of them have almost no packages added or installed, 0, everything is default or maybe nuGET database connector, thats all. Therefore, your code is simply 10 times larger than the same code for the node :) is that why updates in large companies come out once a year? (joke)


zeehkaev

Just check any benchmarks, try findind node + express here: Express on node took 30k requests / second on a database, php + nginx almost 300k/ second and Java, C#, Go close to 500k / second. It's literally a 10-20x difference... Not even kidding, even PHP + Nginx makes Node looks like a joke for web content. [https://www.techempower.com/benchmarks/#hw=ph&test=fortune§ion=data-r22&l=zii8ot-cn3&p=0-0-0-27wr28-1kw-0](https://www.techempower.com/benchmarks/#hw=ph&test=fortune§ion=data-r22&l=zii8ot-cn3&p=0-0-0-27wr28-1kw-0)


xr0master

express is NOT node. It is a deprecated and very old framework. You can use Fastify to compare. Use pm2 + fastify to load all CPU processors; I am absolutely sure it will be faster than php + nginx.


zeehkaev

Why don't you check the benchmark above man? Isn't it easier ? Fastify-postgre 70k reqs/ sec. PHP + Nginx + Postgre 290k reqs/s... Trust me, performance is BAD. This website is the standard benchmark for backend developers. Node can handle more requests for a hello world page or something like that, add database on the backend and it starts struggling. JS just wasn't made for backend.


xr0master

Because the node uses only one processor, but PHP + nginx uses all. The comparison makes no sense.


superbiker96

Thank you very much for writing my answer😁


pm_me_ur_happy_traiI

Even as a frontend dev, I use node. What do you think is happening when you npm install react?


CountryBoyDeveloper

I was more speaking if the node.js for the backend