Navigate back to the homepage

How To Learn a New Programming Language/Framework

Ishan Sharma
June 8th, 2020 · 6 min read

If you’d run a simple Google Search for ‘How many Programming Languages Are There?’. The search results might shock you. According to WikiPedia, there are more than 700 programming languages that are currently listed, see for yourself.

I get asked these questions/queries a lot,

“I’ve completed, C++ or JavaScript, what should I do next? ”

“Which language/framework would land me a good job? ”

“I was learning C, but my friend asked me that I should learn Python first, should I go for same? ”

“From where should I learn? ”

and lots more..

I’ll try to answer these in the best way i can, from what’ve learnt through my experiences. But mind you, The thoughts that I’ll be sharing here are totally my personal opinions on the subjects. Each person is different and you might have some other opinion, and that’s totally okay. You should always go for what works out best for you.

Let’s Begin.


1. Before picking a language, pick a project.

As I’ve mentioned in one of my previous post, the best way to learn any new technology, programming language, is by building something in that language and putting our knowledge to some practical use.

I’ll tell you my personal recipe, I never start learning any framework/language, just because it is trending, or it has made to StackOverflow’s top 10 list. No.

What I do is, I just think for an idea for a project, sometimes it might take days, weeks to come up with a unique idea that has some real-world application, then afterwards, I break that big project, into much smaller problems. Like database connectivity in a large scale app etc.

Then, I go on for creating solutions for those smaller problems in my head and go searching on the internet for which frameworks/tech stack would be more suitable for solving those problems, and during this research, I also take into consideration, it’s popularity, community support, number of issues, stability, patch releases etc.

The major benefits of this approach are :

  • It’d help you to add some projects to your portfolio.
  • You’ll get to know how to make use of that framework/language in actual production environment.
  • Curisoty is the best teacher, right? Working on a real project will always keep you curious about what more features you can add, etc.
  • While working on a real project, you will obviously face a lot of issues, it’s inevitable! Debugging these issues on your own, is one of the most important skills, that every programmmer should have.

2. You can never learn it fully.

The hard fact about working with computers & programming is, that “one can never learn everything about a language”, and this is what should motivate you to keep learning more and more every day.

You can study C++, .NET or any other language/framework for over 20 years, and still discover new things in them, every day. You can be a pro at something, become a quite renowned personality in the same, but there’ll always be more to be learnt.

Just because, you might’ve completed a course on the subject or have a know-how of the syntaxes, does not mean that you’ve completed/conquered that subject.

There is so much more to a language, than just defining variables, loops, classes or structures etc. So, the fact that you or anyone (including the topmost programmer out there) have completed a language, doesn’t make any sense.

3. Conquer the language first, then it’s frameworks.

There are so many frameworks out there that make our life much easier, and tend to lure us to start learning them right way. Don’t get me wrong, it is always good to learn & use new frameworks & tech stacks. But before mastering any framework, you should have a keen knowledge about the language it is based upon.

For an analogy, If you want to learn react, you should have a good knowledge of ES6 JavaScript, similarly to learn gatsby, having a good experience with react is a must.

Mastering the frameworks, without having a strong grasp on the language itself, is just an illusion.

4. C/C++, Java or Python? Where To Start?

Now, This is a debatable question, there are threads full of discussions on this subject on reddit or other community platforms.

Honestly, It all comes down to your use-case scenario,

  • If your top priority is performance, go for C/C++.
  • If you want to play memory-safe, go for Java.
  • If you want incredible 3rd-party support, go for Python by all means.

While python is a way easier language to learn and adapt to for beginners, most of the large tech companies actually prefer people having experience with C++/Java as python is not mainly used in production because of it’s low performance issues.

What would I recommend? This might come as a surprise to a lot of you, but in my honest opinion, if you’re completely new to programming, I’d suggest you to learn JavaScript first! Surprised!? Let me explain.

a. Highly Versatile

One of the major reasons why I recommend learning JS is because of the sheer amount of areas it covers, you want to do Machine Learning? You’ve got Tensorflow, want to make Mobile Apps? You’ve got React-Native!

The third party and framework support for javascript is just amazing!

b. Performance

For most practical purposes, JavaScript is almost as fast as most of the high-performance-languages. It is way faster than Python, PHP or Ruby etc.

c. Embrace the artist in you! 🎨❤️

Yep, you read that right. This is the most major reason, why I recommend everyone to learn JavaScript.

See, what I truly believe is that

Programming isn’t just about writing loops, or finding the maximum element in an array, But it is about solving actual real-world problems through code!
Infact, it is one of the most artistic/creative jobs out there in the world. The more imaginative you are, the more better of a programmer you’ll be.

In mathematical words,

Your Coding Skills ∝ Your Imagination

with JavaScript, you can quickly create stunning websites, cross-platform mobile apps that are ready to be shared with the world in an instant. This gives you a tremendous power to reach out and touch the lives of so many people around the world and actually help them in their daily tasks.

5. From where Should I Learn?

There’s a basically indigestible amount of material available on the Internet. Infact,

“You can learn more from the internet in six months, than what your college might teach you in a span of 4 years.”

Most of the times, the best way to learn any new programming language/framework is through it’s official documentation. This is the place from where, every course creator, book author themselves learn and write their tutorials.

As a developer, for at least once in your lifetime, you’ll face a problem and the best solution would be to actually read the documentation. And in an industry, where everything is so frequently updated and rapdily improving, being able to read documentations the smart way, is an important skillset!

Still, sometimes the official documentation for a particular language might be bit more centric towards technical aspects and a bit hard to understand for beginners, For example, the C++ Documentation.

In those cases, you can always look for free ebooks on the subject, FreeCodeCamp is also one of the places where you can find great quality content for absolutely no costs. Moreover, you can always find tons of resources on the internet, just a simple Google Search will help you.

6. Study some code

Every language has it’s own unique abilities. If you have already learnt some other language, then you’ll mostly tend to inherit those approaches in your next language and this happens a lot. I learned this the hard way.

That’s why it is important to learn, what is the approach that a language is taking to solve a problem, more commonly known as language paradigm. Go to GitHub and read the code of the pros in that language, how are they approaching any problem.

For an example :

Bad Code

1ls = list()
2for element in range(10):
3 if not(element % 2):
4 ls.append(element)
5
6ls = list(filter(lambda element: not(element % 2), range(10)))

Good Code

1ls = [element for element in range(10) if not(element % 2)]

Even though, both of the above approaches, accomplish the same task, but the latter approach more closely follow the language paradigm of python. This is called idiomatic programming approach, you can read more on that here.

That’s why reading code of other professionals and understanding their approach, can prove much beneficial to you.

7. Don’t Give Up

Most of the times in your programming journey, you’ll be introduced to a new topic that makes utterly no sense to you.

No matter, how hard you try to avoid this, It’ll happen, what matters in such a state of affaris is how you react to the scenarios. If a topic doesn’t make sense to you, then stop right there instead of jumping to next topic. Rewatch those video lectures, read those notes/books over and over again, till it starts making sense to you.

If it still doesn’t, you can always search for a particular topic on YouTube, StackOverFlow or reach out to a fellow programmer, the programming community is one of the most helpful communities in the world.

If you do implement all the above mentioned steps in your workflow, then you’ll automatically get to know about what should be the next steps. Becoming a pro, in any programming language might take a lot of time, effort and determination.
Never be afraid of doing the same, always keep learning!

That’s all for now, see you in my next article 🤙. Happy coding 👨‍💻

Join my mailing list and get notified about new blogs

Be the first to receive my latest content with the ability to opt-out at anytime. Of course, I promise that I won't spam your inbox or share your email with any third parties.

More articles from Ishan Sharma

My Treasure Box

Rediscovering my first computer—the treasure box that sparked my tech journey

November 4th, 2024 · 9 min read

Quality vs Velocity

A decision-making framework, on how to balance out quality and speed in product development

October 6th, 2024 · 9 min read
© 2020–2024 Ishan Sharma
Link to $https://twitter.com/ishandeveloperLink to $https://github.com/ishandeveloperLink to $https://www.linkedin.com/in/ishandeveloperLink to $https://stackoverflow.com/users/13219775/ishandeveloperLink to $https://medium.com/@ishandeveloper