Hi there,

I consider myself as an experienced Javascript developer (7+ years of experience), but still learning a lot every single day. These days I focus on React and React Native and have some experience with nodeJS too. Typescript is probably the next thing I want to try with GraphQL.

That said, I feel the need to diversify my skills and learn a new language. But I want to do it the smart way: my plan is to move in the coming years from Europe to Canada with my little family, and I would like to be able to reach companies which might not need a Frontend developer full-time.

I obviously tried a lot of language in my career so far, but never deeply enough to call myself efficient (except maybe Ruby), so I would like to know if some of you could advise me or share with the community your experiences with others languages.

Main points for me would be:

  • being able to reach a wide range of projects/companies. This point is important as I prefer to be efficient in fewer languages, but having a deep understanding of them.
  • playing well with Javascript (or completing it)
  • not too obscure/difficult (as a father, I would rather use my nights to sleep)
  • having a nice future and community
  • and fun to use!

My candidates so far (but open to others):

  • C#
  • Kotlin
  • Elixir (although I do not see very often positions requiring this language, which is too bad 'cause I really love functional programming)
  • Golang
  • Python (I have to admit that I got quickly bored with this one, but might give another shot)

Thanks a lot for your help. I know majority of answers could start with "it depends", but please keep in mind I am not looking for the best or most performant language, but simply the one allowing me to diversify my skills while enjoying the learning process.

Write your answer…

6 answers

I think the requirements will need you to compromise a little:

  • You'll learn much more from a language that is very different from the ones you know, e.g. a different paradigm. But that'll take a lot longer to learn.
  • Similarly, I'd recommend different languages for finding jobs than for becoming a better programmer.

It also depends on what you mean by playing well with Javascript (or completing it). I guess Typescript completes Javascript in a sense. Common server-side languages play well with client-side Javascript in that they're used together. You might also choose something that compiles to WebAssembly, so that you can replace performance-critical parts of your Javascript code.

As for learning:

  • It'd be useful to learn a language that forces a different paradigm, but as I said, it conflicts with some requirements (I agree with your remark about Elixir).
  • I think it'd be very educative to learn a language with a good type system, especially since if I understand correctly, you're just beginning with Typescript.

Specific languages:

  • Not so familiar with C# myself, I believe it's a good language but not particular outstanding qualities for your situation.
  • Kotlin is a very attractive choice, I think. It is pretty easy to learn, has a lot of opportunities (mostly Android though) and it's a very small step to Java which has even more, it can compile to WebAssembly or Javascript for integration with your Javascript skills (also to native and JVM).
  • I don't know Elixir, I was going to say that any purely functional language would be very educative, but I agree with your remark that career opportunities are limited.
  • The advantage of Golang would be that it's easy to learn. I don't think it's very educative since there's not much new and the type system is mediocre.
  • I think Python is a lovely and easy language and used for backends (Django), but since you don't like it, it has no static type system and many of the non-Django opportunities are in data and science, maybe not the best choice.
  • I personally learned a lot from Rust, which has several new concepts and a great type system, but it'll be hard to learn and the main integration with Javascript is that it also compiles to WebAssembly.
  • Of course, integration with Javascript doesn't get much better than Typescript. It'll likely have clear practical advantages, and I recommend learning it. But perhaps in addition to one of the above?

So if I have to have a conclusion, I would say both Kotlin and Typescript, but there are many valid choices.

Spot On1

Hashnode is building a friendly and inclusive dev community. Come jump on the bandwagon!

  • 💬 A beginner friendly place

  • 🧠 Stay in the loop and grow your knowledge

  • 🍕 >500K developers share programming wisdom here

  • ❤️ Support the growing dev community!

Register ( 500k+ developers strong 👊)

Usually, when a JavaScript developer asks for a language to learn on and improve their skill, I suggest a more low-level language, like Rust or C. They help you see the world from a different perspective: code running on hardware directly is very different from code running inside a VM. As far as I can see, you did not list a low-level language, so I would like to encourage you to at least consider playing around with one, let's for example say Rust.

being able to reach a wide range of projects/companies. This point is important as I prefer to be efficient in fewer languages, but having a deep understanding of them.

unfortunately, Rust is very young, so there are only a few companies who employ Rust developers.

playing well with Javascript (or completing it)

Definitely does, because you can use Rust to write WASM or a server (playing well with JS) and Rust can do all the things JS cannot do (completing it).

not too obscure/difficult (as a father, I would rather use my nights to sleep)

Rust has a rather steep learning curve, but the reason for that is that it forces you to learn a lot of important principles. If you do not adhere to good and safe standards, your program will not compile. That said, using a framework, most of the difficult stuff is gone, and it is fairly easy to use.

having a nice future and community

Rust has a bright future. Many low-level developers learn Rust. It is used to create awesome new software. And the community is very nice, most of the time. Just don't try to discuss the math behind Rust :D

and fun to use!

Definitely. I can use it without the fear of doing some bad mistakes. Usually, you'd learn as you go, and then end up with throwing away projects, because you cannot find the damn memory leak or race condition, which makes your application unusable. With Rust, you don't have that problem, and you just write, and if it compiles, it's formally correct (though you have to make sure your business logic works).

All in all, though, Rust might not be the language you are looking for here. What you write sounds like you want to change your job description. If I understand you right, you want to get away from the front-end and at least add a bit of back-end or even something completely different. For that, you might want to think about your preferences. For example, most companies still want Java or C# for application development. Kotlin would be nice, but its usage is not that spread, yet. Python will most likely help you find a job in research. As far as I can see, it is mostly used for that, or Linux management tasks. Golang and especially Elexir might be hard to land you a job.

So, imho, learning Java is the safest way to go, if you want a language which meets all of your requirements and lets you choose a company from a wide selection.

However, if you would actually try to go more into the direction of native mobile development, the world looks different! While Java is still an important language there, Kotlin is on the rise - at least for Android development. Other than that, you might add Swift to the list for iOS development and C# or F# for Windows app development. You will most likely start to miss your single code base for all platforms, though ;)

There are many other areas of expertise, which each require different coding skills and languages. Without more information of what exactly you are looking for, it is quite difficult to make a suggestion. That's why I would like to advice you to take a look at all the languages above. Write a small application in each of them and compare them. What are the differences, what do you like about them, what do you dislike about them? A small application might include writing a little game (Pong, Snake, whatever) or some app, which tracks your GPS coordinates or a server with a REST API, which tells you the current CPU load. Whatever comes to mind is OK. Then go to a company of your choice and see what jobs they have to offer. Apply there and use the language they require. They will teach you whatever you need, if you are motivated and they think that you can do it! I think that the only thing which is more important than the programming language and frameworks you use is the company and the people you have to work with every day.

Python for data modeling and c++ for activities that need more speed

Reply to this…

Instead of learning a new language, I would suggest learning more about the tooling and technologies around JavaScript and web development. You are likely not going to become fluent enough with another language to a degree to which you can advertise yourself as a "C# developer" or a "Kotlin developer". So broadening your ability with the peripheral technologies will go further in enhancing your résumé. Plus learning a new language when you need it for another project is the easiest thing on the list.

  • TypeScript is a great start.
  • RxJS is a library for reactive functional programming. It greatly enhances the ease of dealing with asychronous logic. It will also introduce you to functional programming.
  • Enhance your skills with backend development on Node. Express is a good place to start.
  • Enhance your automation skills with a glue language like Bash or PowerShell.
  • Learn a build system like Travis, CircleCI, or Jenkins.
  • Enhance your skills with a cloud platform like AWS, Azure, or Google Cloud Platform.
  • Learn a container system, like Docker as well as Docker Compose.
  • If you're feeling intrepid, learn about a container orchestration system like Kubernetes.

I'd suggest HTML and CSS - since if you're a "JavaScript developer" who is using React and its ilk by choice, it is HIGHLY unlikely you actually understand what they are for, when to let them do the heavy lifting, and when NOT to use JavaScript on the front-end!

That's not a joke. 99%+ of the people I encounter using react, vue, etc, and calling themselves "front end developers" don't know enough about HTML, CSS, accessibility, or dozens of other things to have any business front-ending a blasted thing -- particularly in the areas of semantics, progressive enhancement, and graceful degradation. Hence why they're typically GULLIBLE enough to dive for halfwitted mentally enfeebled GARBAGE like react-ui, bootcrap, jquery, etc, etc.

Failing that go for PHP. The others may be hot and trendy, but PHP has the largest audience due to it being client-side facing on damned near every server on the planet (which you REALLY can't say about any other language), has far superior documentation than most in the form of php.net, and has a far more active community of developers. It's hard NOT to find help for dealing with PHP problems... often the problem is deciding who's advice to take since there are so many different answers to the same question!

Sure, the language has its share of issues, but what programming language doesn't? It's usually the same dance just a different tune. Honestly given the pro's and con's I'd stack PHP 7 up against any in the current crop of server side development.

Saying 'every language has issues so you might as well use PHP' sounds a bit like saying 'you cannot solve all bugs so might as well ignore all of them'.

Reply to this…

I never programmed in Kotlin and Elixir but I have some good words for Go. It's a lovely language, and many of the concepts are really refreshing, especially coming from JavaScript. Some of them will make you a better developer (this applies to learning any language that has a different paradigm from the ones you know).

I wrote a Go for PHP developers short tutorial a while back, which is also good to read as a JS developer.

Load more responses