(Russ Cox was Tech Lead for Go Development @ Google)
Slides: https://pdos.csail.mit.edu/6.824/notes/gopattern.pdf
Video: https://youtu.be/IdCbMO0Ey9I
Prep:
Use the race detector, for development and even production.
Convert data state into code state when it makes programs clearer.
Convert mutexes into goroutines when it makes programs clearer.
Use additional goroutines to hold additional code state.
Use goroutines to let independent concerns run independently.
Consider the effect of slow goroutines.
Know why and when each communication will proceed.
Know why and when each goroutine will exit.
Type Ctrl-\ to kill a program and dump all its goroutine stacks.
Use the HTTP server’s /debug/pprof/goroutine to inspect live goroutine stacks.