How to learn a new programming language or concept
Tags: learning, career, beginners, discuss
Published: 2019-04-15 08:33:09

---
title: How to learn a new programming language or concept
published: true
description: My process when I want to learn something new and get better at it.
tags: learning, career, beginner, discuss
canonical_url: http://samerazani.blog/my-learning-workflow/
cover_image: https://thepracticaldev.s3.amazonaws.com/i/kng9g0o91n8ha17ivatn.jpg
---

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?