The Cooperative Code Base
I’ve never received a compliment for making something simple seem complex. I’ve never had a conversation that began “Hey John, I think you’re great, as evidenced by the fact that I never know how the $@%# to begin attempting to use your code!” That would, of course, be absurd. Yet, for the longest time, I rarely thought about my fellow engineers when designing my solutions that they would, inevitably, one day maintain — or refactor.
The reason wasn’t because the answer was especially intuitive to me; indeed, if it had been at the time, I’d have likely written something intentionally unintuitive in order to exercise my “programming chops” in what I perceived to be a “healthy creative process.” The real reason was because building a cooperative code base was not something I cared about.
An appropriately configurable code base is a cooperative code base: one in which engineers stop asking themselves “what should I build?”, and start asking themselves “what should I configure?” It’s a code base with a rich domain model that intuitively speaks about the company’s business plan. It provides obvious, reproducible interactions between objects as compositions of smaller, valuable features that might one day be used to compose other objects. Simply put, a cooperative code base empowers it’s engineers, rather than restraining them. So the question is, are you empowered by your code base? Or are you its hostage?