Modern software development is an endeavor that requires creativity, science, math, artistry, communication, strategy, and collaboration with colleagues across the globe. The sheer combinatorics of those requirements can seem overwhelming at times. The solution, just as we've done with design patterns for the code and architecture, is the establishment and use of patterns for human and machine communication. In this talk, we'll briefly explore the methods, modes and challenges of collaboration over the last several millennia before turning our focus towards solutions successfully employed in the last several years, including open source, social coding on GitHub, automated testing, CI, and CD.