Don't learn another programming language

Some programmers try learning a new programming language every year. In my opinion, that practice makes little sense because you quickly hit the diminishing returns. There is tremendous gain when you learn your first programming language. Your chances to get a good job increase when you learn your second and third language. After a while, however, every new language makes a little or no difference.

I will make a few assumptions about you. If you feel that I am describing someone else, please stop reading. First of all, I assume that you have enough free time to learn a new programming language because you spend time reading blog posts about it. I will assume that you are either a backend engineer or a data engineer because you read my blog. At that point, you probably know some scripting language, an object-oriented language, and SQL. You have tried learning functional programming because that was fashionable a few years ago. If you liked it, you probably use it all the time. Is this you?

What else can you learn at this point? You may keep learning new languages, but your overall programming skills will not noticeably grow. Maybe it is time to do something else?

Learn a foreign language instead

If you already know a few programming languages, I suggest learning a natural language. Why is it a better idea? Programmers have to communicate all the time, so learning another human language makes perfect sense. Also, speaking one more language has no downside. No matter how many of them you already know. Last but not least, knowing a foreign language is a skill that is hard to imitate. Thus it is way more valuable than learning a new programming language.

Which language should you learn? I have no idea where you live, so it is hard to tell. Learn the language used in the most populous neighboring country or the one used by the largest group of people in your country. If you already know that, learn the second most popular language.

If you want something more challenging, learn a language that is unpopular in your area. Of course, it will be harder to find an opportunity to use it, but you will be invaluable when such an opportunity arises.

Can you learn a foreign language in a year? I think you can reach the early B1 level (in the CEFR scale) if you study at least half an hour every day. It may seem like a lot, but let me remind you that you have enough time to learn a new programming language. I have made that assumption initially, do you remember?

The B1 level is the threshold of usefulness. At this point, you can deal with everyday situations, have a basic conversation about the most popular topics of small talk. At this level, you should be able to ask where is the toilet or a bus station, book a room in a hotel, buy food, tell a doctor that you broke a leg, your nose is bleeding, and you feel a throbbing pain in the chest. If you spend some time learning the vocabulary related to your hobby, the B1 level is also enough to talk about the stuff that interests you. Basically, it is “good enough to survive.”

It is also good enough to start learning vocabulary related to programming and the business domain. Overall, you will need more than one year to start using a new foreign language at work. It is not going to be easy. Learning a natural language is difficult, and that is why you should do it. It will set you apart from people who did not make an effort to study foreign languages.

Read non-IT nonfiction books

If you don’t feel like learning a foreign language, maybe you will prefer to read a book. I don’t suggest reading another programming book. No, let’s do it differently.

In machine learning, we have the transfer learning method. It is a technique of reusing a pre-learned model as a starting point for training a model to classify a different dataset. It is like using analogies to solve a problem. As humans, we do it all the time, but we need to know concepts from other domains before seeing an analogy.

There are tons of practices that we can steal (let’s be honest here) from other industries, but we will never find them if we keep reading tech books and software startup stories.

Do you think that MapReduce was a revolutionary idea? For sure, applying that concept to data processing was a big deal, but car manufactures were doing something like that for a long time. They send specifications to subcontractors, get parts manufactured somewhere else, do some additional fitting, and assembly the car.

Therefore, I suggest reading non-IT nonfiction books. Instead of reading about a software project, let’s read the story of a restaurant owner. Instead of reading another book about design patterns, read about practices in civil engineering. Whatever. Read about fishing if you want. The goal is to read something different than usual, not to find a way to apply the new knowledge to programming.

It may take a lot of time until you use the information from a book about, let’s say, fishing. It may never happen. However, one day you may recall random details from a book you read months ago, and it will apply perfectly to the problem at hand.

Older post

How to read from SQL table in PySpark using a query instead of specifying a table

Fetching data using a SQL query in PySpark

Newer post

Definition of done for data engineers

When can data engineers be sure that they have done the task?