As a web developer, I learnt how to use NodeJS for my apps' back-end. But in 2025, I decided to learn Go, and I will detail in this post why.
Summary:
- Go is readable
- Go has a good std
- Go's interfaces are powerful
- Performance
- Concurrency (goroutines)
- Small package ecosystem
Go is readable
Go is verbose, that implies that you can read your code easily after a few months or your team could understand it faster.
gofmt
formats our code at each saving, so our code follows the Go spacing, "factoring" conventions... So there is only one way to write code.
"Go's boringness"
Go is boring because the developers behind it wanted to make backward compatibility for the Go's programs. They don't want to break all the Go programs with a breaking change at some point. According to the video below, "Go 2 will never happen", because "Compatibility is more valuable than any break with the past" (or just at Google, they don't want to refactor their entire codebase 👀).
Furthermore, the boringness of a Go programs is that there's not a lot of features in Go, so there is, in a lot of cases, only one way to perform an action.
This is a plus for the understanding of the piece of software that you are debugging, for example.
Good std
Go's std (standard lib) permits you to build fast projects. It includes, an HTTP module for building web servers, a templating library that will permit you to inject data into HTML pages, a database module.
But sometimes, you need to install some dependencies because the std isn't the right thing you need.
For example, you may need to install gorilla/mux to have a router supporting urls with params (I'm talking about "/posts/:id" urls) or you might need a driver to interact with a database (if you want to interact with a SQLite db, you need mattn/go-sqlite3).
Go's interfaces are powerful
I made a post about this:
Small Go interfaces example: proof of identity cards
Pascal Lleonart ・ Jan 11
Performance
Go is a compiled language, so by definition at runtime it performs better than JS or Python.
Furthermore, Go "generally has lower memory usage due to its efficient garbage collector and lower runtime overhead" "Go vs Node.js : Which is Faster and More Efficient?", by Sandeep
⚔️ Rust vs Go vs Bun vs Node.js: The Ultimate 2024 Performance Showdown 🚀
Hamza Khan ・ Oct 5 '24
According to this article, Rust is "better" than Go, but the advantage of Go is that Rust is difficult to learn and Go is easier for a developer coming from NodeJS.
Concurrency (goroutines)
The goroutines are lightweight compared to traditional threads. They can be executed simultaneously (on multiple cores) or in parallel, it depends on your system resources. This isn't possible by default with NodeJS.
Another advantage of goroutines over promises is that Go has a secure way to permit communication between goroutines, called channels.
Some resources about goroutines:
- https://www.geeksforgeeks.org/golang-goroutine-vs-thread/
- https://banhawy.medium.com/goroutines-in-go-vs-promises-in-node-js-a-comparison-of-concurrency-models-a6c0c816fc4f
Small package ecosystem
This point could be a con for some people coming from NodeJS, but in fact it may be benefit: you can't fall into the "problem? install to solve it" cycle.
In my opinion, the fewer dependencies you have, the strongest is your app because there is less code maintained by external devs. You'll have to update your project less often because of a breaking change in a new version of a dependency.
Furthermore, there isn't a new framework each day that everyone have to try (I'm not aiming at anyone, just follow my gaze ;) ).
The second main con about dependency ecosystem is that there is no Go equivalent for meta frameworks for Adonisjs.
This kind of framework is useful for monolithic apps. But the Go philosophy is developing micro-services, which don't require complex frameworks because the stdlib is sufficient for a small app.
Conclusion
So Go has its pros and cons, it is a really good tool that you could try in 2025. It provides a new way to think about software infrastructure (OOP, interfaces, micro-services, ...). Go's performance is pretty good, compared to Python/NodeJS, and it's easier to learn than Rust.
Top comments (0)