Earlier quoted context omitted.
It's not that generics are hard to grok, it's that they get used in a hard to grok way. Wrapping your head around such things gets more and more hard as the app complexity grows. The base point is that languages like Go let you think of the program at runtime, only. Types are a runtime concept, everything is a runtime concept. Structuring APIs to use compile time safety requires a whole other kind of thinking, one wh…
Right, don't have to think about compile time. Instead they sometimes have to think about post-compile time[1], i.e. code generation . Now you don't have to think about those weird bracketed capital letters. Just take care to check where you have comments [2] that happens to include directives to some external tool. With how Go programming seems to work for some people, I can perfectly well imagine a system with comm…
And of course, the loss of static checking means that one has to write more tests for mundane things. But again, designing tests requires "runtime thinking", designing statically checked APIs requires "compiletime thinking".