Rover's blog

Why you should get into Golang right now

March 20, 2018

Besides working for a couple of years with Node.JS and just JavaScript in general, I have been doing Golang projects for almost 3 years now. Despite the fact that it definitely became my favourite language to work with, I did not forget to keep up with the Node community. Lately it seems like Go will be able to generate the same amount of hype around the language as Node.JS did back in the day.

While Node.JS grabbed everyone’s attention by quickly becoming the star of fullstack development, Go accomplished this success by having one of the best learning curves, along with the brilliant processing power it’s bringing to the table.

The background
Why Go walks in the footsteps of Node.JS?

Node.JS has a promise. Literally. The promise of Node.JS is that we will be able to write our entire codebase in JavaScript. We can have common repositories that can support both our backend and frontend codes. We’re going to use the same packages on both sides.

We don’t have to hire backend developers, we can just hire JS developers and we are done for our project.

promise

Is it true? Does it solve every problem?

Being able to use JS on both sides can have its advantages and disadvantages obviously. We have to understand that choosing this kind of development also brings out the weaknesses of it.

But does it matter?

Not at all. Node.JS is rising to the top of the charts as the most used tool by thousands of companies from startups to enterprises.
In the last 5 years Node.JS radically dominated as the rising tool for backend development powered by its promise behind it. For some companies, it is the Holy Grail, but for others, the adaptation of Node.JS didn’t work out properly. This can easily happen with any technology, if you ignore its drawbacks, like the fact, that it’s really hard to maintain a Node.JS monolith project in the long run, and not just from a DevOps point of view, but from code quality as well.

The Promise of Go

Go has a promise as well, but it’s a little bit different. It focuses on the fact, that it should be

  • Bloody fast
  • Easy to learn
  • Crossplatform

The promise of Go is that you will be able to learn it quickly, therefore you can create faster and more efficient softwares, without additional effort on the maintanence side. You are going to need less resources, and it’s still going to perform better than you would imagine.

As a software engineer, I have to say that these are pretty much the features everyone would love to see in a language.

But the fact is that Golang has its downsides too, for example dependency management and versioning are still a huge issue.

golang y u no have generics

But once again, does it matter?

Not at all. Companies started to adapt Go like it’s the new Holy Grail.
Like… it’s Node.JS.
The language has gained quite a community behind it in the last couple of years, and also projects like Kubernetes help a lot in that.

If we are trying to compare Node.JS and Golang from this perspective we can see that there are a lot of similarities.

  • Quickly gaining community support in the last years
  • Having a promise about solving all problems
  • Enterprises and startups are adapting it
  • Super exciting to use
  • Likely to be seen as a no-brainer solution without further details
  • Crossplatform

The hiring perspective
What’s happening on the labour market?

Software engineers are worth a lot and this is not likely to change in the future. Still, from a hiring standpoint, sometimes it is more difficult to find candidates for a position than it is for other positions.

Hiring Node.JS devs

If your company is working with Node.JS and you are trying to hire developers, you are going to encounter the problem of quality and quantity.

We know from statistics that you are more likely to find a JavaScript developer, than any other kinds of developers, basically. This also results in the lack of quality on the labour market. As I mentioned before, not every JavaScript developer can write the best quality Node.JS code ever, and I think this is understandable. While there are a lot of similarities between frontend JS and backend JS, they divide at some point.

Some problems require extensive experience in the given language/tool, but fullstack developers gain experience more slowly, since they are working on both sides. Therefore it is logical that a candidate who has 1 year fullstack developer experience, compared to a backend developer who only worked on the backend side for the same amount of time might have a totally different knowledge despite the fact that they were both “JavaScript” developers for a year.

koalafications

Hiring Golang devs

If you are trying to hire an experienced Golang developer, it will most likely cause a lot of pain for you.
There are a couple of reasons why it is hard to hire Go devs right now:

  • People are just getting on the hype train, it is still early
  • Experienced devs are rare, therefore they are expensive
  • By being expensive, companies who are able to pay them enough money are mostly enterprises.

While they are usually expensive, experienced Golang devs tend to be great software engineers. While writing a functional code does not require too much effort in Go, creating a scalable codebase, implementing testing solutions along with monitoring and application shipping require all sorts of IT experiences besides practical knowledge about Go.

Another fact that we should consider here is that we are living in 2018, when the stock market is filled with Cryptocoins. Without going into too much detail here, we have to notice that Golang became one of the most dominant languages for blockchain developers.

Since blockchain is the buzzword of the century, you are in a better position to hire Go devs, if your product is related to this topic.

blockchain

The business perspective
Business in learning Go and Node.JS

At this point, we are aware of the fact that Go has the potential to grow in the same way Node.JS did.
This means that a lot of experienced Golang developers are going to be needed on the labour market. Like in every industry, the more experience and knowledge you offer, the more money you are going to earn.

Assuming that the language is going to gain popularity in the same way it has been doing for the last 2 years, we can say that getting into it as soon as possible and earning production experiences is definitely going to be worth the time invested.

Just like in every business, improving ourselves and our businesses should be dependent on the returned value of the time and effort invested.
For example, is it worth investing time in learning JavaScript?
Yes, it is.
Since JS is the most used language ever, there is a huge chance, that you or your company is going to encounter problems that have to be resolved with JavaScript. But is it worth learning Visual Basic for example?

No, I think the value you are getting back from your time investment learning Visual Basic is most likely going to be less than the value you could get by learning another language.

visual basic

So why shouldn’t you just get into Node.JS and be happy?

The more extensive knowledge and experience you can offer, the better. Think about this:
Currently, there are more companies doing Node.JS than any other languages/tools. Node.JS is in a dominant position and learning it will definitely result in projects.
But despite the huge demand, there is a growing number of companies and developers trying to compete for these projects / jobs. It seems like supply is finally catching up.

Statistically speaking, getting into a language at the time when it is not widely used is more valuable than getting into it later.
This is due to the fact that while demand is growing quickly, supply will most likely be slower to catch up. Because of the increasing demand, companies will have to pay more for developers who are experienced in the given language/tool.

At the peak of demand, developers and companies who have more experience and knowledge in the given technology are going to do really well from a business perspective.

Therefore this is probably the perfect time to get into Golang. The demand is statistically proven to increase every year and the labour market is almost empty. This means more money, more projects, more business opportunities for companies and individuals with extensive Golang knowledge.

oh wow

Experiences
Why am I sure about this?

As you might recall I started this article with the fact that I have been working with both languages for quite some time. I consider myself getting into Node.JS in its “Golden Age”.

By “Golden Age” I mean a time period in which selling anything related to the given technology is super easy.

I was working for a small company doing contract jobs for other companies (mostly startups). We encountered projects which were only written in Node.JS because of Node.JS being a buzzword at that time. I learned a lot about choosing the right tool for the right job.
The point I’m trying to make here is that we were drowning in jobs. Most of our clients didn’t really know why they needed Node.JS at all. But it did not matter, we were software engineers for hire, the demand said Node.JS, so as a good supplier we acted on this and provided quality Node.JS solutions.

I left the company to join the development of a product which was still in alpha phase, but it was written in Golang 1.3, and they needed someone to push it into production phase. I was interested in Go at that time, but I was inexperienced.

At that time, more and more companies were getting into Go, but the community behind it was just a fracture of itself compared to nowadays. Google was kiiiiinda behind it, but I wasn’t sure about the future of the language.

At the end of the previous year, I decided to become a freelancer and create my own business. This meant that I had to find clients.
Lucky for me, Golang did knock on the door of hype heaven, and got approved.

This meant that I had a lot of different options when I tried to get my first client. After finally choosing a company that I really liked, I have sent them my CV.

As it was my first job as a freelancer, they wanted me to prove myself, and solve a coding challenge for them, which was a basic example of an issue that is harder to solve in Golang. Thanks to my previous production experience, I nailed this challange. I was happy, because this contract paid a lot more than my previous job.

Little did I know that there was no real competition for the contract. After I talked with the client about other candidates, it turned out that the job which was advertised in the following way:

  • Remote work possible
  • Really good money
  • Golang development
  • Devops mindset

only got 8 applicants.
8.
Half of them were unable to finish the coding challenge and the other 3 contractors were lacking production experience with Golang.
This meant that I won this deal not because I’m such a beast software engineer, but because of the emptiness of the labour market regarding Golang developers.

well okay

Meetups

I had the chance to visit Golang meetups in multiple countries this year. During these events, I had the opportunity to talk about this problem with other entrepreneurs and developers.

It turned out that it does not matter if you are from London or Munich or Budapest, your company is just going to be struggling with the hiring of Golang developers.

More and more companies are starting to be open for remote work just because of not being able to find anyone with Golang experience, and even if they do, they are not able to pay them enough.

Conclusion

After considering all these facts we can say that from a business perspective Golang is ready to step into its Golden Age.

This is a great time to get into Golang, because demand is ridiculously high. As for how long this is going to last, there is no clear answer. However, thinking about long term we can not walk away from the fact that Google is standing behind the language, which tells a lot about what kind of vision should we have when we are talking about Golang .

golden age

References

Statistical information from


Imre Racz

Written by Imre Racz, tech enthusiast. Check LinkedIn