Skip to main content

Command Palette

Search for a command to run...

Choose your next programming language

Published
•6 min read•View as Markdown
Choose your next programming language

In this video I'm talking about how to choose your next programming language. There are many options to choose from and depending on your motivation and goals, you might want to explore different directions.

While I believe there is no single correct answer here, I hope that my advice can help you make a better decision. Enjoy!

Notes

Introduction

  • I see tons of articles and questions on forums etc.
    • "what language to learn?"
    • "what language choose if I want to do data science?"
    • "why you have to learn Go in 2020"
  • I think you can't come up with a single correct answer
    • it depends on many different things
    • so I'll talk about how I would approach choosing a new language
  • this is not a complete framework or decision tree, rather loose ideas that can help you narrow down the choice to a few options

First, three rules

  • don't force yourself to learn a new language; it is fun and it can make you a better programmer, but there are other ways as well - read some book, do some programming katas, learn a new library
  • if you want to learn some language, just do it; you don't need anyone's approval, you're an adult (I guess), do what you want (just don't cause harm)
  • if you choose a language and don't like it after a while, understand why you don't like it
    • then take a break
    • give it another try - if you overcome what you didn't like, that's cool, if you still don't like it, choose another one
  • oh, and a bonus one - ignore all the "best languages to learn in 2020" articles, I read them for you, they have 80% of the same content and they're boring

What's your goal

  • this is the most important part and it should drive your selection process

Make progress at your current job

  • you can go deeper, then choose a language that is used or is getting popular in your domain
    • for example, if you use JavaScript, you can learn TypeScript, or ReScript
    • if you're doing enterprise development and you use Java, you can learn Kotlin or Scala
  • you can go wider, then choose a language that you don't use but that's used by other people in your team or by teams you work closely with
    • if you do frontend web development, you can pickup a backend language, depending on what your company uses it might be PHP, Scala, C#, whatever

Finding a job

  • of course the more popular a language the more job offers are there
  • so technically learning the most popular languages should make it easier
    • but also there are tons of other people learning them
  • so check what languages are used in what you'd like to do, whether it's gaming or embedded systems or writing Salesforce plugins, whatever, and pick one of a few popular ones

Become a better programmer (also, have fun, also)

  • oh, that's a fun one, and a great reason
  • in order to become a better programmer it's great to know a couple of very different tools
  • so pick a language that is very different from what you know
  • choose a niche language, there are many of them, they explore different concepts, and their authors often put a lot of thought into designing them
    • for example, I used to write mainly Ruby and JavaScript; then a few years ago I picked up Elixir, which kind of looks like Ruby in terms of syntax, but besides that is a very different language; learning Elixir helped me to become a better programmer - I started writing more functional code in Ruby and JavaScript
    • then one day I had to pick up PHP (which I tried years ago but didn't do much) - PHP is a decent language, especially with recent changes, but it didn't teach me much new about programming in general
    • some languages you could explore here are Elm or ReScript for web development, Clojure or Nim for general programming; you can try Haskell and Prolog if you want to try something completely different than typical imperative programming

What to pay attention to

  • features
    • see whether what brings you to this language is actually there; if you want to learn a new language for data science, make sure there are libraries for that; if you learn a new language to expand your knowledge, check how different is this language from what you already know
  • documentation
    • make sure the language has proper documentation together with installation instructions, otherwise you'll be getting frustrated since the beginning
    • btw if you notice something can be improved in the docs while you learn a language, that's a great chance for OS contribution
  • support for tooling
    • check if your editor has syntax highlight for selected language
    • check if there's some package manager or how to install some libraries etc
    • make sure the language can actually be installed on your operating system
  • community
    • check out their Slack/Discord/forum, whatever they have
    • see how the community treats beginners (you don't want to end up getting attacked for asking newbie questions)
    • niche languages often have passionate communities where people are eager to help newcomers

A few more hints

  • ignore syntax
    • some languages have more, some less readable syntax, but it's just syntax, you can get used to it, do not discard language just because it looks unfamiliar
  • newer languages generally are more friendly than old languages
    • most of the stuff we learn comes from principles and ideas from 50 years ago
    • new languages usually pack it in a more friendly way
    • new languages usually come with some better tools and have more maintained docs
    • for example Clojure is a good place to start learning LISP; Elixir is a good place to start learning Erlang and its principles etc
    • this is not always the rule though

More from this blog

N

Not Only Code

31 posts

Not Only Code is a combination of articles and videos that aim to help you become a better software developer