You know people who try to be everything to everyone? It doesn't matter whether their intent is selfish or selfless. The effect is largely the same: They're too scattered to rely on for the long haul. It's also true of software, it seems.
In tonight's case, I'm talking about a "framework" for which the user supplies specifications and a data source, then punches the magic button that builds web pages. The problem is that the under-the-hood workings make it a three-aspirin headache to modify the code once it's been generated--often, the only option is to start from scratch. And if that framework ever needs to be upgraded? There's absolutely no guarantee that the modifications will survive that. (And, frankly, the upgrade will completely blow them away only if you're lucky. In the worst case scenario, the mix of new code and old mangled customizations could bring the entire thing crashing down.)
This is mainly whining on my part, although I can honestly say that I could--and should--have rewritten the functionality for these very simple forms from scratch and saved oodles of time. But the take-away is that it's better to have a tool that's written for something close to your purpose and is built with the assumption that it will need to change. Just like your needs.
Thoughts on computers, companies, and the equally puzzling humans who interact with them