I came to Go from Python. Not because Go was trendy, and not because my job required it — I picked it up because a side project of mine kept running out of memory on a $5 VPS, and I was tired of paying more for what felt like a tooling problem.
The first week was rough. I kept reaching for things that don't exist: no list comprehensions, no dynamic typing, no magic methods. Go is visibly opinionated about simplicity, and at first that felt like restriction. Why do I have to handle this error right here? Why can't I just have a default argument?
By week three, something shifted. The error-handling ritual I'd found tedious started to feel useful. I could read a function signature and know exactly what could go wrong. I noticed how much Python code I'd written over the years that silently swallowed exceptions or made optimistic assumptions about return types.
The compiler is unforgiving in ways that turn out to be kind. Unused imports are a compile error. Unused variables are a compile error. The first time a dependency update didn't silently break something at runtime, I understood why.
Go is not the most expressive language. You write more lines for things that other languages do in one. But code I wrote six months ago is easier to read than code I wrote six months ago in Python — and I think the verbosity is a large part of why.
My honest summary after a year: Go is a language that trusts you less than Python does, and I've come to think that's a feature.
2 Comments
Leave a Comment
Comment submission is disabled in this demo.