Strategies for learning a new programming language.
Tags: programming, devjournal, codenewbie, 100daysofcode
Published: 2020-11-22 18:58:06

**Hello World, welcome to Dev Terminology, where we talk about dev concepts.**

**Today’s topic — Strategies for learning a new programming language.**

<hr/>

Note: some of these techniques may work for you, and some may not. If you get stuck or notice that these strategies aren’t working, then pivot. Try other strategies to find what works best for you.

`Learning a new language is like learning a new way of thinking.`

<br/>

<noscript><img alt="Image for post" class="ed dt dp gi w" src="https://miro.medium.com/max/18718/1*F-fbZKQeW6otDjVsN1v9Qw.png" width="9359" height="1530" srcSet="https://miro.medium.com/max/552/1*F-fbZKQeW6otDjVsN1v9Qw.png 276w, https://miro.medium.com/max/1104/1*F-fbZKQeW6otDjVsN1v9Qw.png 552w, https://miro.medium.com/max/1280/1*F-fbZKQeW6otDjVsN1v9Qw.png 640w, https://miro.medium.com/max/1456/1*F-fbZKQeW6otDjVsN1v9Qw.png 728w, https://miro.medium.com/max/1632/1*F-fbZKQeW6otDjVsN1v9Qw.png 816w, https://miro.medium.com/max/1808/1*F-fbZKQeW6otDjVsN1v9Qw.png 904w, https://miro.medium.com/max/1984/1*F-fbZKQeW6otDjVsN1v9Qw.png 992w, https://miro.medium.com/max/2000/1*F-fbZKQeW6otDjVsN1v9Qw.png 1000w" sizes="1000px"/></noscript>

<br/>

> **Strategies for learning a new programming language — The Gist … Practice**

1.  Choose your programming language.
2.  Read the Docs and go through the doc tutorial page.
3.  Practice with coding interview problems.
4.  Get started on a small project.
5.  Engage with the community for support.
6.  Dive deeper.

<br/>

Remember that everybody learns differently, and regardless of your background, you are not alone. Learning to program is a never-ending struggle.

`Learning anything requires time, patience, and practice.`

<br/>

> **_Strategies for learning a new programming language — Overview_**

### Choose your programming language.

At this point, I’<span id="rmm"><span id="rmm">m</span></span> going to assume you understand the fundamentals of programming; if not, take a moment to learn them. It’s important to have that foundation.

[Programming Fundamentals](https://thedevnotes.hashnode.dev/programming-fundamentals)

Once you’ve got your foundation — choose a language that you want to learn.


<hr/>


### Read the Docs and go through the doc tutorial page.

Reading docs can be a real snoozer, so remember that reference docs are generally written to be searched through rather than memorized — so don’t read it like a novel.

*   Skim through the table of context
*   Jot down some notes on:

`Things that look familiar, and look the way you expected them to.`

`Things that look familiar, but do something unexpected.`

`Things that look totally new.`

Read about the language and find the differences. Ask yourself questions like, is this language statically typed or dynamically typed? Is it compiled or interpreted? Jot down the paradigm you’ve never seen before.

Now go through the getting started tutorial to get set up.


```
Print Hello World!
```


<hr/>


### Practice with coding interview problems.

You might be wondering — `Why coding interview problems?`

> Gist — To help you build pattern recognition.

Coding interview problems are preset problems that allow you to focus on a specific idea at a time. Unlike small projects, coding interview problems are a bit more straight forward — you get a question, you give an answer. Solve a problem, then move on.

So how many problems should you do?

50, 100 + maybe? Honestly, it’s really up to you. Do enough to cover the foundational blocks — a set variety of different kinds of problems (i.e., Variables, Loops, Conditional statements, Functions, Data structures, Classes, etc…)

**As you go through these problems and encounter something you don’t know how to do — look it up. Call your friend Google to help you out.**

While you are solving these problems, consider coding by hand. — Build that muscle memory.

Don’t forget — **The Goal of this is to gain a foundational understanding,** and it may expose the gaps in your knowledge. Make sure to keep track of what you don’t know so that you can revisit it later.

<hr/>

> Where to find coding interview problems

- [500+ Data Structures and Algorithms Interview Questions & Practice Problems](https://blog.usejournal.com/500-data-structures-and-algorithms-practice-problems-35afe8a1e222)
- [AlgoExpert](https://www.algoexpert.io/product)
- [HackerRank](https://www.hackerrank.com/dashboard)
- [Edabit](https://edabit.com/challenges/python3)
- [LeetCode](https://leetcode.com)


<hr/>


### Get started on a small project.

Maybe consider having a toy project that you can implement repeatedly in whatever language you are learning so that you can see the differences between how each language you’ve learned goes about doing the same thing.

**Focus on getting your code as clean and idiomatic as possible.**

> Template projects:

*   [Project Euler](https://projecteuler.net/)
*   [Rosetta Code puzzle](https://rosettacode.org/wiki/Category:Puzzles)
*   With template projects, you can often compare your solution to those written by others in the same language. Take note of the differences and ask yourself what can you improve on.


<hr/>


### Engage with the community for support.

Get your projects code reviewed.

If you need more help, find tutorials, crash courses, articles, books, and/or a mentor.


<hr/>


### Dive deeper.

Write production-ready code in the language. Use the language in a more realistic setting to help you explore its real-life advantages and challenges.

Read and test out lots of code — example code and production code.

> Practice, Practice, Practice.

Maintain your enthusiasm.

<br/>

> **Final note — Once you’ve learned it, teach it in simple terms (see it, write it, speak it, repeat).**


<hr/>

This was Dev Terminology. Thanks for reading.

<br/>

Credits and acknowledgment to the dev community.

<br/>

> Written by **_Jessica Dosseh_**
> 
> **Find Jessica on:** [[GitHub](https://github.com/JessicaDosseh), [LinkedIn](https://www.linkedin.com/in/jessicadosseh/), [Twitter](https://twitter.com/JessicaDosseh), [Patreon](https://www.patreon.com/jessicadosseh), and [Portfolio](https://jessicadosseh.dev/)]

>  **Find theDevnotes on:** [[GitHub](https://github.com/theDevnotes), [Twitter](https://twitter.com/_theDevnotes), [Blog](https://thedevnotes.hashnode.dev), [Medium](https://thedevnotes.medium.com), [Dev.to](https://dev.to/thedevnotes)]

<br/>

**_P.S: [Dear reader — visit again sometime :)]_**