What I learnt after learning multiple languages and frameworks

ยท

8 min read

What I learnt after learning multiple languages and frameworks

Photo by Clay Banks on Unsplash

Let's build some background first. If you don't want to read it you can jump to the "My Learnings" section.

I was inspired by my sister to learn to code. At that time, she only knew C++. So she taught me the basics of the same. Then I went to college. In my college, there was C language only. I learnt that and found out that it is the same as C++. This perception at that time was because I only knew the basics of C++, I did not know that something like OOPS also exists. So for me, C and C++ were the same except for a few minor differences.

For a very long time, almost 2 years, I was only coding in C. I was studying electronics at that time, so most of my projects included writing C only. I used to feel very proud of myself that I know the depth of this language.

One day my sister asked me out of curiosity, "how many languages have you learnt till now?" and I proudly replied, "I have only learnt C and I work in C only". She asked me, "So you will only learn 1 language in your whole life?" I was shocked. I had no answers.

Then I started reading about other languages that existed. I already knew about Java and Python. I found out about JavaScript. So I decided to learn JS first (without the knowledge that it is used with HTML and CSS ๐Ÿ˜‚). See, I had no roadmap. But, I had time. I was exploring. I wanted to know what works for me and what doesn't.

After finishing one JS course, I figured out that JS is used with HTML. I had some previous experience of writing HTML from my school days. I had one chapter in school for it. And that was the only thing I knew about HTML. I knew that we can make websites from it. But I did not know how to make the webpage more meaningful. I did not know how to make real-life websites that we see on the internet.

Anyways, I started learning how to integrate the two. But then found out that it is leading to so much confusion that I dropped the idea. And switched back to C.

After some days, I had to work on the website of a college society. I thought it would only be HTML and CSS. But when I started working on it, I figured out that the site is written in PHP but luckily, I have to work on only HTML and CSS. I had never heard of PHP.

That was the time I decided, I have to learn it. No matter what. I have to learn JS and PHP and anything else that is required. I looked for a course near my area because:

  1. It was summer vacation at that time. I could go there.
  2. I knew that learning without any mentor is not working for me.

In the course, I learnt HTML, CSS, Bootstrap, JS, jQuery, PHP and SQL. I was thrilled. I was like, I have learnt so many languages in such a short span of time. I dropped the idea of practising it. I wanted to learn more languages, libraries and frameworks. And this was the time I fell into the traps of tutorial purgatory. You can read more about it on the internet, but in short, it means to keep doing different tutorials without practising it. Luckily for me, as I had practised C for so long, I had already built my logical thinking. But I did not know how to make full-fledged projects.

After some time I started learning Android development (without Java knowledge), my college had a subject where I had to learn MATLAB. I was learning 2 assembly languages at the same. So basically, I was learning 4 different languages, all at the same time. I was stressed.

Some days later, I also had to learn python for one competition. When I started learning it, I figured out, most of the things that I learnt in C and JS are common here. And thus, I could learn whole python (without any libraries) in just 2 hours. Same happened with Java, although it took time to learn Java, most of the concepts were same.

I participated in a Summer of Code where I picked a ReactJS project. I did not know anything about React. So I had to learn basic React so that I could start contributing. Till now, I had started learning from online tutorials. But, learning React was very frustrating for me, because the course would just keep going on and on. First he would teach React, then router, then something else. I got frustrated when he started Redux and left it there. Contributed as much as I could with my limited knowledge and got the certificate.

In my first job, I had to learn Angular. Since I had already learnt React, it was easy to understand Angular and I even started loving it. I could figure out some of the similarities between them.

Then I attended some workshops/meetups on Flutter, VueJS, SvelteJS etc. to keep myself updated. This is where the story ends. But my learning has not ended till now.

My Learnings

1. Do not learn multiple languages at the same time

I was teaching a guy once. He wanted to switch his carrier. He was learning python from me. One day, we were just having some discussion randomly where I found out, he was learning Java from some other teacher and python from 1 more different teacher. Thus, he could not find any time for practising all the problems that I used to give to him. And always used to be blank because he was mixing Java concepts with python concepts. And one python teacher is teaching something while he is learning something else from the other teacher.

Learn. But keep different things separate. Do not learn 2 major things together. You can pick one major skill and pick some minor skills and keep learning them together. Like Python and Git, or JavaScript and Web Hosting, etc. These are different domains of skills and you are not going to mess up between them.

2. Learn 2-3 languages in the beginning

Obviously, do not learn them all at once. Learning 2-3 different languages are going to teach you that all of them use the same concepts. The conditionals, loops, functions, arrays etc. all are similar in all the languages. The difference may be, their names may be different (lists in python vs arrays in C, Java, JS etc.) and the syntax may be different. But the concepts are same. Once you know how to learn a language while comparing with some other languages, learning more languages are going to be a piece of cake for you.

3. Practice

Here comes the tutorial purgatory part. Do not fall into it. Listen to me, DO NOT FALL INTO TUTORIAL PURGATORY. You have to practise what you learnt. You took the input. You may or may not have processed it, and you will know about this only when you output something. So go and practice some Data Structures, make some projects. If you don't have ideas, make your portfolio (web developers), or open any website or app that you like and make its clone.

4. Do not keep learning every new language/framework that comes into market

There is a limit. You can not learn everything. Do not compare yourself with others. Do not learn a new language just because one of your friends/connections on Twitter/LinkedIn is also learning it and you have the "Fear Of Missing Out".

I'll tell you one story of mine. I remember the time when "Deno" was launched. My twitter was filled with Deno related posts and how it could be "the next big thing". Everyone was writing about learning it. I did not even know NodeJS at that time. But I had a plan of starting it next month. When I heard about Deno and how people are getting crazy about it, I got confused whether I should start Node or Deno.

I had a call with 3 of my seniors regarding this (I wanted an odd number of Yeses and Nos ๐Ÿ˜›). You can also learn from their replies:

  1. If you think that it is a very big thing then you should learn it. And let me know if you find a good course. I'll also learn.
  2. How do you know it is going to succeed? Generally, the industry takes 5 years to accept any new language or framework. And at that time, you don't need to be the one having 5 years experience in it. Everyone would be learning it at that time. Second thing is, you will not find any tutorials right now. There is no community. And third, this is the first version of Deno. Do you realize how many bugs it might be having and how many versions are going to be released before it comes to the market.
  3. Learn Data Structures. Do not learn anything else. Focus on your basics first. You can learn everything else when you need them, but, your base should be very strong.

5. If you want to learn so much, learn different domains

If you know web frontend, you can start learning backend, you can start learning designing, or android development, iOS development, security, DevOps, etc. There are so many things in DevOps alone. Now, I am not saying that you should not go deep in one topic. I am just saying pick something that you love and keep exploring it, but explore other things also. For example, if you are a frontend developer working in React, then learn React and keep digging into it. Then learn 1 or 2 more libraries or frameworks in web frontend. Just stop your frontend tutorials there. Keep updating yourself about whatever you learnt. And about all new frameworks coming into the market, but do not learn them. Instead, start exploring a new domain. Who knows, you may like it more than react?

Be a master of one and jack of all.


If you enjoyed reading this blog, you can follow me on HashNode. I have also written some blogs on Medium you can follow me there also.

I keep posting my development journey and everything that I am learning on Twitter. You can follow me on twitter to follow along.