How to learn a new programming language effectively

Ashok Vishwakarma
Ashok Vishwakarma

Jan 22, 2019 • 4 min read

Learning is essential in every aspect of our lives and technology is changing every moment. New Programming language, libraries, frameworks and tools are being created to make our lives as a developer/engineer easier and learning them at the same pace is challenging.

Why learn a new programming language

Developers and engineers often wonder why they need to learn another programming language when the one they already know is capable of fulfilling their requirements.

The opinion to believe that every programming language of capable of doing everything is debatable if you consider the efficiency and performance. This debate can also be extended further if you add scripting languages and markup languages into the debate.

To summarize all I am saying is every programming language is unique and performs better solving some problems so its necessary to equip with more, to build effective solutions.

Which programming language to learn

Most often I see developers and engineers are wondering which programming language is better and have future. The first thing you need to understand that better does not mean that it can outrun other programming languages in every aspect and there is no certainty it will last forever.

So before getting into learning, you should gather enough information about your expectations and find the suitable programming language fulfilling those expectations.

Let’s say you are from a JavaScript background, most of your job to is to work on the client side and you want to develop some server-side capabilities within you. The first answer which feels suitable is NodeJS but only knowing NodeJS will not make you capable to build a server-side application, there are more to this scenario.

If you are from a client-side background and you have no clue how servers works, for example — HTTP is very well known to you as a client, not as a server. You have used, HTTP client APIs (fetch or XMLHttpRequest) to build a request and capture the response but when you get-started with NodeJs your responsibility has changed, now you have to capture the request and build a response. So before getting started with NodeJS you first have to understand how server-side as a technology works which is the other dimension of client-server technology.

Be open and surrender the ego

The very first thing about learning is to be open and in agreement with the fact that you don’t know anything about it. Accepting that you do not know will open the possibility to know and pursuit to know.

There is a saying in mythology “In order to fill the cup you got to empty it first” which means you cannot fill an already filled cup. You will only be focused on every nuance of the topic if you surrender the restricted force of ego, an ego that you know.

It would be annoying if you getting cut in the middle of a conversation because you already know about it. Letting the conversation going on may help you to understand the other aspects of it and also add more clarity to it which can only be done if you surrender your ego of knowing it.

Relate with the one you know

The human brain does a lot of tricks to perform, it is a complex mechanism to understand, but research shows that if you attach some information with a real-life scenario or emotion, recalling that information will be easy.

So when you start to learn a new programming language try to relate it to the programing language you already know in the same technology (server-side or client-side) and this will become a related process or a relation. This relation will help you to identify the problems you should focus and also create a step-by-step process to solve them.

For example, if you already know any server-side language like NodeJS, PHP or Python etc. and you want to learn Golang (Go) the very thing after setting up the Golang on your machine you will start wondering about the next step, maybe you figure out the second step and build and run the basic hello world example but then you’ll start wondering the next step and so on.

If you relate Golang with NodeJS suddenly you start thinking about the things you can do in NodeJs as you can accept requests from the client, send responses to the client, create routing rules for the server etc. etc.

Build a real solution

The other best option to eliminate the wonder of next steps in the process of learning, you can pick a real solution from your past and start building the same in the programming language you want to learn, as you already know the next step of building that solution from your past experience.

Building a real solution also helps you to dig deep into the programming language and its workings as real scenarios of the solution are independent of the programming language.

But there is one other thing to consider is the commitment to finish building the whole solution. Giving yourself a timeline helps you to be focused and consistent. Building the same solution from scratch again gives you more clarity and also open the possibility of correcting the existing one.


The way technology is evolving on such a faster pace, for developers and engineers its a challenge to keep up with it. Continues learning may solve the problem and let you keep up with the technology evolution.

Being a developer or engineer you must spend some time in continues learning things that help you become a better developer or engineer.

Ashok Vishwakarma

Ashok Vishwakarma

Google Develover Expert — WebTechnologies and Angular | Principal Architect at | Entrepreneur | TechEnthusiast | Speaker