How You Can Pick Up New Languages Quickly
Tags: go, learning, coding, engineering
Published: 2019-03-23 22:43:15

---
title: How You Can Pick Up New Languages Quickly
published: true
description: My secret to being able to write meaningful code in no time
tags: Golang, Learning, Coding, Engineering
---

![learning new things](https://thepracticaldev.s3.amazonaws.com/i/qsiqjte92je1ryk6zeti.jpg)


One of the biggest misconceptions about learning a new concept, language or framework is how you can do so effectively.
I've learned with and worked next to a lot of great people that had an account with any of the big learning sites or had a big library of courses on technologies that wanted to learn and I myself had a similar library.

Sadly - in most cases - just following a tutorial or a course does **not** make you better in something new. 
Often times it absolves you from thinking yourself and thus hampers your progress rather than speeding it up as you had hoped.

## My Situation

I've recently started a new position in a company that uses a stack with which I have **never** worked with.<br> 
In my eyes, it’s a great opportunity, and I think a lot more people could benefit from considering jobs that they think "they aren't suited for". <br>

A lot of companies out there are willing to teach you syntax on the job if you are a good candidate.<br>
For them it comes down to if you are a good candidate: if you are understanding the underlying concepts, are coachable and a good team fit they will hire you regardless. <br>

In this article, I'd like to show you how I approach learning a new language and how it enables me (and hopefully you) to contribute to something quickly and will do so on the example of Golang!

## 1: Find Resources That Are Useful

Finding good resources feels surprisingly hard these days. This mostly stems from the sheer amount of content that is out there.
On any given topic there are at roughly 15 video courses that take you from being an absolute beginner to mastery in 4 hours and around 200 blog articles accompanying them. Selecting out of that many options is **hard**.

What I like to focus on besides the basic syntax is how to translate concepts I'm already familiar with and see how they are implemented in the new language. This helps me develop a mental model of what is going on quickly. <br>
My next step revolves around best practices.
These following resources are what helped me with Golang in particular.

#### Intro To Go

A great intro to the language's syntax is the official tour that you can find [here](https://tour.golang.org/welcome/1).<br>
It takes you through the basic concepts of the language and has concrete examples and exercises that help you familiarize yourself with the basics.

I think it's a great resource regardless of if Go is going to be your first language or you've worked with others before. Although it will be more challenging of course.

As a next step, I'd recommend at least reading through [How to Write Go Code](https://golang.org/doc/code.html) which is also part of the official resources.

#### Beyond The Basics

One thing that really helped me was reading up on best practices in Go and comparing those to other languages I have worked with.
Translating concepts I'm already familiar with into the new context helps me understand what is going on in a new codebase or how to design the new service I have to write for example.

A great resource for this would be [Effective Go](https://golang.org/doc/effective_go.html). I've also found a few talks that really helped me understand the Go ecosystem and gave me an in on the quirks that I should be looking out for: [Go Says WAT](https://www.youtube.com/watch?v=zPd0Cxzsslk&t=999s) or [Things in Go I never Use](https://www.youtube.com/watch?v=5DVV36uqQ4E).


## 2: Build Familiar Things!

![Simple Things](https://thepracticaldev.s3.amazonaws.com/i/65st8lxpd0khf5arn2jy.jpg)

For Golang, my first project was a REST API. It's a fantastic way to learn how the language handles HTTP requests, what tools are useful for this and it's simple enough to not take up multiple days of your time.
Also, APIs are used everywhere and are likely a core part of your (future) job.

In general, I think it is a fantastic idea to use a simple version of something you are already familiar with and port it into the language you are trying to learn.
If you are super comfortable writing an API, algorithm or toy program you can focus on the key differences and learn from them!