DEV Community

Ersin Buckley
Ersin Buckley

Posted on • Originally published at ersin.nz

Should I learn golang in 2023

Workplace in 2013

The year is 2013, you've just landed your first real engineering job and you get to churn out angular.js and PHP. What is even better, you are paid a handsome junior salary to do it. In other words you are living the dream.

If I could ask one thing of my future self at the time it would be. Should I learn the Go language?

The Go language was really fresh at the time. It had come up in one or two conversations with my mentor. The hype online was starting to build, interesting tools like docker were being built on the language, and it was popping up all the time on the front page of Hacker News. What's more, it was supported by google.

New Zealand had very few opportunities to use Go professionally. We tend to be microsoft centric down under. On the face of it, Golang doesn't look like the best tool to pick up next. If job optionality was most important, one would be better off learning C# or Java.

Despite all this, you should learn Go first young Ersin. Start building side projects, don't fret that there are no job opportunities yet, even if it doesn't end up in paid work, you will learn along the way. You will learn a new type system, you will be exposed to the kind of problems the language is good at solving (concurrency, distributed services, systems programming). The types of blog posts and tutorials coming out centered around go will stretch your knowledge and make your more well rounded. This is the kind of thing that compounds and makes you better years down the track.

The side projects you build might seem inconsequential, but each new project you build hones that muscle. Reading code and trying new things are how you grow. When the day job becomes routine, a side project will keep you invested in your craft. The effort will pay off eventually, I promise.

If you take one point from this, always take a bet on niche and emerging technologies.

The prevailing wisdom is that you should stick with learning the most popular tools, to give you the best chance of landing jobs. I think doing just the safe bet is a mistake. We should adopt a barbell strategy in technology. Build a solid base with safe choices to earn your way in to the industry -- then put time into many niche, emerging and wildly interesting technologies. This gives you the security of stable work, while broadening your horizons in a direction that brings you joy. Eventually, an opportunity will come up in one of these niches.

It is an amazing thing to be ahead of the curve on an emerging niche technology. Projects are more likely to be green-field. The people who are drawn to organizations that use them are typically more engaged in the work, and you will find a higher degree of alignment in the team. People aren't just there for the money or because they want to get a job at all costs. Not to mention if that tool becomes wildly successful, you will be an outlier expert of which no one can catch up

What about in 2023?

So a decade later, If I was asked the same question "Should I learn go?"; I would say Yea! but the reasons are different now. Although it's still a niche technology in New Zealand, there is always at least a couple jobs on the board. You could bet your career on Go as the 'safe' option.

After that first job, you might be better off focusing your efforts on a more radical technology. Instead of Go, branch out and pick up another emerging niche technology. You never know where it will take you, so find what piques your interest and dive in head first! It's hard to picture where you will be in ten years time, so best not get overly focused on the outcome but instead focus on the journey.

Top comments (5)

Collapse
 
iamspathan profile image
Sohail Pathan

Can you share some links to resources for learning Go?

Collapse
 
vbd profile image
Volker B. Duetsch
Collapse
 
iamspathan profile image
Sohail Pathan

Thanks, Valkar. I'll take a look at them.

Also happy to connect here :)

Collapse
 
sethcalebweeks profile image
Caleb Weeks

I started learning Go today as the penultimate language for #12in23 on Exercism. Learning new languages is a lot of fun for me, and I've been trying to broaden my knowledge on the topic. What are some niche areas of technology that interest you now?

Collapse
 
ebuckley profile image
Ersin Buckley

Rust! After going to the local meetup, it made me realize there is a good cohort of people who are interested in the language, and writing high performance systems. Making things go faster, run cheaper has been some of the most gratifying work I've done, and I'm pretty excited about the potential of Rust for that reason.

But I'm really not as dedicated as this post probably makes me sound, I've also been dabbling around:

  • CRDT's
  • Desktop framework for go (Wails)
  • Distributed Cache systems
  • AIS decoding
  • Fast writing of parquet files