DEV Community

Cover image for How to learn a new programming language or concept
Samer Azani
Samer Azani

Posted on • Updated on • Originally published at samerazani.blog

How to learn a new programming language or concept

Last year I started learning react, and I want to share how I started doing this. Below is my process when I want to learn something new and get better at it.

1. Taking online courses and watching videos:

I enjoy these courses since I can pause and start on my own pace. Many online platforms allow taking notes or bookmarking frames. Others provide exercises that can be done and share with the instructor or other members.

There are many platforms that offer online development courses. Some are short and specific, while others need more time and money investment.

Examples:
1) udemy.com
2) coursera.com
3) edx.org
4) teamtreehouse.com
5) udacity.com
6) theodinproject.com
7) codeacademy.com
8) khanacademy.org
9) pluralsight.com
10) freecodecamp.org

2. Doing a side project:

As a start online courses are beneficial. However, it is only when I do a side project on my own that the new information really kicks in and I got used to it. As with learning other stuff, exposure is key. Even if it is a small code addition, getting exposed to the new concept helps a lot in information retention.

3. Reading the official documentation:

This is usually my first step when I start learning a new language or concept. Often, the documentation are well-written and broad. In addition, depending on the material there, I may opt in for taking an online course, watching videos, or reading articles.

4. Reading blogs posts and articles:

While drinking coffee, I usually give myself half an hour in the morning to read about new stuff I'm learning. I read blog posts and discussions to get new ideas or clear some misconceptions.

When coding, I often use stackoverflow, github discussions, and other blog articles that help me in the new territory.

My favorites general blog platforms are:
1) dev.to
2) medium.com
3) stackoverflow.com
4) github.com

There are many other blog platforms that are specific to certain fields, like css, javascript or html. I can not list them all since there are so many.

5. Following people on Twitter:

This will allow me to follow the latest trends, discussions, and thoughts and get links to the latest articles and posts.

6. Exposure to community/peers:

Meeting people who have experience in that field, exchanging knowledge, and discussing new trends or best practices is very important. This is either in my workplace like pair-programming or reviews, or external places like conferences and meetups.

I am guilty of my shortcomings in attending conferences and meetups and am trying to improve this as soon as possible.

7. Being consistent in learning:

Everyone has their own pace in learning, and I don't compare myself to others. I ususally learn a part or module every other day and implement it. Most importantly, I do not stress myself and keep it fun.

8. Taking a break:

When I feel overwhelmed with the new material, I take a break and do something else. The break may vary from couple of minutes to several days. When I feel relaxed and rejuvenated, I come back to the topic with a refreshed mind and new energy.

9. Selecting enjoyable topics:

I usually select topics I enjoy doing, which is now related to web. Most of the times, I select a topic that compliments my existing knowledge but have not enough experience or exposure to.

10. Sharing what I know:

After having enough exposure and experience in the new material, it's time to give back and share when I can. This is with work colleagues, local communities, online blog posts and articles, and open-source projects. Open-source projects is one aspect, which I unfortunately lack, and am planning to improve in as well.

11. Doing a real-time client project:

This will forge everything I learned and will expose me to new depths in the new language.

At the end, it takes time depending on each person to fully understand a new topic. That said, what's your process for learning something new?

Top comments (5)

Collapse
 
physicalit profile image
Sergiu

Nice, same as me with a little difference.
I do not use Twitter and I am putting on the first place, starting a project that I like and then using site's like Udemy.

I tried it like you mentioned, by following a path and just start a course without a project in mind, but when the hard part appears and I don't have an ongoing project to which I can relate, my brain will return an non zero exit code with regards to the things I am trying to learn.

So, because of this, I am always trying to work on a project and learn on the go.

This is prone to errors and having some bad code in the project, but next time you do something similar, you will have the experience of knowing what can go wrong and where to look for the correct answer.

Always go in to production with the things you know and understand very well.

Collapse
 
samizan profile image
Samer Azani • Edited

Great to hear that. Doing your own project is really helpful and immerses you a lot into the code and problem-solving.

Collapse
 
sairajchintha profile image
Chintha Sairaj

Thanks Samer..Looking for a Similar thread to Grab answers for questions i had regarding learning a new language...!Finally this thread helped me to make everything clear.Thanks a lot

Collapse
 
samizan profile image
Samer Azani • Edited

Thank you! Glad to hear that :)

Collapse
 
laurieontech profile image
Laurie

My first is probably adapt a tutorial/demo app. I'm more likely to start to make the right connections by doing that. Instead of staring at a blank IDE and wondering where to begin.