tl;dr: Designing for maintainability and encouraging maintenance as part of the practice of developing and operating software systems helps us build an intimacy that supports rapid, confident response to failures.
NOTE: These are rough thoughts, a kernel of an idea.
A New Battery
I replaced the battery in my truck this morning. By all accounts, it should have been a relatively straightforward process and, for the most part, it was. Except that there wasn’t much room to squeeze a ratchet in between the side-mounted terminal and the fuse box to fully loosen the cables. And it took me 5 minutes to locate the appropriately-sized wrench to finish the work. Then, I learned I didn’t have a ratchet extension long enough to help me extract the bolt holding in the retainer clip. So I fashioned one from a screwdriver and vice grips.
Batteries last several years, so I don’t need do this work regularly. As a result, I double-check the process a few times before getting under way. If I were a mechanic, it’s likely I’m doing this sort of work often enough that I can start the work as soon as I’ve got a new battery. I bet I’ve also got the right tools and backups within arm’s length, too.
This anecdote is less about having the right equipment (though that helps) and more about having a familiarity with the environment in which I’m working and knowledge of available tools that might be useful as backups, including those that may be useful to create short-term makeshift solutions.
Accessibility, Design, and Frequency
Replacing the battery was made easier by the accessibility and design of the components. Aside from 2 safety-related guards, extracting and replacing the battery did not require a lot of preparation or the interference of other components. When I was ready, I was able to start the task at hand. Designing for maintainability means we can perform maintenance more regularly and with less friction. We can build and sustain momentum around maintenance as a practice. The frequency of our contact with a system, especially in the context of maintenance, enables us to be prepared to moved quickly and decisively.
Good design supports frequent maintenance and frequent maintenance either reinforces good design or informs better design.