HACKER Q&A
📣 techsin101

What is the best programming language and eco system for backend?


I've been programming in nodejs, js is fine but eco system has become toxic. Highly unstable, incohesive, probably insecure, and just painful.

You're lost orchestrating a dozen of libraries with conflicting dependcies and configuration that's in flux.

I'm done with webpack, typescript, loser react eco system where you drag 10 libraries through your code as soon you learn them only for them to become obsolete in 5 months, done with docker/image, done with Babel and its plugins, done with graph ql, redux... Just random bs stuck together aphazardly

I plan to leave js and thus front end development altogether. So my question is what is a good choice for backend language, ecosystem and all. Where things come , if not batteries included, then at minimum designed intelligently to work together.

I used to care about performance, but I'm open to compromise now. Car's speed doesn't matter if it breaks down every other mile.

I'm leaning towards python, Ruby, and go


  👤 ammmir Accepted Answer ✓
The grass is always greener... over the years I've built stuff with Perl, PHP, node.js, Ruby/Rails, Elixir/Phoenix, and Go. Each felt good at the time, but it's easy to get overwhelmed over the latest hyped frameworks and libraries. Don't like Typescript or Webpack? Nobody's forcing you to use them, you can still use node.js.

Tried and true principles and architectures will outlive any libraries. Remember, React is only 6 years old, do you think new projects will use React in another 6 years? Remember Meteor framework that was all the rage 7 years ago? I don't know anyone using it for new projects. It's the natural cycle of development. Don't get emotional about frameworks.

If anything, build _your own framework_. I don't mean a competitor to React or whatnot, but your own set of tools that can be reused over time across projects. Back in the days before jQuery, people were doing DOM manipulation themselves and everyone built their own wrappers around the DOM. Nowadays, I notice too many people reach for a framework without thinking about what they even want to accomplish.

At the end of the day, "best" is always subjective, relative to your own experience and expectations. For what it's worth, I used to be a node.js developer in the pre-1.0 days and switched to Rails, Elixir, Go, but I'll probably use node for my next project since it's super easy to get stuff running in messy JavaScript compared to something statically typed like Go. In most cases, performance is moot for projects without users. Hell, a CGI script written in Bash could rival the performance of modern web frameworks.


👤 iLemming
I've tried all the things you've mentioned and beyond. And I think finally found something I love. I've discovered Clojure. Nothing else gives me so much productivity and joy and the sense of stability. It's not perfect (nothing is) but it's a good balance between pragmatism of engineering and the art of logic based creativity.

Don't just "look" at it, don't try to "check it out". If you never done any Lisp, Clojure will not look extremely sexy at the first glance.

But give it a heartfelt try, I guarantee - you will find something truly incredible. Something that is still missing in many, perhaps most other language ecosystems.


👤 BjoernKW
When it comes to reliability, maintainability and a huge ecosystem it probably doesn't get any better than Java and the JVM. The JVM also fares great in terms of performance.

👤 elamje
Seems like you couldn’t go wrong with using the Java Virtual Machine or the Common Language Runtime(.Net).

Both have a wide variety of libraries and a reliable VM.

Plus, if you want more productivity, or to use other programming paradigms, you can use C# or F# for the CLR, and Groovy, Kotlin, Scala, or Clojure for the JVM. I believe all of them have full access to all C# or Java libraries.


👤 Scarblac
Python / Django is a very solid platform that I've always enjoyed working with. Python has a very rich ecosystem.

It has its warts (Python's tragic history with packaging systems) and Django isn't quite in the sweet spot anymore now that we usually only serve Rest Apis instead of Html pages. Python isn't typed (though there is mypy now) and slow, sometimes that matters.

So I don't know about "best", but that's an endless discussion anyway. We still get lots of mileage out of it.


👤 bigbassroller
I have felt the same way and choose Elixir and Phoenix. It’s not easy to get a job in but easy to get your current boss to allow if starting a new project at current job.

👤 ineedausername
Check Scala and it's frameworks, unless you don't like JVM based approaches.

👤 ooooak
I feel your pain, I managed a node app in production for 2+ years. That made me realize PHP is not that bad. Now I see this trend where people just throw in Typescript. Why not just use a statically typed language?

if you write lots of rest API you should use Go and thank me later.


👤 potta_coffee
For Python, Flask and Django are awesome. Ruby on Rails is awesome. For Go, just learn Go. I have some experience with each of these and I think they're all great choices.

👤 ktkization
Check out Ballerina. Interesting cloud based language https://ballerina.io/

👤 okaleniuk
"Best" is subjective. Some might argue that Assembly is the way to go: https://asm32.info/fossil/repo/asmbb/index

Personally, I had the most fun with Erlang and what happened to become N2O: https://github.com/synrc/n2o It is designed for speed not compromising reliability so it kind of looks like what you want.

Python+Django probably has better ecosystem though.


👤 moksly
The one you make work. No one is going to care if you run an ASP application on non-containerised IIS instances if your product is good.

👤 tlb
How about JavaScript using NodeJS without NPM? Modern JS is a good language, and you can easily opt out of the ecosystem.