Yesterday, I had a chat with Drew McLellan for the Smashing Podcast (the episode won’t come out for a few weeks).
They absolutely make some things faster and easier. But they also introduce a delicate house of cards that needs to be constantly maintained.
And so, I really enjoyed Jeff Kaufman’s article on Designing Low Upkeep Software…
It’s common for me to get excited about a personal project, put a bunch of time into it, and then lose interest. As much as possible, I want these projects to continue working; upkeep isn’t fun. What does designing for minimum maintenance look like?
The biggest piece is minimizing your dependencies, and limiting them to ones that value backwards compatibility.
One of the more interesting approaches Jeff uses, and one I’ve done myself for some personal projects, is to store data as flat files.
Store data on the file system, including for caching. It’s not as elegant as a proper database, but it doesn’t require an additional process or dependency. Debugging and backup are very simple, because everything is visible.
I’d recommend reading the whole thing. It’s quite good, and a fast read!