Large codebases need not be tragedies of the commons so riddled with complexity and technical debt, but so many are. How does that happen? By what mechanisms and pathologies do a large number of locally reasonable decisions by intelligent authors add up to unmaintainable software? How can it be that the end result of everyone doing everything right is a system “too dangerous to touch” that can’t be modified without likely breaking something?
I’ve written that software, I’ve maintained that software and brought it back from the brink, and I’ve trained others in what is required to avoid trouble. I’ll share what practices work, and why and how they do. I’ll dive into the designs of classes, functions, modules, and packages. I’ll evaluate the tradeoffs of global state and other dark magic. I’ll even dig into and get personal about naming.
The first obligation of code is to run correctly. The second obligation of code usually is to run efficiently. The third obligation of code is to play well with other code and other programmers. Come learn how to write code that makes friends without sacrificing function or performance!