Why you shouldn’t stick to one programming language or paradigm
Tags: programming, developer
Published: 2023-12-05 11:04:37

If I wanted to summarise all the programming languages and paradigms that I’ve used throughout my entire student life and professional career I don’t think I’ll be able to write them all down, but I’m gonna give it a try to see how many I can actually remember, not to show off but to show you, my dear reader, why you should continuously learn even after becoming an expert in some language or paradigm.

- **GaCeLa** — **imperative**: A GCL implementation by Dijkstra used in my university. My first programming language, imperative and easy to write.
- **Modula-2** — **imperative/modular:** we use to call it “the child” of Pascal because it was kind of similar. The idea was to introduce data abstraction and OOP. If you think C’s pointers are annoying, do yourself a favour and forget I even mentioned this language here.
- **Java** — **imperative**: Aha! finally a programming language you all probably know. We used it to get a better understanding of OOP and data structures, I remember doing a lot of Graphs implementations with Java.
- **Assembly** — **imperative:** fuck, yes. Probably the lowest level I’ve ever programmed, but actually quite fun in the end. One assignment was to implement the game pong.
- **R — functional:** This was my first encounter with a functional language and I remember it being so weird but also so straight forward when it comes to data analysis and ETL.
- **Haskell** — **functional**: My experience is only academic, and if I’m honest at the time I struggled so much to understand it. Recursive programs were never my favourite thing and well, let’s say there’s a lot of it in functional languages.
- **C — imperative**: Also only academic, but quite useful to teach pointers and memory managing.
- **SQL — declarative:** At this point
- **Python — imperative:** I got tired of
- **Ruby — imperative:** describing what I did
- **Elixir — functional-ish:** with each one
- **Kotlin — functional-ish:** of these languages.

Of course, there are many more, **HTML, CSS, JavaScript, C++, C#**, etc, but they all fit into the paradigms I’ve used in the past already so I’m just gonna stop here.

![person programming](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*U47aR6tXAV6tVXtLHYOrbQ.png)

For me, it is very exciting to learn a new language/paradigm. You always get to compare the similarities and differences between them or to understand why things are done in one way for one language and differently for the other.

I’ve learned something new from each of the languages I’ve used, and each paradigm teaches you to improve and activate problem-solving skills in different ways. At the same time, being familiar with several paradigms makes you not afraid to go for a new job that uses X language that you’ve never used before. I doubt I’d go for a job that uses Modula-3 in 2021 but you get the point.

Of course, at the beginning of your professional career, it’s important to learn at least one language and paradigm and really master it to land a job, but my advice is: do not stop here. Just because you are an expert in JavaScript doesn't mean this is all you’re gonna do for the rest of your programming life, the tech world moves way too fast and what is being widely used today might not be as popular tomorrow.

Also, being flexible in terms of what are you going to program on it’s a very appealing skill for companies. Yes, they want to have experts, but at some point, they might also need someone who can handle doing a little this and that in some other app they own before hiring someone new and your extra knowledge might come in handy.

I hope I gave you some reasons to go learn more programming languages and paradigms once you’ve felt you master at least one 😬. If these reasons weren't enough well, at least you got to read what weird programming languages I’ve used and maybe learned that they actually exist 😅

Thanks for reading 🤩