I was reading the 'Zen of Python' from Tim Peters, which includes:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
And that got me thinking about the (almost ) 10 Commandments I normally follow in software development.
1. Thou shalt not disrupt the legacy system.
2. Thou shalt avoid massive overhauls. Honor incremental partial solutions instead.
3. Thou shalt worship configuration over customization.
4. Thou shalt not re-invent the wheel.
5. Thou shalt not fix what is not broken.
6. Thou shalt intercept or adapt rather than re-write.
7. Thou shalt prefer simple recovery over complex prevention.
8. Thou shalt avoid gratuitously complex standards.
9. Thou shalt realize that it's a people coordination problem.
It's commandments 1 and 2 that have me presently concerned. From my perspective, the legacy systems are becoming boat anchors that are keeping us from making progress with our marketing/commerce system, and our content systems have gotten so large that they are the new legacy systems -- replacing even a part of it feels like a massive overhaul.