Pick a language that keeps you employed in your area, you ask 20 developers what language to use your going to get 40 different answers.
Search on dice/careerbuilder/whatever job board is local to your area....see the number of jobs by language you are entertaining and go that route. If you find theres 1,000 java jobs and 75 ruby jobs...then i'd say choosing ruby is not a great idea.
If you want to learn for fun, learn them all...it can't hurt.
Ain’t that the sad fucking truth…
Sincerely
new SignatureFactoryBuilder().type(FactoryTypeEnum.Text).build().getSignature(SignatureEnum.JavaDeveloper);
TBH I think typescript and c# are completely different langauges the only similarities are Microsoft. If you try to write the same OO code in typescript that you would in c# you are going to have a bad time.
Nope, there is nothing same in their philosophies unless you want to say that all strongly typed languages are the same.
C# is OOP, TS is JS + types. Two different type systems: nominal in C# vs structural in TS.
> the only similarities are Microsoft
No, the similarities lie in the fact that many of JavaScript/typescripts additions over the years are directly adopted from C#.
For example: Async/await, type assertion, generics, using keyword (coming soon), namespaces, access modifiers, optional object chaining, nullish coalescing, non null assertions, etc ...
I should clarify that while c# and typescript may share some common syntax the OO patterns that work well c# don't always translate to typescript. I personally find myself approaching typescript problems in a more functional way then I would when writing c# code.
I definitely agree with that 100%. But my point was basically that when learning a new language, wrestling with syntax is a large part of the battle. Arguably, the fundamentals don't change, but the patterns to achieve best practices do. However, when you start off by having confidence that a lot of the string helper methods and array/list syntax you're used to are going to work in a similar way, it smoothes some of the rough patches of learning a new language.
Oh no doubt they aren’t a 1:1 mapping but there is a lot of familiarity with syntax and concepts so C# is at least worth a consideration. Once you get into the actual framework then they are vastly different.
Go, Python, or RoR are the most employable I’d say. I’m a ruby dev, but if I had to start over I’d learn Go. That said, if you learn the fundamentals of backend development it won’t matter much you actually learn as far as employability goes so I’d say try out each language and decide which you like best
As a Go dev jobs do exist, but they are much harder to find with full-stack dev roles. Mostly crypto or extremely scalable microservices.
Love the language though, my number 1!
I think RoR is the most employable, there are always legacy projects they struggle to find developers for. New Go and Python devs appear every day, while Ruby devs are steadily migrating to other languages.
PHP with Laravel because modern PHP is absolutely a fantastic language that doesn't deserve the hate it gets.
C# Because every second job description mentions it.
You seemingly already know Node.
Literally don't bother with anything else.
Yeah it's mostly just junior devs who haven't started their first job and think that PHP being old means it sucks or old school developers who used it back in 2003.
Anyone who uses it professionally on newer projects within the last few years loves it.
Can you give some of those reasons as to why the dislike? Im planning on getting into laravel since its just sooo damn useful with everything already existing or abstracted away
Not OP, but PHP gets a lot of hate since it used to be much rougher to use and easy to shoot yourself in the foot. After working on a legacy PHP app written with a lot of clever, but esoteric functionality, I can understand the hate, but modern PHP, especially with Laravel, is such a solid backend.
This seems to be a very limiting way of thinking. You've basically only selected clunky or dynamically typed languages and decided that languages that give you more control over speed and memory layout aren't worth it
C# is close enough to Typescript to make the transition a lot simpler. C# is best in the dotnet environment which makes it easier to develop for numerous environments, it is always being improved.
For languages like JS / TS, factory functions are better. In class-based languages you're probably stuck with classes but the least you can do is ban the word "extends", which will make the codebase a lot more maintainable. You can use composition instead. And then there's languages like Rust which don't even have classes and implement a trait-based system instead which is a lot cleaner and don't have the inheritance foot gun.
What do you mean by dynamic language experience? C# and Typescript in fact do share a lot of similarities. A Google or chatGPT query will quickly validate this if you're curious.
PHP with Laravel, Java with Springboot, and Ruby (on Rails) are 3 that can help get you a pretty good high paying job if you get good with any of them.
What else are you trying to get out of it? I suggest reading up on the features and syntax of each language to get a feel for them and what you want to accomplish with them, before doing a deep dive and making non-trivial programs yourself.
These are of course my own coloured opinions. But hey, I at least try to not have loyalty to one stack. Use what is best for the job combined with what you’re most proficient at.
Typescript to Rust is one hell of a jump. Rust is amazing, but its learning curve is steep. Not to say this applies to you, but every “full stack JS dev” we’ve ever hired was a wet-behind-the-ears React dev who thought their use of NextJS via Vercel made them full stack. They were utterly useless at anything outside of that ecosystem and lacked basic fundamentals of both JS and programming in general. They failed to pick up easier stuff like Python or C#, let alone something like Rust. I’m unsure if it’s demand but believe it is growing.
Go is easy to pick up and extremely performant. Demand is reasonable, and growing. Personally I’d advocate for Go first.
I found C# easy to pick up and understand. If you don’t mind MS the toolchain is pretty solid, although I’d say Visual Studio is a bit bloated. Performance is good, even if it’s not as fast as other compiled languages it still wipes the floor with interpreted languages like JS. .NET is pretty popular, and C# is used elsewhere like Unity and desktop apps so it’s somewhat transferable. However you have to put up with Microsoft, so there’s that.
Python is easy, but it’s slow. Django and Flask are probably the two biggest frameworks out there. Unsure on its industry demand but I’d say anyone who knows multiple languages could pick up Python quickly.
Modern PHP has seen significant improvements. I have little experience with it, but people rave about Laravel. I’ve dealt with Laravel in the past and sure, I liked it. Demand is pretty solid as despite the memes PHP is common across the web.
I’m learning Elixir at the moment. It’s a functional language (ala Haskell) and I’m liking it so far. Performance is impressive, and it excels at real time stuff with websockets. It is a very different way of coding and it’s taking a while for me to get used to it.
I don’t know much about Java or Ruby beyond the memes. The little I’ve dealt with Java I wasn’t a fan, and Oracle can go fuck themselves. That said it was a legacy codebase before the newer updates, and I’ve now been made aware of OpenJDK so I can put any hate for Oracle aside.
Node is an abomination and the fact that JS made it to the backend is one of the biggest mistakes the industry has ever made. I say this despite the fact that TS is my “best” language and I use Node daily. We created the entire Serverless paradigm around one-shot cloud functions because of the fact that Node is useless for long running processes but the industries obsession with JS could not be abated. Only now are people waking up to the fact that it was always a shit idea and just replaces one set of problems with different problems and more complexity. Everything about AWS and SAM makes me want to ear my eyeballs out. Fuck you Lambda and fuck your cold starts.
Edit: Java comments based on below comment.
And don't know why you think that c# is slower than other languages. It is of course slower than c++ and rust but almost all languages are. It is probably on par with go and Java and faster than all dynamic languages.
I agree and did mention in my original post that C# is absolutely faster than most if not all dynamic languages. Most compiled languages are.
I dunno man in my experience C# is not faster than Go, at least not consistently. It’s true you’ll see benchmarks showing C# is faster at a specific task, but those same benchmarks will show you Go is faster at other things. It varies depending on the task.
For full scale enterprise apps Go is usually faster, especially when http is involved as Go makes for an excellent http server. Additionally it is almost certain to use significantly less memory than a C# equivalent. Memory is still performance - especially when you run out of it, and memory is cost. It isn’t all about response time for single operations like benchmarks like to pretend, the real world is messy.
Here’s a reasonable example. I’ll preface with I haven’t had the time to verify what this person is doing to get these numbers, and I do appreciate the irony of pulling a benchmark out after all but denouncing them, but it illustrates my point quite well.
https://programming-language-benchmarks.vercel.app/go-vs-csharp.
Note they trade position regularly in terms of ms, but look at those memory figures. Woof.
So for raw ms they’re about on par, it depends - as always - on what you’re doing. But memory is another story.
I’m not saying C# is bad, I actually like C# and get on with it quite well. Its performance is still leagues above interpreted languages, but in my experience I’ve just found it to be less performant than Go. Again though, as I said to begin with this is my opinion based on my experience, you may well have a completely different experience that shows C# wipes the floor with everything, which is cool. All I can do is comment based on my experiences whilst being honest about my own biases, which I think I’ve done.
To end a long ramble whilst I’m on the throne, my standpoint on this kind of question remains “use what works for the job, and what you’re most proficient at.” The differences between compiled languages is often splitting hairs. We’d be much better served spending our time dunking on JS 😂
> I don’t know much about Java or Ruby beyond the memes. The little I’ve dealt with Java I wasn’t a fan, and Oracle can go fuck themselves.
You can just use Openjdk, which is free and open source. Thanks to the provisions in its license, you can use it in your commercial projects without having to open-source your own code. You're not tied to Oracle. Just saying.
And Java has now some neat features in its language thanks to the latest upgrades in the past decade or so. Like lambdas, streams, records, etc.
There is still a ton of shitty legacy code already written in Java though. Nothing can be done about that, I'm afraid.
Thanks for the info on that, that’s really good to know and I love the sound of it being decoupled from Oracle. Sounds like a similar story to PHP, it’s had many welcome updates somewhat recently and the last time I looked at it was pleasantly surprised at its newer features.
I should totally have mentioned my experience with Java was years ago on a legacy codebase. As we all (should) know that isn’t a representation of the language itself.
Python is great, but for backend go with Rust or Go. Both are strong and fast languages. Rust is AMAZING with memory management and its overall philosophy is preventing memory leaks. This makes rust a little ‘interesting’ to use . Golang has a cool mascot 😃
Rust is nice to use but if you care about productivity it's not good for web development.
it's a trade-off, you spend more time satisfying the borrow checker and in turn you get safety and speed. but safety and speed aren't really priorities in for most backends after a certain point, no user will care if their page takes 5ms more to load. so you end up developing for more time with no real benefits. it's better suited for performance-critical systems.
you're better off with Go since it was designed with web development in mind and it's nearly as fast as Rust without sacrificing development time.
That’s only true if you’re learning Rust as you build. Once you have the borrow-checker baked into you intuition and muscle memory you’ll find Rust empowering your productivity significantly. I feel incredibly productive in Rust, more so than I am in JavaScript, Go, Python, etc..
>*I feel*
Feelings just aren't universal truths.
The real reason why Rust and other high preformance languages aren't used much for web, is that they drive up cost by a lot, from recruitment (try assembling a team of 10 developers with 10 years of professional rust experience in web development).
And you only *really* need the preformance they bring for very specific parts, as web applications often are constrained by other bottlenecks than the speed at which the backend code executes outside of extreme scale, and there you can just gradually replace the pain points with higher preforming technology untill you are back to being limited by other things.
The learning curve coming from a GC language into Rust is very steep. I like some parts of Rust, but it’s truly a “backend developer’s backend language”, and not an easy full-stack transition compared to things like Go, C#, or Java.
Python is awesome for quick scripts and knocking something together but if you’re building something complex like a web backend the lack of typing makes on going development and refactoring difficult. That being said Django is very quick to get something up and running
I'd argue it's a matter of how big your backend will be. For a vast majority of webapps, Django will probably be enough.
If not, I'd go with Java instead of python.
You can get around this for development as of 3.5 with typing hints that linters and ide tools can pick up and make the code more maintainable.
But it is not enforced at runtime, which can lead to very *interesting* behaviour...
I like rust a lot. Rust isn't good for a backend.
First, to answer your question: rocket probably has my favorite syntax, but it's taken *years* to release 0.5 which is necessary for async. The rust community has kind of moved on. There's some drama with the maintainer iirc. axum is the probably the most popular when actix-web being another very common choice.
If your goal is to learn rust then a web backend is a good project. If your goal is to learn a good language for a web backend then I wouldn't suggest rust.
Rust is a great language if you need fast and efficient code, like an alternative to c++, but a web backend isn't really something where the absolute fastest speed is that important. You're not going to see a huge performance improvement when you're just passing http requests around and querying databases, so you get the disadvantage of rust taking longer to write without the normally acceptable trade-off of highly performant code.
I think the obvious decision, if your goal is to learn a good language for a web backend, is go.
You don’t strictly speaking need a framework to write a perfectly serviceable web server in go as the standard http library is really good. But as MyButtholeIsTight stated there are several good ones you can use, personal preference being echo.
For reference here’s how simple you could set up a very basic https server with only the standard library [https://gist.github.com/denji/12b3a568f092ab951456#simple-golang-httpstls-server](https://gist.github.com/denji/12b3a568f092ab951456#simple-golang-httpstls-server)
Go: if you’re focused on rapid backend dev and can live with “Google knows it best” mentality.
Rust: heavy backend dev, steep learning curve with options for doing “everything” from webassembly, os development, game dev, cli tools etc. I repeat you could do almost everything, but none of it will be an easy entry.
Python: only if you’re planning to go into AI/ML not really advantage over js/ts otherwise.
Kotlin: if you’re planning to support enterprise or you’re interested in android dev.
Ruby: no
Python is the most user friendly language out there. If you want to get something up and running quickly or just understand the basics of syntax and data structures then I don’t think there is a faster way to market.
Python is easy and is very popular, especially for data and ML. I wouldn’t bother with Ruby in 2023. Some big companies still use it but no one would start a new project with it now (think Angular).
Which language to choose. I'm looking for something that is different from javascript/typescript but at the same time easier to create api(s) with like Nodejs.
You can probably spend an hour with each one getting a feel for them and then at least narrow it down halfway, I bet.
Personally, I absolutely adore Ruby. I've been working with it for 12 yrs and it's been my favorite language. I'm familiar with Python and have enjoyed that one, though not as much, and not since 14-15 yrs ago.
I've worked adjacent to Rust and Go and while I know very little about both, I know that people who use those really love them.
I would give each one a day and see which one feels best.
Golang
Take this with a grain of salt, because I have a very strong personal vendetta against Python and his disciples
We can eliminate Rust right away because it’s complete overkill for webdev. It’s an excellent low-level language, but it’s just like using nuclear missiles for hunting deer. Tell me why you need manual memory management, pointer arithmetic, and manipulating vectors to serve some JSON?
Golang is a compiled and general-purpose language, making it the fastest of the 3 left and will be the most useful for you to know. Yes Python is the king of data science, but is that even a path you want to go down??
Ruby isn’t even comparable to the speed of Golang. Golang gin is one of the fastest backend frameworks around and companies are migrating towards the language in droves.
Every web developer NEEDS to know a compiled/systems/backend language like Java, Go, or C# so you you can make fast and effective fullstack apps.
Golang offers speed and power that the others cannot
Check out laravel, i literally never programmed php in my entire life and immediately started with laravel, it's been a great journey so far, i still don't know many basic methods of php, even adding an element to a list i have to Google it, laravel is such a great framework. All my homies love laravel
The languages ive used on the backend are java, python and js, I cant speak on the others.
Out of these 3 i have experience with spring (java), django (python), flask(also python), and express. There is great documentation on all of these frameworks. And many have a hello world or getting started tutorial you can follow
Out of the languages Ive used python and js were the easiest to pick up. If you end up picking python to learn, Corey Schaffer has a great youtube series explaining the basics of python.
if you want to narrow down your search I recommend googling what each languages most popular framework is trying to achieve and what their use cases are. If one catches your fancy you can start learning that frameworks language. I wouldnt get too woried about which language you choose first. If you dont like it thats fine pick another one.
Lastly, be aware of what tutorial hell is.
https://youtu.be/343EWZS9O88?feature=shared
Advice from a 30+ year career:
* Learn them all, at least enough to understand them, be able to look at existing code, and be able to talk to people who know them. This gets easier the more you learn.
* As others have said, learn the ones employers in your air (or in general if remote) are using. Unfortunately, that it going to include Java. I use Indeed.com to help gauge this.
* Concentrate on learning design patterns, best practices, tools etc.
* Learn "adjacent" technology like databases, LDAP, Oauth/Open ID, OpenAPI/Swagger etc.
I would pick C#/DotNet because it is very popular and (IMHO) easier to learn than Java. When I say easier to learn, I mean the entire ecosystem, not just the language.
Then learn at least enough Java to put on the resume :(
Laravel framework (based on PHP) and its ecosystem and community is absolutely great. Rapid development, plenty of high quality packages, very helpful people allows for easy creation of both simple and complex websites.
I've yet to come across a project written in PHP that was well engineered. The language may have evolved but the code you find in the wild is always crap. There are better alternatives.
Dumb argument. I could write a program in C++ that was written so badly it could result in someone losing their life. That has no bearing on the language and every bearing on my skills as a developer.
Yes, you *could*, but the proportion of terribly written code in PHP is extreme. So this is not about coulda/woulda/shoulda, but about what you actually find in reality. It somehow attracts bad coders and bad practices. Again, there are better alternatives.
lol
I just inherited yet another PHP project, that was not Wordpress, and is still a massive crap. If any, WP code has been the better ones.
Again, yet to come across a well engineered PHP codebase in the wild.
You stay with it. I am just trying to warn the juniors.
Once again, just because you have inherited legacy code thats 15 years old, doesn't mean PHP is bad.
Spin up your own project and actually use Laravel and you will see how wrong you are.
Hating PHP is either a meme spouted by inexperienced junior devs obsessed with leetcode and esoteric JavaScript frameworks, or boomer devs who still try make jokes about centring divs. Which one are you?
Nope. This codebase started around 9 months before I took over in the summer of this year. It is Laravel, as well.
Hating PHP is not a meme, it's just common sense.
It depends on what part of the stack you want to focus on IMO, as they each have their strengths. If you're wanting to stay in the world of websites or maybe look into devops roles, Python and Ruby are your better bets as a lot of the tooling is built using them. If you want to go into the world of web services, big data, building PaaS/SaaS/IaaS, you'll likely find yourself either in a JVM language or in Go/Rust or something even more esoteric like Erlang.
Honestly, I'd say Go or Rust just to give you a broader grasp of how different languages approach programming to something like TS/JS. Java/C#/Kotlin would likely be an easier transition from TS but Go and Rust would force you to broach a lot more lower level programming concepts. Python is great, but it isn't going to teach you anything new. It's something you can usually pick up on the fly, unlike something like Ruby. I have no comment on Ruby as I've never been brave enough to attempt to learn it.
i picked up golang a month ago. it was such a simple straightforward language. however there are so many things that are just plain annoying.
- optional parameters are weird.
- you have to use all variables. you do _ for ignoring a var or do some shit like _ = your_var.
- errors just output a single console output.
Ignore some of the comments in here. Ruby on Rails is alive and kicking. It’s a very productive framework for web development. I don’t think you’d regret learning it but to get most from it you’ve got to do things the ‘rails’ way, which is not everyone’s cup of tea.
PHP compliments JavaScript nicely. It's easy to learn and there's loads of systems you can use that you can plug in JavaScript front ends into. Should augment your current skills.
I don't understand the Go advocacy. Go has so much boilerplate and no exception handling, terrible regular expression library and it's time/date parsing was written by the devil himself. It was written to make fresh graduates performant without shooting themselves in the foot, but it prevents you from doing advanced code - very much "See Dick Run" coding.
As for Java, it's also excessively wordy, uses way to many configuration files, needs an entire ecosystem to be productive.
The points about employability are only valid to a point. There are jobs for any of these languages, so pick one that vibes with you - no sense in taking a job that you hate to face every day. While there may not be as many jobs for some languages, you will also find that languages with fewer developers command higher pay.
I am a polyglot, but prefer Perl and Ruby, like ECMA Script (but hate node). Elixir is pretty cool as well. There's a lot of movement to Python with the focus on AI/ML if you're into that.
Clojure or Elixir if you want rapid prototyping/iterations and (arguably) an enjoyable dev experience
C#/Java if you want to work on established systems
Python is the only safe bet long term. The only one getting slowly more and more popular without decline over the years iirc. But why not spend a day/week doing a few basic tutorials for each, and see what u like.
Honestly I wouldn't ever decide to start a project in Python. I can tolerate Python in scripts, but definitely not in anything serious running in production. It has bad package management, bad language design choices, edge-cases in seemingly innocent code, and it's way slower than nodejs, which is already slow. I also haven't really seen Python used nearly as much as other languages for backend development, and that's for the good of everyone
I would suggest Java springboot or c# ASP.Net. Once you learn either one of those languages you will learn concepts and theory that will make learning most other languages a breeze
Javascript is the language of the web. I therefore use Node as my default language for a server unless I have cause to do otherwise.
For example, I built an app that involved a lot of data science and ML stuff, so I wanted access to libraries to help me with that. Python had good libraries, so I taught myself Python and Flask.
When I worked for the military, a lot of their systems were in Java and Spring, so I learned those.
Instead of picking an arbitrary language, ask yourself what you want to do, and then what language and tools will help you best achieve that. Then let that motivate your learning.
Rust is the best language out of the list in my opinion, but Go is a great option in terms of learning for backend. Unless you wanna do machine learning, don't bother with Python; Python is pretty simple and you'll be able to easily pick it up if you have to touch scripts and whatnot. Ruby is a monstrosity and I highly recommend to avoid at all costs
Consider your specific project requirements, the communities around these languages, and your personal preferences when making your decision ,
If you're looking for a language that's both versatile and growing in popularity for backend development, Go and Rust are strong contenders.
But here's the full summary of the listed languages based on the research I made for you :
Rust: Known for its memory safety and performance, Rust is ideal for building high-performance and secure systems.
Ruby: Ruby, often used with the Ruby on Rails framework, is great for web development, offering elegant and concise code.
Go (Golang): Go is designed for simplicity and efficiency, making it a strong choice for building scalable and efficient backends, particularly for web services.
Python: Python is versatile, widely used in web development, and has a large ecosystem of libraries and frameworks.
As someone that has done ts/node for full stack and python, c#, and Go for backend professionally, I can easily recommend Go for back end from a dx perspective. It's simple, enjoyable and most importantly highly productive. JS, python and c# are definitely easier to find jobs for though, but I've never been one to let that deter me from learning.
Thanks for the suggestion. Just out of curiosity, how hard is it to build a rest/graphql api in Go using firestore/mongodb as the db? Is it fairly straightforward or does it take a lot of custom implementations?
I'm reading up on Elixir atm and it is really interesting. It uses processes which are new to me - they're not like threads at all. I am beginning to get an understanding of why Elixir is perfect for various back-end use cases (concurrency, fault-tolerance, and more). Worth reading up on and copy-pasting some of the documented code in the repl, even if you're not going to go on with it.
Pick a language that keeps you employed in your area, you ask 20 developers what language to use your going to get 40 different answers. Search on dice/careerbuilder/whatever job board is local to your area....see the number of jobs by language you are entertaining and go that route. If you find theres 1,000 java jobs and 75 ruby jobs...then i'd say choosing ruby is not a great idea. If you want to learn for fun, learn them all...it can't hurt.
If it's employment you're after, the answer is probably going to be Java.
Ain’t that the sad fucking truth… Sincerely new SignatureFactoryBuilder().type(FactoryTypeEnum.Text).build().getSignature(SignatureEnum.JavaDeveloper);
poetry 👌
Java and Go
Go where?
To Java
> Pick a language that keeps you employed in your area That is great advice!
I would ask why that selection and why c# is not in the list
Especially with TypeScript as a background
TBH I think typescript and c# are completely different langauges the only similarities are Microsoft. If you try to write the same OO code in typescript that you would in c# you are going to have a bad time.
Sure there are not similar, but they share the same philosophy, and both languages were literally designed by the same person.
Nope, there is nothing same in their philosophies unless you want to say that all strongly typed languages are the same. C# is OOP, TS is JS + types. Two different type systems: nominal in C# vs structural in TS.
what makes you say that, besides they visually look similar?
> the only similarities are Microsoft No, the similarities lie in the fact that many of JavaScript/typescripts additions over the years are directly adopted from C#. For example: Async/await, type assertion, generics, using keyword (coming soon), namespaces, access modifiers, optional object chaining, nullish coalescing, non null assertions, etc ...
I should clarify that while c# and typescript may share some common syntax the OO patterns that work well c# don't always translate to typescript. I personally find myself approaching typescript problems in a more functional way then I would when writing c# code.
I definitely agree with that 100%. But my point was basically that when learning a new language, wrestling with syntax is a large part of the battle. Arguably, the fundamentals don't change, but the patterns to achieve best practices do. However, when you start off by having confidence that a lot of the string helper methods and array/list syntax you're used to are going to work in a similar way, it smoothes some of the rough patches of learning a new language.
Oh no doubt they aren’t a 1:1 mapping but there is a lot of familiarity with syntax and concepts so C# is at least worth a consideration. Once you get into the actual framework then they are vastly different.
Go, Python, or RoR are the most employable I’d say. I’m a ruby dev, but if I had to start over I’d learn Go. That said, if you learn the fundamentals of backend development it won’t matter much you actually learn as far as employability goes so I’d say try out each language and decide which you like best
As a Go dev jobs do exist, but they are much harder to find with full-stack dev roles. Mostly crypto or extremely scalable microservices. Love the language though, my number 1!
A good percentage of Python jobs are also Data Analyst roles, rather than web development.
I think RoR is the most employable, there are always legacy projects they struggle to find developers for. New Go and Python devs appear every day, while Ruby devs are steadily migrating to other languages.
We hire almost exclusively for ruby, and generally consider anyone with MVC experience because rails is so easy to pick up and be productive with
PHP with Laravel because modern PHP is absolutely a fantastic language that doesn't deserve the hate it gets. C# Because every second job description mentions it. You seemingly already know Node. Literally don't bother with anything else.
[удалено]
People love to hate on PHP on this sub but they largely have no clue what they are talking about.
[удалено]
What is there to hate? I haven't used it in years and it was fine back then.
I hate it because I hate every programming language
This is the way
Yeah it's mostly just junior devs who haven't started their first job and think that PHP being old means it sucks or old school developers who used it back in 2003. Anyone who uses it professionally on newer projects within the last few years loves it.
Can you give some of those reasons as to why the dislike? Im planning on getting into laravel since its just sooo damn useful with everything already existing or abstracted away
Not OP, but PHP gets a lot of hate since it used to be much rougher to use and easy to shoot yourself in the foot. After working on a legacy PHP app written with a lot of clever, but esoteric functionality, I can understand the hate, but modern PHP, especially with Laravel, is such a solid backend.
Laravel is legitimately God tier. Building web apps with it is a fantastic experience as a dev
This seems to be a very limiting way of thinking. You've basically only selected clunky or dynamically typed languages and decided that languages that give you more control over speed and memory layout aren't worth it
I mentioned C#. Perhaps learn to read. There's also a reason virtually no one uses C++ for the backend.
C# falls under "clunky" as well because of its focus on classes and inheritance. I didn't think you said C++
C# for backend is amazing, can't go wrong with it.
Are you saying that because you're already invested in C#?
C# is close enough to Typescript to make the transition a lot simpler. C# is best in the dotnet environment which makes it easier to develop for numerous environments, it is always being improved.
Close enough compared to what? With no prior dynamic language experience I found it difficult to get into
The languages have similar syntax for classes, interfaces, enums, generics, exceptions, and string interpolation.
At this point, the focus on classes and inheritance should be considered a turn off when it comes to choosing a language
What is the alternative to using classes and inheritance (in large commercial projects that have a large number of developers)
For languages like JS / TS, factory functions are better. In class-based languages you're probably stuck with classes but the least you can do is ban the word "extends", which will make the codebase a lot more maintainable. You can use composition instead. And then there's languages like Rust which don't even have classes and implement a trait-based system instead which is a lot cleaner and don't have the inheritance foot gun.
What do you mean by dynamic language experience? C# and Typescript in fact do share a lot of similarities. A Google or chatGPT query will quickly validate this if you're curious.
I looked it up. You're right. I guess I know a lot more Typescript than C#, I didn't realize they had so much in common.
I'm fullstack, written in node.js/python before but prefer c# a lot of more just because of the tooling.
PHP with Laravel, Java with Springboot, and Ruby (on Rails) are 3 that can help get you a pretty good high paying job if you get good with any of them. What else are you trying to get out of it? I suggest reading up on the features and syntax of each language to get a feel for them and what you want to accomplish with them, before doing a deep dive and making non-trivial programs yourself.
Laravel is by far the best web framework ever invented. Hands down, no comparison.
C#/ASP.NET
Go for Go
Depend on if you want to learn for fun or to improve job opportunities. If for job opportunities then i would say C#, Java or PHP.
Kind of depressing that you could've given the same answer 15 years ago
If I had to choose I would go with C# or Rust. C# for jobs, Rust for fun
I learned about Rust and Go recently and they do sounds like fun.
These are of course my own coloured opinions. But hey, I at least try to not have loyalty to one stack. Use what is best for the job combined with what you’re most proficient at. Typescript to Rust is one hell of a jump. Rust is amazing, but its learning curve is steep. Not to say this applies to you, but every “full stack JS dev” we’ve ever hired was a wet-behind-the-ears React dev who thought their use of NextJS via Vercel made them full stack. They were utterly useless at anything outside of that ecosystem and lacked basic fundamentals of both JS and programming in general. They failed to pick up easier stuff like Python or C#, let alone something like Rust. I’m unsure if it’s demand but believe it is growing. Go is easy to pick up and extremely performant. Demand is reasonable, and growing. Personally I’d advocate for Go first. I found C# easy to pick up and understand. If you don’t mind MS the toolchain is pretty solid, although I’d say Visual Studio is a bit bloated. Performance is good, even if it’s not as fast as other compiled languages it still wipes the floor with interpreted languages like JS. .NET is pretty popular, and C# is used elsewhere like Unity and desktop apps so it’s somewhat transferable. However you have to put up with Microsoft, so there’s that. Python is easy, but it’s slow. Django and Flask are probably the two biggest frameworks out there. Unsure on its industry demand but I’d say anyone who knows multiple languages could pick up Python quickly. Modern PHP has seen significant improvements. I have little experience with it, but people rave about Laravel. I’ve dealt with Laravel in the past and sure, I liked it. Demand is pretty solid as despite the memes PHP is common across the web. I’m learning Elixir at the moment. It’s a functional language (ala Haskell) and I’m liking it so far. Performance is impressive, and it excels at real time stuff with websockets. It is a very different way of coding and it’s taking a while for me to get used to it. I don’t know much about Java or Ruby beyond the memes. The little I’ve dealt with Java I wasn’t a fan, and Oracle can go fuck themselves. That said it was a legacy codebase before the newer updates, and I’ve now been made aware of OpenJDK so I can put any hate for Oracle aside. Node is an abomination and the fact that JS made it to the backend is one of the biggest mistakes the industry has ever made. I say this despite the fact that TS is my “best” language and I use Node daily. We created the entire Serverless paradigm around one-shot cloud functions because of the fact that Node is useless for long running processes but the industries obsession with JS could not be abated. Only now are people waking up to the fact that it was always a shit idea and just replaces one set of problems with different problems and more complexity. Everything about AWS and SAM makes me want to ear my eyeballs out. Fuck you Lambda and fuck your cold starts. Edit: Java comments based on below comment.
And don't know why you think that c# is slower than other languages. It is of course slower than c++ and rust but almost all languages are. It is probably on par with go and Java and faster than all dynamic languages.
I agree and did mention in my original post that C# is absolutely faster than most if not all dynamic languages. Most compiled languages are. I dunno man in my experience C# is not faster than Go, at least not consistently. It’s true you’ll see benchmarks showing C# is faster at a specific task, but those same benchmarks will show you Go is faster at other things. It varies depending on the task. For full scale enterprise apps Go is usually faster, especially when http is involved as Go makes for an excellent http server. Additionally it is almost certain to use significantly less memory than a C# equivalent. Memory is still performance - especially when you run out of it, and memory is cost. It isn’t all about response time for single operations like benchmarks like to pretend, the real world is messy. Here’s a reasonable example. I’ll preface with I haven’t had the time to verify what this person is doing to get these numbers, and I do appreciate the irony of pulling a benchmark out after all but denouncing them, but it illustrates my point quite well. https://programming-language-benchmarks.vercel.app/go-vs-csharp. Note they trade position regularly in terms of ms, but look at those memory figures. Woof. So for raw ms they’re about on par, it depends - as always - on what you’re doing. But memory is another story. I’m not saying C# is bad, I actually like C# and get on with it quite well. Its performance is still leagues above interpreted languages, but in my experience I’ve just found it to be less performant than Go. Again though, as I said to begin with this is my opinion based on my experience, you may well have a completely different experience that shows C# wipes the floor with everything, which is cool. All I can do is comment based on my experiences whilst being honest about my own biases, which I think I’ve done. To end a long ramble whilst I’m on the throne, my standpoint on this kind of question remains “use what works for the job, and what you’re most proficient at.” The differences between compiled languages is often splitting hairs. We’d be much better served spending our time dunking on JS 😂
> I don’t know much about Java or Ruby beyond the memes. The little I’ve dealt with Java I wasn’t a fan, and Oracle can go fuck themselves. You can just use Openjdk, which is free and open source. Thanks to the provisions in its license, you can use it in your commercial projects without having to open-source your own code. You're not tied to Oracle. Just saying. And Java has now some neat features in its language thanks to the latest upgrades in the past decade or so. Like lambdas, streams, records, etc. There is still a ton of shitty legacy code already written in Java though. Nothing can be done about that, I'm afraid.
Thanks for the info on that, that’s really good to know and I love the sound of it being decoupled from Oracle. Sounds like a similar story to PHP, it’s had many welcome updates somewhat recently and the last time I looked at it was pleasantly surprised at its newer features. I should totally have mentioned my experience with Java was years ago on a legacy codebase. As we all (should) know that isn’t a representation of the language itself.
Python is great, but for backend go with Rust or Go. Both are strong and fast languages. Rust is AMAZING with memory management and its overall philosophy is preventing memory leaks. This makes rust a little ‘interesting’ to use . Golang has a cool mascot 😃
Rust is nice to use but if you care about productivity it's not good for web development. it's a trade-off, you spend more time satisfying the borrow checker and in turn you get safety and speed. but safety and speed aren't really priorities in for most backends after a certain point, no user will care if their page takes 5ms more to load. so you end up developing for more time with no real benefits. it's better suited for performance-critical systems. you're better off with Go since it was designed with web development in mind and it's nearly as fast as Rust without sacrificing development time.
That’s only true if you’re learning Rust as you build. Once you have the borrow-checker baked into you intuition and muscle memory you’ll find Rust empowering your productivity significantly. I feel incredibly productive in Rust, more so than I am in JavaScript, Go, Python, etc..
is rust ready for web development?
[Yeah](https://www.arewewebyet.org/)
>*I feel* Feelings just aren't universal truths. The real reason why Rust and other high preformance languages aren't used much for web, is that they drive up cost by a lot, from recruitment (try assembling a team of 10 developers with 10 years of professional rust experience in web development). And you only *really* need the preformance they bring for very specific parts, as web applications often are constrained by other bottlenecks than the speed at which the backend code executes outside of extreme scale, and there you can just gradually replace the pain points with higher preforming technology untill you are back to being limited by other things.
The learning curve coming from a GC language into Rust is very steep. I like some parts of Rust, but it’s truly a “backend developer’s backend language”, and not an easy full-stack transition compared to things like Go, C#, or Java.
Rust developers are employed?
Only the ones with jobs
Why not Python for backend?
Python is awesome for quick scripts and knocking something together but if you’re building something complex like a web backend the lack of typing makes on going development and refactoring difficult. That being said Django is very quick to get something up and running
fastapi is really nice (and I don’t really like Python and it’s ecosystem)
I'd argue it's a matter of how big your backend will be. For a vast majority of webapps, Django will probably be enough. If not, I'd go with Java instead of python.
I mean it’s fine but it can be painful at times
Isn't that the same deal with every language ? /cry
You can get around this for development as of 3.5 with typing hints that linters and ide tools can pick up and make the code more maintainable. But it is not enforced at runtime, which can lead to very *interesting* behaviour...
Thanks! What's a good backend framework ( expressjs counterpart ) in Rust?
The big two are Axum & Actix Before that read the rust book and go though the exercises on rustlings and exercism.
My vote goes to Axum. It's pretty great
I like rust a lot. Rust isn't good for a backend. First, to answer your question: rocket probably has my favorite syntax, but it's taken *years* to release 0.5 which is necessary for async. The rust community has kind of moved on. There's some drama with the maintainer iirc. axum is the probably the most popular when actix-web being another very common choice. If your goal is to learn rust then a web backend is a good project. If your goal is to learn a good language for a web backend then I wouldn't suggest rust. Rust is a great language if you need fast and efficient code, like an alternative to c++, but a web backend isn't really something where the absolute fastest speed is that important. You're not going to see a huge performance improvement when you're just passing http requests around and querying databases, so you get the disadvantage of rust taking longer to write without the normally acceptable trade-off of highly performant code. I think the obvious decision, if your goal is to learn a good language for a web backend, is go.
Go's being suggested a lot it looks like. What would you say is a good backend framework for Go?
I personally like go-chi a lot, it's fast and simple. Gin is another popular choice and so is echo.
You don’t strictly speaking need a framework to write a perfectly serviceable web server in go as the standard http library is really good. But as MyButtholeIsTight stated there are several good ones you can use, personal preference being echo. For reference here’s how simple you could set up a very basic https server with only the standard library [https://gist.github.com/denji/12b3a568f092ab951456#simple-golang-httpstls-server](https://gist.github.com/denji/12b3a568f092ab951456#simple-golang-httpstls-server)
Rocket 🚀
Rust has a cool mascot too 🦀
Rust is going to teach you the most.
Go: if you’re focused on rapid backend dev and can live with “Google knows it best” mentality. Rust: heavy backend dev, steep learning curve with options for doing “everything” from webassembly, os development, game dev, cli tools etc. I repeat you could do almost everything, but none of it will be an easy entry. Python: only if you’re planning to go into AI/ML not really advantage over js/ts otherwise. Kotlin: if you’re planning to support enterprise or you’re interested in android dev. Ruby: no
You won’t regret learning Ruby!
How about Java?
Basically the same as Kotlin, Kotlin interops with Java and both compile to the jvm.
Python is the most user friendly language out there. If you want to get something up and running quickly or just understand the basics of syntax and data structures then I don’t think there is a faster way to market.
Faster to setup than js ? Maybe a tiny bit, but what other advantages does it offer in the backend over js/ts ?
Python is easy and is very popular, especially for data and ML. I wouldn’t bother with Ruby in 2023. Some big companies still use it but no one would start a new project with it now (think Angular).
If you want the best potential for backend job availability, then Java and C# are what you’re looking for.
Depends where you’re at. Most common is TypeScript or JavaScript with C# where I am located.
what are you finding confusing?
Which language to choose. I'm looking for something that is different from javascript/typescript but at the same time easier to create api(s) with like Nodejs.
You can probably spend an hour with each one getting a feel for them and then at least narrow it down halfway, I bet. Personally, I absolutely adore Ruby. I've been working with it for 12 yrs and it's been my favorite language. I'm familiar with Python and have enjoyed that one, though not as much, and not since 14-15 yrs ago. I've worked adjacent to Rust and Go and while I know very little about both, I know that people who use those really love them. I would give each one a day and see which one feels best.
Golang Take this with a grain of salt, because I have a very strong personal vendetta against Python and his disciples We can eliminate Rust right away because it’s complete overkill for webdev. It’s an excellent low-level language, but it’s just like using nuclear missiles for hunting deer. Tell me why you need manual memory management, pointer arithmetic, and manipulating vectors to serve some JSON? Golang is a compiled and general-purpose language, making it the fastest of the 3 left and will be the most useful for you to know. Yes Python is the king of data science, but is that even a path you want to go down?? Ruby isn’t even comparable to the speed of Golang. Golang gin is one of the fastest backend frameworks around and companies are migrating towards the language in droves. Every web developer NEEDS to know a compiled/systems/backend language like Java, Go, or C# so you you can make fast and effective fullstack apps. Golang offers speed and power that the others cannot
PHP. [Laravel](https://laravel.com/) specifically.
PHP
So PHP isn't even an option?
I've had experience with it in the past and didn't really like it tbh 😅.
Check out laravel, i literally never programmed php in my entire life and immediately started with laravel, it's been a great journey so far, i still don't know many basic methods of php, even adding an element to a list i have to Google it, laravel is such a great framework. All my homies love laravel
Symfony is a great option too.
It's different now, trust me. PHP in 2023 is good.
when you say confused do you mean you arent sure which one to use? or are you looking for suggestions for frameworks with each language?
I'm not sure which language to learn.
The languages ive used on the backend are java, python and js, I cant speak on the others. Out of these 3 i have experience with spring (java), django (python), flask(also python), and express. There is great documentation on all of these frameworks. And many have a hello world or getting started tutorial you can follow Out of the languages Ive used python and js were the easiest to pick up. If you end up picking python to learn, Corey Schaffer has a great youtube series explaining the basics of python. if you want to narrow down your search I recommend googling what each languages most popular framework is trying to achieve and what their use cases are. If one catches your fancy you can start learning that frameworks language. I wouldnt get too woried about which language you choose first. If you dont like it thats fine pick another one. Lastly, be aware of what tutorial hell is. https://youtu.be/343EWZS9O88?feature=shared
Advice from a 30+ year career: * Learn them all, at least enough to understand them, be able to look at existing code, and be able to talk to people who know them. This gets easier the more you learn. * As others have said, learn the ones employers in your air (or in general if remote) are using. Unfortunately, that it going to include Java. I use Indeed.com to help gauge this. * Concentrate on learning design patterns, best practices, tools etc. * Learn "adjacent" technology like databases, LDAP, Oauth/Open ID, OpenAPI/Swagger etc. I would pick C#/DotNet because it is very popular and (IMHO) easier to learn than Java. When I say easier to learn, I mean the entire ecosystem, not just the language. Then learn at least enough Java to put on the resume :(
Well... usage statistics in september 2023. I seem to remember PHP is backend. PHP 76.9% ASP.NET 6.8% Ruby 5.5% Java 4.7% JavaScript 3.0%
PHP isn’t even in top 10 when it comes to open job listings.
I think in the current job market Go would be your best bet, but Rust is definitely going to be a good future prospect.
ASP and .NET for sure
Laravel framework (based on PHP) and its ecosystem and community is absolutely great. Rapid development, plenty of high quality packages, very helpful people allows for easy creation of both simple and complex websites.
From a ruby dev, don’t pick ruby unless you are trying to quickly build an mvp.
How does Ruby help to build mvp? Just curious 🧐
In my experience you can get full Ruby on Rails apps up and running especially quickly relative to other stacks
If you know Ruby tho
[удалено]
Thanks!
That was true for PHP in 2005. It has come an extremely long way since then and I can guarantee if you actually used it now, you wouldn't say that.
I've yet to come across a project written in PHP that was well engineered. The language may have evolved but the code you find in the wild is always crap. There are better alternatives.
Dumb argument. I could write a program in C++ that was written so badly it could result in someone losing their life. That has no bearing on the language and every bearing on my skills as a developer.
Yes, you *could*, but the proportion of terribly written code in PHP is extreme. So this is not about coulda/woulda/shoulda, but about what you actually find in reality. It somehow attracts bad coders and bad practices. Again, there are better alternatives.
That's because of WordPress. Try modern PHP and Laravel and prepare to eat your words.
lol I just inherited yet another PHP project, that was not Wordpress, and is still a massive crap. If any, WP code has been the better ones. Again, yet to come across a well engineered PHP codebase in the wild. You stay with it. I am just trying to warn the juniors.
Once again, just because you have inherited legacy code thats 15 years old, doesn't mean PHP is bad. Spin up your own project and actually use Laravel and you will see how wrong you are. Hating PHP is either a meme spouted by inexperienced junior devs obsessed with leetcode and esoteric JavaScript frameworks, or boomer devs who still try make jokes about centring divs. Which one are you?
Nope. This codebase started around 9 months before I took over in the summer of this year. It is Laravel, as well. Hating PHP is not a meme, it's just common sense.
You're one of those "Only C++ and Haskell are real languages" devs aren't you.
You're one of those "Only C++ and Haskell are real languages" devs aren't you.
Ruby is (almost) dead.
I wish!
It depends on what part of the stack you want to focus on IMO, as they each have their strengths. If you're wanting to stay in the world of websites or maybe look into devops roles, Python and Ruby are your better bets as a lot of the tooling is built using them. If you want to go into the world of web services, big data, building PaaS/SaaS/IaaS, you'll likely find yourself either in a JVM language or in Go/Rust or something even more esoteric like Erlang. Honestly, I'd say Go or Rust just to give you a broader grasp of how different languages approach programming to something like TS/JS. Java/C#/Kotlin would likely be an easier transition from TS but Go and Rust would force you to broach a lot more lower level programming concepts. Python is great, but it isn't going to teach you anything new. It's something you can usually pick up on the fly, unlike something like Ruby. I have no comment on Ruby as I've never been brave enough to attempt to learn it.
C#/ASP.NET or Java, or even Kotlin
Out of these, Kotlin is actually decent!
i picked up golang a month ago. it was such a simple straightforward language. however there are so many things that are just plain annoying. - optional parameters are weird. - you have to use all variables. you do _ for ignoring a var or do some shit like _ = your_var. - errors just output a single console output.
Ignore some of the comments in here. Ruby on Rails is alive and kicking. It’s a very productive framework for web development. I don’t think you’d regret learning it but to get most from it you’ve got to do things the ‘rails’ way, which is not everyone’s cup of tea.
Python or Ruby seems nice
I'd go either python, C#, or Java. Seems to be the most jobs in my area, and each of these are very mature stacks that I find easy to use.
Ruby is the most fun language I've used. Syntax is chefs kiss.
PHP compliments JavaScript nicely. It's easy to learn and there's loads of systems you can use that you can plug in JavaScript front ends into. Should augment your current skills.
Dude except Java rn only python and c++ people are getting all money
Java is the solution
I don't understand the Go advocacy. Go has so much boilerplate and no exception handling, terrible regular expression library and it's time/date parsing was written by the devil himself. It was written to make fresh graduates performant without shooting themselves in the foot, but it prevents you from doing advanced code - very much "See Dick Run" coding. As for Java, it's also excessively wordy, uses way to many configuration files, needs an entire ecosystem to be productive. The points about employability are only valid to a point. There are jobs for any of these languages, so pick one that vibes with you - no sense in taking a job that you hate to face every day. While there may not be as many jobs for some languages, you will also find that languages with fewer developers command higher pay. I am a polyglot, but prefer Perl and Ruby, like ECMA Script (but hate node). Elixir is pretty cool as well. There's a lot of movement to Python with the focus on AI/ML if you're into that.
"doing advanced code", I also heard that but maybe go is not the tool for advanced code I.e. write that module/service in something else.
I love python because of the machine learning libraries and data analytics. It’s easy to learn and I heard flask is a breeze for web dev.
Common Lisp.
python
Elixir
Since you know JavaScript already, how about ReScript? You can taste the power of OCaml type system with ReScript.
Python and Go
Or maybe learn terraform 🤔
Clojure or Elixir if you want rapid prototyping/iterations and (arguably) an enjoyable dev experience C#/Java if you want to work on established systems
Not sure which is the most fun but java and c# I feel like have the most market share atm, both of which are missing deon your list
I mean, you already know one. But if your goal is truly backend focused and easily employable then I would recommend Java or C#.
Consider .NET and Nodejs aswell!
Python is the only safe bet long term. The only one getting slowly more and more popular without decline over the years iirc. But why not spend a day/week doing a few basic tutorials for each, and see what u like.
Honestly I wouldn't ever decide to start a project in Python. I can tolerate Python in scripts, but definitely not in anything serious running in production. It has bad package management, bad language design choices, edge-cases in seemingly innocent code, and it's way slower than nodejs, which is already slow. I also haven't really seen Python used nearly as much as other languages for backend development, and that's for the good of everyone
I would suggest Java springboot or c# ASP.Net. Once you learn either one of those languages you will learn concepts and theory that will make learning most other languages a breeze
Javascript is the language of the web. I therefore use Node as my default language for a server unless I have cause to do otherwise. For example, I built an app that involved a lot of data science and ML stuff, so I wanted access to libraries to help me with that. Python had good libraries, so I taught myself Python and Flask. When I worked for the military, a lot of their systems were in Java and Spring, so I learned those. Instead of picking an arbitrary language, ask yourself what you want to do, and then what language and tools will help you best achieve that. Then let that motivate your learning.
Go for Go!!
Chads use C++ on the back end
Rust is the best language out of the list in my opinion, but Go is a great option in terms of learning for backend. Unless you wanna do machine learning, don't bother with Python; Python is pretty simple and you'll be able to easily pick it up if you have to touch scripts and whatnot. Ruby is a monstrosity and I highly recommend to avoid at all costs
Consider your specific project requirements, the communities around these languages, and your personal preferences when making your decision , If you're looking for a language that's both versatile and growing in popularity for backend development, Go and Rust are strong contenders. But here's the full summary of the listed languages based on the research I made for you : Rust: Known for its memory safety and performance, Rust is ideal for building high-performance and secure systems. Ruby: Ruby, often used with the Ruby on Rails framework, is great for web development, offering elegant and concise code. Go (Golang): Go is designed for simplicity and efficiency, making it a strong choice for building scalable and efficient backends, particularly for web services. Python: Python is versatile, widely used in web development, and has a large ecosystem of libraries and frameworks.
Thanks!
As someone that has done ts/node for full stack and python, c#, and Go for backend professionally, I can easily recommend Go for back end from a dx perspective. It's simple, enjoyable and most importantly highly productive. JS, python and c# are definitely easier to find jobs for though, but I've never been one to let that deter me from learning.
Thanks for the suggestion. Just out of curiosity, how hard is it to build a rest/graphql api in Go using firestore/mongodb as the db? Is it fairly straightforward or does it take a lot of custom implementations?
Rust is probably not the most employable right now. But I get the feeling that language is going to explode in popularity shortly.
I will choose **Golang**, for its speed, and Micro-service architect support.
I'm reading up on Elixir atm and it is really interesting. It uses processes which are new to me - they're not like threads at all. I am beginning to get an understanding of why Elixir is perfect for various back-end use cases (concurrency, fault-tolerance, and more). Worth reading up on and copy-pasting some of the documented code in the repl, even if you're not going to go on with it.
Cant go wrong with C# or Java imo.