loading...
Cover image for What is the most practical server side language to learn in 2020 - 2021?

What is the most practical server side language to learn in 2020 - 2021?

andrewbaisden profile image Andrew Baisden ・1 min read

The only backend server side language I know is Node.js. However I have noticed that on some job search platforms server side languages like Java seem to be the most in demand. And I recently had a recruiter reach out to me about a role but the backend server side languages that they wanted was either Java or Python. Node.js is growing in popularity but it seems like there are still many other server side languages that have more usage within the industry.

Discussion

markdown guide
 

While language versatility and adaptability are important, you have the benefit of a language you not only know and can build upon, but which is continuing to grow in use cases.

I just presented to a group of Drupal (PHP-/Symfony-based) developers last year on how a simple Node microservice alongside their monolithic CMS might make more sense and take less time to add custom functionality than writing custom modules which have to be written in the Drupal way and conform to its API.

As serverless options expand (and gain more and more use in companies), JavaScript backend functions are even easier to implement than with containerized microservices (yes, I know they're still containerized, you just don't need to worry about managing the containers). With Cloudflare Workers (based on service workers), you don't even need to (and in fact can't) use Node.

 

In terms of "get a job" practical, I'd recommend Java and Python.

You could learn Python first since it's a fantastic language, however, most backend services err on the side of lowering latency but not going so "low" as C++, which is right where Java fits in.

If you have familiarity with JS/Node.js, Java, and Python, you'll have an incredibly solid resume. They're each incredibly versatile languages and so knowing all three opens up a ton of opportunities.

 

Python would probably be easier in my case because I already have Udemy courses on Python I just haven't used them yet. Java as well gets talked about a lot I did get some exposure to it back in Uni but never explored it deeper.

 

Some comments here recommend to focus on Go (performance) or Python (simplicity). A language that combines both, the outstanding optimizations of Java Virtual Machine (JVM) and ease of learning, is in my opinion Kotlin.
With Kotlin, which is multiplatform btw, you will be well prepared for full stack development. Compared to Go, server-side issues like concurrency are handled similarly (Goroutines in Go, Coroutines in Kotlin), while Kotlin is way easier to learn. Plus, once you know Kotlin, Java will be no problem.
But that's just my point of view. In general, I think the language isn't the most important thing in the backend anymore thanks to microservice architectures (each services might be implemented in a different language).

 

Thanks I am leaning towards Python and Kotlin. This article helped too techbeacon.com/app-dev-testing/why... he mentions Java being old and error prone and having to put up with NullPointerExceptions in Android Apps. Kotlin is the solution it seems.

The only other two considerations I have is Go and Rust which I don't know much about yet but you explained some areas of Go already.

 

As many have noted below/above, "practical" is a hard term to pin down in this context. Some general observations I have found:

  • Java probably has the biggest installed base within the industry, but particularly in bigger, more enterprise-y corporations (e.g., banks, etc). They are typically the larger employers as well, at least in my part of the world. C# would be the next most popular. Both Java and C# are now quite "mature", with all the upsides and downsides that maturity includes.

  • I would go further and say that there is a fairly strong negative correlation between the number of jobs requiring language X and how current/modern/popular language X actually is. In other words, "boring technology" is where the work is at. In a big enough market, there will probably be a large-ish number of jobs for funkier languages, but I suspect he competition for those jobs will also be higher. Pick your battle.

  • How well you know a language becomes pretty unimportant relative to many other skills for most developers, but I get that it's a blunt-edged filter used by recruiters and employers alike.

  • The diversity in server-side languages is going to increase further before it contracts again, so any "bet" you make on personal development in one of languages is going to be calculated and not without risk. Another option would be to potentially specialise in a less congested market and build your AWS skills for example. Most places are using the public cloud in one form or another and, although there is still competition between AWS, Azure and GCP, AWS seems to be the leader here for general purpose cloud (i.e., not data-centric domains, where GCP is likely to have a stronger value prop). Taking this road would also require you to be ready to defend your background by saying "true, I don't know Java, but I see you use AWS extensively and I'm quite familiar with EC2, S3, RDS, Lambda, etc, etc... I learnt all these things quite quickly and I'm sure it would be the same with Java".

  • Interviewing is hard. It's hard to stand out, hard to stay positive and horribly time-consuming. Best of luck!

 

Most practical is quite subjective, if you want performance then don't go with Ruby or Python but if you want a job then those have pretty good job markets.
It's all personal preference at the end of the day otherwise

 

I would recommend Go since it's the language of the cloud (Go for Cloud) with great performance.

 

Go seems cool I do remember interviewing with a company and they said that Go was a new language their developers were learning as they were big on personal development.

 

Go seems like a great bet!
I built a REST API just the other day using the Go Fiber framework. It felt so similar to Express. Go is faster too and has benefits like concurrency.
It makes a lot of sense for companies to switch to a Go Backend since its great for micro services too and also because I think Go is moving closer and closer to being as mature as NodeJS or Java.