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.