6 ms·
Serious question, why has nodejs become so ubiquitous in big companies (netflix, linkedin, walmart, trello, uber, paypal, medium, ebay, groupon, NASA) ? Is it
by Scarbutt 9y ago
Serious question, why has nodejs become so ubiquitous in big companies (netflix, linkedin, walmart, trello, uber, paypal, medium, ebay, groupon, NASA) ?
Is it because is the most practical option? like, there are no fast runtimes for dynamically-typed(for fast iteration) languages that also have big ecosystems and is well sponsored?
Fast - rules out Python and Ruby.
Dynamic - rules out Java, Scala and Go?
Clojure - to awkward for most companies, small ecosystem but can call Java, JS.
Lua - to niche.
If you need to write a backend(frontend?) for a SPA with SSR(or no SSR) or WebApp why would chose something else besides nodejs (ignoring familiarity with other lang and hating on JS)?
- drinchev 9y agoAccording to google trends [1]. Golang seems more popular than nodejs. 1: https://trends.google.com/trends/explore?date=all&q=Node.js,golang https://trends.google.com/trends/explore?date=all&q=Node.js,...
- pledg 9y agoI only search for 'node' not 'node.js'
- Already__Taken 9y agoAnd node/nodejs outstrip golang https://trends.google.com/trends/explore?date=all&q=Node.js,golang,node,nodejs https://trends.google.com/trends/explore?date=all&q=Node.js,...
- kgthegreat 9y agoDifferent search terms give different trends: https://trends.google.com/trends/explore?date=all&q=node%20js,golang https://trends.google.com/trends/explore?date=all&q=node%20j...
- mhd 9y agoPeople thought that frontend skills transfer to the backend if you only use the same language (And sadly they did).
- pjmlp 9y agoCheaper developers, anyone doing webpages can be hired for doing server stuff and easily replaceable, the dream of most enterprise shops.
- Cthulhu_ 9y agoMoot point tbf, Java developers are a dime a dozen too, it's something they learn in school. JS wasn't taught yet back in my day. The JS ecosystem does seem a lot more approachable though, you can just click through an installer and run a copy / past example, instead of a custom Java installer, IDE, configuration, Maven, all that stuff.
- brlewis 9y agoI see. Web pages are easy. Programming is hard, but we can fix that simply by putting programs in web pages. Then we take that same syntax out of the web page and put it elsewhere, so that all programming is easy. I don't think it works that way.
- laichzeit0 9y agoI understand your point. I started out as an embedded systems C developer. There are actually huge parallels between embedded work and nodejs. One of the reasons is you can forget about all that nasty race condition stuff you get with threading in most high level languages. There are also no pointers or direct memory manipulation. Nodejs is pretty much asynchronous by design. I think it really is harder to “shoot yourself in the foot” than using the oldguard method of developing backend systems. Maybe this partly explains why it is at least plausible.
- onurozkan 9y agoI'm not an expert but finding good javascript developers is easier than other languages. Since javascript has lot of hypes lately, people started to move javascript. And, in my opinion nodejs is really good for quick & lightweight solutions.
- jbergens 9y agoIs it really? I thought that there were many more experienced java and c# devs and not that many with node experience.
- chatmasta 9y agoHow many new businesses are built around Java or C#?
- thephyber 9y agoIMHO, one of the biggest barriers right now for developers is getting "pigeonholed" in the hiring process by hiring managers and recruiters into thinking that programming skills in one language don't translate to others. The automated filtering of resumes/applications only makes the issue worse. I think my reply to your comment would have to be something like: * it depends what type of project experience is required (desktop app, mobile app, web server, embedded device, etc) * it depends where the job is * it depends what sector you are talking about (governments tend to choose Microsoft languages more than startups) * it depends what age range of applicants is expected (I'd wager Java has is a decent bias towards older programmers who probably wouldn't get hired at most companies I've interviewed at)
- themihai 9y agoIt's nice to have people able to work on both backend and front-end. I think that's really the reason Node exists. Being able to fix anything within the stack makes you more agile than waiting for X team to do it for you. So it saves you time and possibly money as well(i.e expertise is easier to build). Now Node comes with all the JS issues so that's the tradeoff.
- jbergens 9y agoI think that the development speed was a huge factor, it was probably easier to get a good-enough node system up in 3 months than a similar system in java.
- smt88 9y agoI don't know of any mainstream language where 3 months is too short to do something fairly large. I do agree with your point, but I'd say "1 day" instead of 3 months. After enough time elapses, JS quirks and lack of typing become a net time loss, compared to (for example) C#.
- code_sloth 9y agoReally any developer that really wants to work on the backend should be able to pick up another language. End of the day it's just syntax, framework weirdness (js devs should be used to crazy language contortions), and data structures for ~80% of day to day work. Node just made the transition easier.
- tejasmanohar 9y agoDynamically-typed(for fast iteration) Such a popular mis-association. Once you get familiar with a good type system, you will be more productive. People are fooled by Java-- type inference cuts over half the pain. NodeJS rose to popularity because it was a gateway into non-PHP backends for your typical frontend dev.
- vog 9y ago"Dynamically-typed" often leads to "hard to refactor", which in turn slows down your iterations at a certain (surprisingly low) amount of code. This may still be less annoying than Java (especially before 1.8), but: Have you ever refactored code in OCaml? (or SML, or Haskell, for that matter) This is a breeze! It's mostly the ecosystem that drives me to Python and/or JavaScript.
- mbrock 9y agoHaskell with Aeson and Lens starts to approach convenience when dealing with deep JSON structures, but it's still kind of messy and arcane compared to JavaScript—in my opinion as a Haskell coder since 2004 who went to Chalmers, studied advanced functional programming, learned Agda, and works with Haskell full time. After years of learning I'm quite proficient with Haskell, and of course I recognize its enormous benefits, but I still totally understand the choice to use Node rather than Haskell, just like I also understand the choice to use bash for a lot of things! I think Haskell is a transition language that will be replaced soon enough, because its warts and deficiencies significantly hinder learning and adoption. TypeScript is probably a way more pragmatic choice for most people who want the majority of the benefits of a static type system.
- vog 9y ago> I think Haskell is a transition language that will be replaced soon enough What do you have in mind when you say that? One of the existing contenders? (SML, OCaml, Rust, Elm) Or something completely different?
- 9y ago
- edf13 9y agoNodejs is incredibly fast to prototype in... Performs well under load and scales well. The simple fact is you can try new ideas out quickly and very easily in Nodejs and then even take the raw prototype into production with a simple re-factor.
- qaq 9y agoI highly doubt people programming in other languages make more on avg. than same level eng. in Netflix or Linkedin programming in JS/Node.
- growtofill 9y agoElixir?
- xkcd-sucks 9y agoI asked this question to a CEO who pushed hard for nodejs. His answer was that the growth curve of the quantity of modules on npm was steep.
- pfooti 9y agoThere's probably a pot of contributing factors, but I want to point out two, as an old-fashioned c/c++ turned Java developer who moved to node and typescript. Typescript is fun. Java's type system is super unfun, with its interface-based approach to nominative typing. Of course, it has gotten better (I remember before generics, all the data structures had to have ridiculous cast statements to get stuff out). Type inference and structural are rad. Also, the javascript runtime basically has cooperative parallelism, which makes concurrency way easier to reason about. I love this fact. I think golang is going to eventually beat out node (or node will make a seismic shift in a multithreaded direction) for just this reason. Goroutines are a really good parallelism story. I don't have as much fun in go (I admit, this is a personal and ineffable metric) but it does seem to perform really well in a web socket sort of situation.
- rmrfrmrf 9y ago- Lightweight - Portable - Cross-platform - “Fast enough” out-of-the-box - Massive ecosystem - No need for an application container - Actively developed and maintained - Supports procedural, object-oriented, and functional styles equally - Non-proprietary programming language
- lewisl9029 9y agoReally hard to understate the "Massive ecosystem" aspect for Node. It's the reason why Node was at the forefront for this new wave of client-centric graph query systems (GraphQL, Falcor) that is well on its path to displacing REST as the go-to model for client-server communication.