How To Learn a New Programming Language/Framework
Tags: productivity, tips, javascript
Published: 2020-06-17 10:19:37

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](https://en.wikipedia.org/wiki/List_of_programming_languages).

#### First Of All, Who Am I? And Why Should You Even Bother Listening To Me?
I'll just quickly introduce myself. I'm **Ishan**, a self taught programmer and I've quite expertise in working with MERN Stack, Flutter, .NET, Python and a little bit of C++.

I've programming/solving real-world problems from the last 7 years. I started it when I was in 7th Grade in my school. I also made an app named **'Hotspoter'** [A windows desktop app in C# based on .NET], in 9th Grade. Right now, it has crossed over **5 Million Downloads**.

I get asked these questions/queries a lot,

> #### "I've completed, C++ or JavaScript, what should I do next? " <br/>
>
> #### "Which language/framework would land me a good job? " <br/>
>
> #### "There are so many trending frameworks, which one should I learn? " <br/>
>
> #### "I was learning C, but my friend asked me that I should learn Python first, should I go for same? " <br/>
>
> #### "From where should I learn? "

and lots more..

**DISCLAIMER :** I’ll try to answer these in the best way i can, from what I’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.

<br/>

1. #### Before picking a language, pick a project.

    As I've mentioned in one of my [previous post](https://blog.ishandeveloper.now.com/wiki-search), 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.
    - Curiosity 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.

1. #### You can never learn it fully.

    The hard fact about working with computers & programming is, that <mark><b><i>"one can never learn everything about a language"</i></b></mark>, 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.

1. #### 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.

1. #### 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](https://www.reddit.com/r/learnprogramming/comments/311xg0/python_vs_c_vs_java_1st_programming_language/) 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.  
<br/>
    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.
<br/>
    **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.

    #### `1.` 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!

    #### `2.` 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.

    #### `3.` 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 <blockquote><mark><i>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!<b></b></i></mark></blockquote>
    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, <blockquote><mark>"You can learn more from the internet in six months, than what your college might teach you in a span of 4 years."</mark></blockquote>

    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](https://en.cppreference.com/w/). 

    In those cases, you can always look for free ebooks on the subject, [FreeCodeCamp](http://freecodecamp.org/) 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

    ```python
    ls = list()
    for element in range(10):
      if not(element % 2):
        ls.append(element)

    ls = list(filter(lambda element: not(element % 2), range(10)))
    ```

    #### Good Code

    ```python
    ls = [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](https://docs.python-guide.org/writing/style/#:~:text=Idiomatic%20Python%20code%20is%20often,idioms%20must%20be%20consciously%20acquired.).

    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 affairs 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. Re-watch 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, Stack-Overflow 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 later 🤙. **Keep coding 👨‍💻**

If you have any suggestions, feel free to share in the comments!

Originally published on [my personal blog.](https://blog.ishandeveloper.com/new-lang-framework)