Please, excuse the clickbait-y title. Here is a picture that will save you the 300 words that follow:
I can’t make you use Go over any other programming language, and I shouldn’t. It is immoral and highly subjective. After all, there are fantastic examples out in the world that indicate that if you wanted to, you could build a great product out of Bash scripts stitched together. Thus, take what I am saying below with a grain of salt. A lot of salt.
When people ask me why they should use Go over Rust, Java, Python, or any other programming language, I usually say that Go is an 80%-language.
It will never be as fast and memory-efficient as Rust, but it gets to 80% of its speed out of the box, requiring only 20% of the mental comprehension and developer effort to get there.
It will never conquer the enterprise world as Java once did in the early 2000s, but it is 80% there – lots of enterprise setups now run in containerized and orchestrated infrastructure where Go is king. It’s only a matter of time before the adoption goes a step higher up the stack.
Before Go, my favorite programming language for rapid prototyping was Python. To this day, I can draft a single Python file with my idea, add a few external packages and get my job done. But this is not sustainable in the long run. Managing dependency incompatibilities, deploying, and scaling Python code is difficult enough that it won’t justify the speed of putting things together.
Go is not as easy to bootstrap a new application the way one can with Python, due to the sheer amount of up-front code one needs to write, but it is 80% there out of the box. The standard library has most of the essential blocks, and a growing ecosystem of 3rd-party packages can help fill in the gaps. And the compilation speed – oh, the compilation speed- basically makes a compiled language have the same try-and-rerun feeling as a scripted one (Python, Ruby, PHP). It’s just a breeze to work with. Best of all, you get a single binary that you can just drop and run anywhere.
Convinced? Follow me on for more Go-related material in 2024 and onward.