I just want to be a Golang developer - How to get started
Tags: beginners, career, go, tutorial
Published: 2020-03-16 17:44:43

Hey 👀✨

I've been searching almost everywhere to find some good resources to learn Go, and I just realized that there wasn't much information about it! So, what a better way to learn new things than reviewing resources to teach others.

But first, allow me to introduce myself: I'm Antonio (Tony, Tonio, Anto, many other variants allowed...), a Ruby on Rails developer for almost a year, after one and a half years of WordPress and other front-end tasks. I wanted to do something new, something that could teach me how to improve in other fields of programming and would be fun at the same time. That leaves us with the big first question...

![Le'go](https://media.giphy.com/media/CjmvTCZf2U3p09Cn0h/giphy.gif)

#Why would I learn GO?#

Let's start with the basics, in case you haven't decided yet if this language is really for you.

First of all, Go is an open-source programming language. It's [statically typed](https://hackernoon.com/i-finally-understand-static-vs-dynamic-typing-and-you-will-too-ad0c2bd0acc7) and produces compiled machine code binaries (an executable, just like Java). If you need a comparison, people say that Go it's the *"new age C"* speaking of syntax (fear not, it's pretty easy on the eyes).

It was introduced back in 2009, and it's now (16/03/2020) in version 1.14.

It's main characteristics are: 

- Ease of use together with state-of-the-art productivity.
- High-level efficiency along with static typing.
- Advanced performance for networking and the full use of multi-core power.

And you may be wondering what you can do with Go, well:

- You can create websites.
- You can de IoT stuff.
- You can do Desktop Software.
- You can do... [eveything.](https://github.com/avelino/awesome-go)

![So powerful](https://media.giphy.com/media/dt0hE9OmRi0j5R1LRf/giphy.gif)<figcaption>So damn powerful.</figcaption>

Aren't you interested yet? You can read more about it on this [website](https://www.upwork.com/hiring/development/golang-programming-language/)

If you are, please keep reading, as there is a lot to know.

#How do I learn GO?#

First, you need to know the basics of the language, and for that, I truly recommend doing the [Go Tour](https://tour.golang.org/welcome/1).

![A Go Tour webpage example](https://dev-to-uploads.s3.amazonaws.com/i/0t03o8q1j8g5rcfksnao.JPG)

On this tutorial made by the creators of Golang, you will get through all the content that makes Go what it really is. **All of its main features you need to know** to start doing stuff. Slices, Goroutines, Channels, Structs... but worry not, those concepts may sound pretty weird, but if you have a software background, you will notice that everything else is pretty much the same as other languages (**and even easier!**).

After you've done this, you may want to set up an environment on your computer. 

#How do I install GO?#

If so, you should follow the steps [here](https://golang.org/doc/install). No matter what OS you have on your computer, Go works everywhere!

I do recommend VSCode to work with Golang. You'll get a lot of useful tools [recommended by the editor itself](https://github.com/Microsoft/vscode-go/wiki/Go-tools-that-the-Go-extension-depends-on) when you start coding with the language. A linter, snippets, etc... 

![Teamwork!](https://media.giphy.com/media/VgeGEVTdwzZao/giphy.gif)
<figcaption>Thanks VSCode team!</figcaption>

You also have the JetBrains option, [GoLand](https://www.jetbrains.com/go/), if you want and can afford it.

#Something to read, so I can improve?#

Before we dive deeper into recommendations for Go, you should check some of these books out if you think you need more knowledge of the language:

- [An introduction to Programming in Go](https://www.golang-book.com/books/intro) - A must if you are new to programming and you want to start with Go.
- [Build Web Applications with Go](https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/) - if you want to get into Web Development with Go.
- [Go for Javascript Developers](https://github.com/pazams/go-for-javascript-developers) - In case you already know JS, this may help you learn Go faster!
- [More recommended books here](https://github.com/dariubs/GoBooks)

![Read please](https://media.giphy.com/media/RZnTaU1aKBjJm/giphy.gif)
<figcaption>But please wait until COVID-19 goes away!</figcaption>

Okay, I feel that you now have enough resources to create your own path into Golang, but you need something to practice, so... what about some *exercises*?

#What about learning by doing?#

You don't need to make every exercise or watch every video you see here, but they may help you develop your programming skills and Golang knowledge.

##Gophercises##

![Gophercises logo](https://gophercises.com/img/gophercises_logo.png)
[Gophercises](https://gophercises.com/) is a free course that will help you become more familiar with Go while developing your skills as a programmer. In the course, we will build roughly 20 different mini-applications, packages, and tools that are each designed to teach you something different.

##JustForFunc##

![JustForFunc Channel](https://dev-to-uploads.s3.amazonaws.com/i/8recy2iolramsjs5b8y8.JPG)
[JustForFunc](https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw/) also used to upload tons of videos about Go new features and tutorials, so be sure to check them out!

Other resources of interest: 
- [Learn Go with tests](https://quii.gitbook.io/learn-go-with-tests/)

And last, but not least.

##Do a project of your own!##

There are a lot of options around there. Maybe find something that you've always wanted to have, or some simple application that you think is missing something, and create it again.

I started with a To-Do list on console and an HTTP server to serve my own website. Keep it simple at first, we don't want you to get suffocated! 

![Do it yourself!](https://media.giphy.com/media/VIEngKb5u48e35Lxp4/giphy.gif)
<figcaption>DIY!</figcaption>

Here you have a curated list of awesome Go frameworks, libraries and software [Awesome Go](https://awesome-go.com/), so you can experiment with whatever you want to first.

If you are into web development (as I am), I can recommend you [Gin Gonic](https://gin-gonic.com/), a web framework to have a pleasant journey creating a website of your own (even though, I recommend you to do it without framework if this is your first time using Go).

![The end](https://media.giphy.com/media/Xj1GHC7mXPquY/giphy.gif)
<figcaption>Nothing at all.</figcaption>

And... I think we can stop it for the day. There is a lot to speak about regarding Go, but I think that the basics are covered in this post, so you can start experimenting with Go. Thanks for reading, and please, if you liked it, let me know, so I keep bringing content to this awesome community.

You can follow me so you are tuned to whenever I post something through my [Twitter ](twitter.com/brownio_) account, hope you liked it!

There are no limits... *Go* in and play!