Next: Organization Overview, Previous: The Origins of Go, Up: Introduction to Go [Index]
Explosion of Complexity
All programming languages reflect the programming philosophy of their creators, which often includes a significant component of reaction to the perceived shortcomings of earlier languages. The Go project was borne of frustration with several software systems at Google that were suffering from an explosion of complexity. (This problem is by no means unique to Google.)
As Rob Pike put it, “complexity is multiplicative”:
With constant pressure to add features and options and configurations, and to ship code quickly, it’s easy to neglect simplicity, even though in the long run simplicity is the key to good software.
Simplicity and Conceptual Integrity
Simplicity requires more work at the beginning of a project to reduce an idea to its essence and more discipline over the lifetime of a project to distinguish good changes from bad or pernicious ones. With sufficient effort,
Only through simplicity of design can a system remain stable, secure, and coherent as it grows.