Programming Languages To Learn In 2020 To Boost Your Career As A Software Developer
Tags: beginners, webdev, career, javascript
Published: 2019-12-17 17:01:09

---
title: Programming Languages To Learn In 2020 To Boost Your Career As A Software Developer
published: true
description: Five programming languages to learn in 2020 to inspire or ignite your curiosity so that you can find your own path in this field and boost your career as a result.
tags: #beginners #webdev #career #javascript
cover_image: https://thepracticaldev.s3.amazonaws.com/i/a0kdi3logfjguq04q8ls.png
---

As famously stated by [Ludwig Wittgenstein](https://en.wikipedia.org/wiki/Ludwig_Wittgenstein): « *The limits of my language means the limits of my world* ». He was referring to natural languages, but this quote can be also applied to the programming world. 

Learning a new programming language is an intellectual journey which may help deepen your understandings of computer science. This opens the mind so that you have a different perspective on the software practice. It also exposes you to different programming paradigms. You witness how some ancient or unpopular ideas either transform into popular ones, or got forgotten to be then rediscovered again a decade afterwards. 

With the year 2020 around the corner, it is a good idea to also review your programming goals. In this short article I will give you four ideas plus a bonus for programming languages to learn in 2020 in order to hopefully boost your career as a software developer.

“*But why should I listen to you?*” you may rightly ask. In the end, there is no shortage of people who have an opinion about this topic. I’m not an expert in those language, but I’ve been lucky to get exposed to different programming ideas in the span of 15 years as an organizer of technical conferences with [PolyConf](https://polyconf.com/) being my largest and my dearest creation. 

![PolyConf Programming Conference](https://thepracticaldev.s3.amazonaws.com/i/wrdcgrjf1mvfl2juufvu.png)

PolyConf promotes the idea of **polyglot programming**. It’s about encouraging a generalist approach to the art and craft of software development. Programmers should strive to have a comprehensive understanding of programming concepts with breadth and depth of knowledge that transcend the boundaries of a single language.

During those years I’ve had a chance to meet and exchange with creators of programming languages, frameworks and software tools. I was able to witness not only new technologies emerging (like Ruby on Rails in 2005 or Node.js in 2009), but also great ideas being discarded and sometimes forgotten. This experience gave me a good insight into the field of programming. 

There is no particular order for this list. Also, it is not about learning all those languages. These are just **ideas to inspire or ignite your curiosity** so that you can find your own path in this field.

## Reason

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/fepfcnzqw46q8cjuvoc3.png)

[Reason](https://reasonml.github.io/)  is a new syntax (and a toolchain) built on top of  [OCaml](https://ocaml.org/) . It provides functional and object-oriented features with type-safety and focus on performance. Its syntax is similar to JavaScript. The intention is to make interoperation with JavaScript and adoption by JavaScript programmers easier. Reason can access both JavaScript and OCaml ecosystems. OCaml, a functional programming language with infered types, was created in 1996.  Reason builds upon the rock solid type system from Ocaml while focusing on both simplicity and performance. 

 [Reason](https://reasonml.github.io/)  was created by Jordan Walke who also created React.js. If you like programming in React.js, you should watch Jordan’s recent talk at ReasonConf where he gives a few reasons why Reason is worth learning.

{% youtube 5fG_lyNuEAw %}

## Rust

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/o0q2mnvhdqhs994jp92l.png)

[Rust](https://www.rust-lang.org/)  is a statically typed programming language focusing on safety, speed, and concurrency. Rust is a system language which means it generates the best possible machine code with full control of memory use. Rust is memory safe by default: all memory accesses are checked. The language is partially influenced by functional programming and its type system is similarly rich to Haskell’s. Rust can be also compiled into WebAssembly which runs in each major web browser at near-native speeds.

Rust was created at Mozilla by Graydon Hoare in 2006. As the web slowly but steadily moves towards [WebAssembly](https://webassembly.org/) and in some degree to serverless, it may be a good investment to learn Rust. Don’t take my word for that, but rather watch the following talk by Steve Klabnik

{% youtube CMB6AlE1QuI %}

## Dart

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ybjiezxtu3figan5ch0v.png)

Dart is an object-oriented, garbage-collected programming language with inferred types.  The language supports various compilation methods. AOT (Ahead-Of-Time) compilation allows Dart to produce native code while JIT (Just-In-Time) compilation significantly improves the development experience with features such as hot-reload. Dart can also compile to JavaScript. Since the version 2.7 the language also supports null safety, i.e. accessing object references safely without triggering null reference exceptions. Lastly, Dart is the language of Flutter, the mobile (soon web) framework that’s taking the world by storm.

Dart was created by Lars Bak and Kasper Lund.

I greatly enjoy [Bob’s Nystrom](https://twitter.com/munificentbob) articles and talks. In the following video Bob along with Kevin Moore explain why Dart is a programming language choice with no compromises. 

{% youtube J5DQRPRBiFI %}


## Nim

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/o76jnejpht54fuooxwgw.png)

Nim is a statically typed compiled programming language with a syntax inspired by Python. It was designed to be as fast as C and as easy to read as Python. Being a compiled language, Nim is fast. It combines concepts from languages like Python, Ada and Modula. Some describe Nim as an easier to learn Rust or as a faster Python. It can be compiled to C, C++, Objective-C or JavaScript. It offers both automatic memory management (via Garbage Collection) and manual memory management. What sets Nim apart from other programming languages is its metaprogramming features with a powerful macro system in particular which allows manipulating the syntax tree to write custom DSLs. 

The lanaguage was created by Andreas Rumpf.

In the following video, the creator himself, explains the almost magical power of the Nim programming language.

{% youtube hwArqelfBBY %}



## Bonus: Joy

As a bonus, I’ve selected one of my favourite programming languages and one that is completely different than anything you may have experienced. It’s called Joy and it is a purely functional programming language devised by Manfred Von Thun. Whereas all other functional programming languages are based on the application of functions to arguments, Joy is based on the composition of functions. Every Joy function is unary, taking a stack as argument and producing a stack as value.

There is no video for this one, but I encourage you to read (at least 3 times) the following [Rational for Joy](http://joy-lang.org/rationale-for-joy/) by Manfred von Thun. 

--- 

As programmers we are supposed to constantly seek how to improve your practice, and eventually, how to expand and improve it. By being able to compare and contrast various technologies, you will be able to quickly learn what they bring to the table and in which context they could be used. Hopefully my list helps you in that journey. **Good luck!**

Are you planning to learn other programming languages in 2020 ? Let me know in the comments!

---

Still reading this far ? Great! Let me invite you to [my YouTube channel](https://www.youtube.com/zaiste) where I teach programming using different programming languages. It's free and there is not catch. :)