The document discusses avoiding distributed monoliths by not coupling systems with binary dependencies like shared libraries and network clients. It recommends using contracts and protocols instead of shared libraries to allow for independence between services. Common examples of binary coupling that should be avoided are shared libraries for routing, discovery, logging etc. Coupling systems in this way leads to lost benefits like inability to use different languages, platforms or concurrency models for individual services.