I don’t know how many times I’ve developed or implemented some clever enhancement of an application or framework (e.g., Plone, Django, others) only to regret it later. Of course it always seems like a reasonable idea at the time, but the more repetitions of this pattern I experience, the more skeptical I am of fancy solutions (included many of my own published on this site) and add-ons that promise short-term feature additions but too often incur long-term maintenance costs that simply aren’t worth the benefits. Here’s how I’m thinking about it now:
- Don’t reverse engineer the system. By all means, read the code, just don’t try to outsmart it.
- If you can help it, don’t use methods or attributes marked as private (yes, I have a beef with Django’s
- Don’t use a third-party product for something you can do relatively easily without it. Stop and ask yourself if the coding you may save is worth the headache of maintaining the product through framework upgrades, etc.
- Keep an eye on framework developments. Watch the roadmap. Read the release notes! I’ve been pleasantly surprised a number of times to find out about new (or existing) features by re-reading documentation.
- Participate in the core community. Everybody benefits from improvements to the core framework. This is not to say that every good product should ultimately aim for inclusion in the framework, but with a strong group of core developers new features are subjected to critical analysis, rigorous testing and benefit from wide usage and long term support.