5 Reasons That Makes Golang a Good First/Startup Language
I wish Go existed when I first started learning programming
by Percy Bolmér, August 12, 2021
Recently I have been seeing the same question appearing over and over in the Go subreddit.
Is Golang a good first language to learn? — New Aspiring Developer
We have posts like these occurring frequently, along with questions if Go is good for a certain type of project
- Go as first language, for web development
- As a beginner would it be better for me to start
- Is golang good choice for an api of a medium sized project?
I decided that I want to raise my point of view on the matter so I’ve collected the 5 things I believe are the top reasons to learn and use Go.
Go is a fast-growing language in a wide range of areas, as shown by the Go Developer Survey 2020 Results. Jetbrains also recently released The State of Go, which also brings some interesting numbers about usage.
1,1 million professional Go developers who use Go as a primary language — Ekaterina Zharova
This amount is not personal usage but companies leveraging Go in their work. If you’ve been around the Go community for a while you could easily see this reflected by the number of job postings searching for Go developers.
Looking at the Reddit community it has been booming with new developers. Since 2020 there are almost 60k new subscribers.
Not only is the community exploding, but I’ve also encountered a super friendly atmosphere. People are helpful and junior developers with fresh ideas are not met with pitchforks and torches.
I can safely say, this was not my experience in the Java world. I remember being laughed at for some ideas because that was simply not how you did things. I have not seen that happen yet in the Go community, but that may also have a relationship to my next point
When I landed my first gig as a programmer I had to learn Java. Java is a massive language that has been around for a long time, with giant frameworks like Maven and Spring.
I never got comfortable with Java, sure I learned the Object-oriented programming concepts. But everything I built felt like I was building a monolith, no matter how small the project. The main reason for this was probably due to the number of libraries out there, the number of different ways to handle the same problem.
All that might sound like a good thing, possibilities to handle problems in different ways. But for me, it was more of a blocker, as an insecure junior developer I was afraid of making bad decisions, everyone pointing in different directions.
Go is however super small, you can read the whole language specification in an hour. All though if you’re not familiar with the language I doubt it will be a good read.
Go is efficient, scalable, and productive — Rob Pike
How does that compare to Java for instance you ask? Well you tell me, here is the java specification, a small PDF of 844 pages. And that’s only the language, then there is the also JVM specification.
Go offers a simple syntax, it is easy to read and follow the code. Go also has a very strict compiler that helps you. I know it’s not like the Rust compiler, but it is pretty strict. Go also covers many of the known programming concepts, it just does it more easily.
My experience in Go is that it is hard to screw up, you have type safety, compiler checks, statically typing. There are so many safeguards that are nice for new developers and even seniors. Yes, seniors also screw up.
In fact, if we follow the discussions on the Reddit threads you will see comments saying that Go is too easy and that developers will lose or miss out on important knowledge. That is pretty funny in my eyes, It’s like telling a person wanting to learn how to drive a car that they should start learning on the highway because that’s the hardest part. I believe Go is a solid language, to begin with, and to stick with, but I don’t see any issues with moving from Go to other languages.
One of the things that I fell in love with is the standard library in Go. I know many other people have praised the standard library before, but I don’t think we can get enough. The
stdlib is usually enough to complete most of my tasks.
In my 6 years of developing full-time with Go, there are rarely times where I use frameworks. Of course, you should not reinvent the wheel and rebuild everything. You should use all the great open-source libraries out there. But what I’m saying is that most tasks are usually pretty fast to manage using only the standard library without relying on big frameworks.
The best example is the net/http library. I know many people use famous web frameworks for developing the backend web services in Go, but I’ve rarely needed to do that. I think the standard library offers a more than enough and easy-to-use way to set up an HTTP server.
The only reason why I’ve once switched from the
net/http library was in a highly performant project where I needed an optimized HTTP router.
When I decided to start learning to Go it was still really new, and there weren’t that many companies using it in production. It is always scary with new things, and I didn’t know yet if the language would take it. Many I talked to claimed that it was just another hyped-up language that would be dropped soon.
I remember thinking that if it is backed by Google, it has to be somewhat good.
Guess what, the hype train chewed on and seized the hearts of many developers who jumped onboard. With the number of companies that are now openly adopting Go and building software with it, Id argues it is safe to say that Go is here to stay.
Some serious big-timers are using Go nowadays. You can find a full list here.
Here is a draft of the big companies listed
There are many more giant firms using Go, but I do think you get the point.
Stackoverflow performs a yearly survey where they ask developers a bunch of questions. One of those topics is what language pays the most, and Go is ranked #9 in the world according to the 2021 survey. The survey was based on the response from 80.000 developers in May.
The yearly average for Go developers was calculated to be $75,669.
Now I’m not saying the money should make you decide on the language to use, but I believe that it is a sign of companies being willing to pay Go developers.
I do enjoy seeing the advancement Go is doing in the software universe.
Hopefully, I manage to convince at least one person to jump aboard the Go journey.
What is your opinion about the learning path to take?
Are you a fellow Gopher evangelist?
Feel free to reach out, either in the comments or any other of my social media listed below.
If you are interested in learning more about Go be sure to visit the amazing online tour. I also write a lot about Go, be sure to follow me.
If you enjoyed my writing, please support future articles by buying me an Coffee