I've been building AI applications in Go since August 2024 — before "vibe coding" had a name. After 18 months of AI-assisted development on a Fortune 100 project, the argument for Go isn't performance or deployment anymore. It's the compiler.
When the machine writes 90% of the code, Go gives you five layers between the AI and production: compiler, type system, explicit errors, enforced simplicity, and the human. JavaScript gives you one: the human. And good luck.
The machine proposed a wrapper type last Tuesday. `go build` rejected it on line 47. I said five words: "why do we keep both around?" The wrapper died. In JavaScript, it would have compiled (nothing compiles in JavaScript), passed all tests, shipped to production, and coexisted with the original type for six months until someone proposed a `UnifiedStoreInterface` to bridge the gap.
TypeScript helps — but it's a type system that asks permission. `// @ts-ignore` exists. `strict: false` exists. `any` exists. Go has one mode. There is no `go build --please-actually-check-the-types`.
The machine can generate complexity faster than it can recognise it's unnecessary. Go is the language where the human can still recognise it.
adocomplete•1h ago
I find LLM generated Go code to be much better than other languages and love building Go apps with AI.
riclib•1h ago
When the machine writes 90% of the code, Go gives you five layers between the AI and production: compiler, type system, explicit errors, enforced simplicity, and the human. JavaScript gives you one: the human. And good luck.
The machine proposed a wrapper type last Tuesday. `go build` rejected it on line 47. I said five words: "why do we keep both around?" The wrapper died. In JavaScript, it would have compiled (nothing compiles in JavaScript), passed all tests, shipped to production, and coexisted with the original type for six months until someone proposed a `UnifiedStoreInterface` to bridge the gap.
TypeScript helps — but it's a type system that asks permission. `// @ts-ignore` exists. `strict: false` exists. `any` exists. Go has one mode. There is no `go build --please-actually-check-the-types`.
The machine can generate complexity faster than it can recognise it's unnecessary. Go is the language where the human can still recognise it.