People were able to write concurrent Go code successfully for years
before the memory model was written. As it says right at the start of
the memory model reference: "If you must read the rest of this
document to understand the behavior of your program, you are being too
clever." Yes, you do have to understand channels and mutexes in order
to write concurrent code, but they are reasonably simple to understand
and to use correctly. In fact, I think people understand and use them
correctly without ever reading or understanding the details of the
memory model.
I'm glad that we do have a memory model, but I really don't think it's
necessary reading for the most Go programmers. The spec, on the other
hand, is intended to be readable and useful for all Go programmers.
Ian