No, You Don't Need to Learn Another Programming Language Every Three Months

Also, you don't need to use it in the new project at work.

Please stop pushing yourself to learn a new programming language every three to six months. It won't help you and your career. Yes, you need to develop yourself, stay up to date, and progress in your career. Using a new language in a new project where no other person knows that language is not one of them. I've never heard of a good word about a person who introduces a new language to a company while learning it right before leaving. Let's take a look at how you can learn languages while staying up-to-date.

Learn Programming Concepts

First, learn concepts behind languages, how they approach problems differently. Why is Rust using a manual approach in memory management, unlike other languages; what trade-off are they making? Why do people go to Kotlin over Java these days--what are the significant differences? Look for delta points between languages. Research and learn how one language utilizes dynamic type-checking while the other works with static type-checking. What is the problem they both claim to solve with different methods? Once you understand these kinds of variations and respond to various WHYs and WHATs, you become proficient in many languages concurrently.

From there on, you only need to take a look at the syntax of the language to write code in it. Although every language has a unique syntax, most obstacles you encounter in syntax are quickly solvable with Google search queries. You don't have to deep dive into how to write an if clause or while loop in one language over another. You have documentation and other manuals to assist you (please RTFM). They clarify many of your syntax and language-specific questions. You can use Dash, DevDocs, or other tools to navigate many documentation sets in one place.

Learn data structures. Start with the language you know; take a look at which data structures exist. When you don't comprehend all of them, you spend extra time doing simple tasks. They are your tools. If you don't know there is a hammer in your toolbelt, banging a nail with pliers will be arduous. If you are not aware that you have a Set in the language, you will do workarounds using an Array.

Learn Algorithms

As a supplement to data structures, improve your problem-solving mindset (a.k.a. learn algorithms). No one forces you to write a quicksort or red-black tree (except in interviews) from scratch. However, knowing how these algorithms solve uncomplicated problems helps you develop better solutions to intricate issues. You don't need to memorize how to write a binary search; you only need to grasp its approach to broaden your perspective. You can think of it as music: notes and chords are your data structures, chords progressions and melodies are your algorithms. When you understand how notes and chords form progressions and tunes, you learn how to play the next song way quicker than the previous one.

Overall, you don't have to learn a new language once a quarter of the year. It's, of course, valuable. But not effective; there is a better way. Understanding the concepts, mechanisms, and data structures is going to help you in the long run. Just knowing four languages and writing simple code in all of them is just a short-term satisfaction. It won't stay there. Once you stop looking into or writing in one language, you will immediately start forgetting about it. When you learn how languages solve the same problems differently, you will attain flexibility. Once you have the fundamentals, you will use this knowledge more often than you think, and therefore it will stay with you. Whatever is repeated, it's remembered.

Learn One Language Well

By well, I mean, master it. Start learning in the language you already know. Understand how it approaches memory management, concurrency, and memorize which data structures exist. Know how the language manages memory when you nest data structures in unusual ways. Learn how it blocks or limits the data access when concurrent operations try to work on the same data resource simultaneously. Know why some data structures are mutable while others are not.

After knowing one language, then go to others. When you learn concurrency well in your language, start looking at how other languages handle concurrency, why Kotlin needed to introduce Coroutines while Rust chose fearless concurrency.

Once you change your mindset and start playing the long game, you will see incredible growth--faster than you think. Learning the concepts and mechanisms will make you more flexible. You will learn new languages but differently. Since you will be aware of fundamentals, concepts, and structures in various programming languages, you will become a better software engineer.

There are many topics you can learn. You still need to decide what you should focus on next.

Medium Length Last Updated: Jun 9, 2021