> You seem to be writing that a simple language is somehow harder to scale for large teams
I've worked on a large Scala program before, and because the team generally agreed not to let things get too crazy, it was very manageable. However, I've seen other programs in complex languages get out of hand.
There is a sweet spot in terms of language simplicity/complexity and usability. Make it too simplistic (like golang) and the low modeling ability and inexpressiveness of the language will result in shifting the complexity into the code and onto the programmer, there's no running away from it, it's just reality. IMO, languages like Java, C#, and Kotlin do a much better job at balancing features with modeling power and expressiveness, without sacrificing simplicity.
> Verbose (and consistent) is exactly what you want for large teams. What's error prone about it?
I've seen many instances where errors are ignored by mistake, e.g.:
a, err := foo()
if err != nil { ... }
b, err := bar()
// oops, error not handled and compiler doesn't complain
c, err := baz()
if err != nil { ... }
not to mention things like
defer file.Close() // Error not handled
and more insidious occurrences (e.g. when was the last time you handled the error for fmt.Println()?)
Consistent is good, verbose just for the sake of being verbose isn't. And honestly golang is not that consistent (e.g. the entire nil interface is not nil issue is just bizzare)
> Do you have an example project that has problematic build times in Go?
At my employer, we use a monorepo and build with bazel. Builds routinely take several minutes, and even more on "less powerful" machines (e.g. 4 cores). Linking time is abysmal, and we routinely end up with 50+MB binaries. It's closed source so I can't share them.