Oprea.Rocks Logo

Get updates on new articles, and other opportunities

I'm learning Go

A man of learning (Avicenna?). Oil painting by a Ne Wellcome V0017691

I've been trying to make time to learn Go since 2015. I've been on and off with it, tried various resources, hacked on a couple of projects, but I still don't have the confidence necessary to work on real-life projects and put Go on my CV.

For the past couple of months I've been working with a company that does blockchain projects. Due to the specific requirements of ICOs and crypto exchanges, the need for more structure and predictability from the language/platform has become increasingly obvious.

We're using Node.js for our backends and it's becoming harder and harder to reason about a product's backend. Requirements are somewhat volatile, there's not much time to spend on writing documentation, so the code needs to be written such that it's not hard to maintain and modify when the requirement to do so arises.

Now, I've been, and will continue to be a heavy JavaScript user. I'm aware of many of its benefits and limitations. Like many of us, I'm also a creature of habit and find it hard to transcend that condition. JavaScript is not a bad language, after all. It has a low barrier for entry, its developer friendly, learning resources are more than enough, on the web. I actually find it upsetting that people still talk about JavaScript like it's 2002. They're probably still living in 2002, professionally-wise.

But with all the tooling and style guides available, and all the articles and tutorials combined, you can still write crap JavaScript. If you're a beginner, barely starting out, or a veteran that doesn't care anymore, you can write JavaScript that poops on the best cloud infrastructure money can buy. The problem with writing crap JavaScript is that it also runs like crap. Unlike languages like Go, where even if you write crap code, the compiler still makes some optimizations that make your app run decently, even if it was coded by a blind monkey.

I know there's also TypeScript if better predictability or debug-ability are so important. The only problem with TypeScript is that it's not actually a real language. It's not "a real boy". It's an amazing tool, but I wouldn't want to have myself, or the developers I work with, hung up on a tool. I also feel that having a second language I'm equally proficient in, would be a great way to enhance the creativity and flexibility of the solutions I build.

So, without further ado, I set myself out to learn Golang!

You might ask yourself why should you care that I started to learn a new language. You shouldn't. I wrote this article to keep myself accountable for carrying through with my "task". I'd like to share this experience with the people who are following me online, and maybe motivate one or two of them to learn the language.

I will do my best to constantly update the reading list with the newest links, courses and tips I come across, during this new endeavour.


Image credits: Wellcome Images — A man of learning (Avicenna?). Oil painting by a Neapolitan painter, 17th century.

CC BY 4.0, via Wikimedia Commons