People ask why I reach for Go on backend projects.
Here's the real reason: I got tired of fighting the environment before the project even started.
Node wants npm and a version manager. PHP wants a web server configured to serve it. Django wants Python, a virtualenv, pip, and then Django on top of all that. Every one of these is fine. But every one of them requires you to carry something extra on your laptop, on the server, in CI.
Go builds to a single binary. You compile it. You copy it somewhere. You run it. If you need to move it, you copy it again.
No runtime to install. No "which Python is active right now." No process manager watching a process manager. The binary runs on Linux, Mac, or Windows cross-compiled from one machine without touching the target machine's package manager.
The concurrency model is also genuinely simple once it settles in your brain. Goroutines are cheap. Channels make communication between them readable. I've handled a lot of concurrent traffic in Go without needing to really think about it.
This isn't "Go is better than everything." Node handles plenty of workloads well. Django gets you very far very fast if you know it. But if you've ever spent 45 minutes debugging why your server has the wrong Python version you'll appreciate a language where the deployment artifact is just a file.
For solo projects and small teams especially, that matters a lot more than I expected it to.
LinkedIn Post
Here's the real reason: I got tired of fighting the environment before the project even started.
Node wants npm and a version manager. PHP wants a web server configured to serve it. Django wants Python, a virtualenv, pip, and then Django on top of all that. Every one of these is fine. But every one of them requires you to carry something extra on your laptop, on the server, in CI.
Go builds to a single binary. You compile it. You copy it somewhere. You run it. If you need to move it, you copy it again.
No runtime to install. No "which Python is active right now." No process manager watching a process manager. The binary runs on Linux, Mac, or Windows cross-compiled from one machine without touching the target machine's package manager.
The concurrency model is also genuinely simple once it settles in your brain. Goroutines are cheap. Channels make communication between them readable. I've handled a lot of concurrent traffic in Go without needing to really think about it.
This isn't "Go is better than everything." Node handles plenty of workloads well. Django gets you very far very fast if you know it. But if you've ever spent 45 minutes debugging why your server has the wrong Python version you'll appreciate a language where the deployment artifact is just a file.
For solo projects and small teams especially, that matters a lot more than I expected it to.
LinkedIn Post