I absolutely agree with all Rob Pike says. But in practice the problem is still the trade off. How limited a language should be ? what are the features a language should absolutely have to make the life of the developer easy yet still give him some room to express himself the way he wants? I think that Go failed if one considers that trade off. Often with Go, a developer ends up doing the job of the compiler, because its flat type system doesn&#x27;t allow a certain degree of expressiveness ( or worse, forces the developer to use reflection , i.e. putting aside the type system all together and using a &quot;generic&quot; &#x27;interface {}&#x27; type).<p>While C++ is something extreme in term of complexity , the other extreme, Go, is problematic as well. I&#x27;ve yet to find a language that has a good balance between the 2. But Go certainly showed that the tooling is as important as the language itself, and it&#x27;s a great part of its success.<p>&quot;Philosophically&quot; , no question, I agree with Rob Pike. On practice, things are a bit more nuanced.