1. KISS: Keep it simple stupid
2. DRY: Do not repeat yourself
3. YAGNIl: You ain't gonna need it.
For point one and point three, I really experienced a lot in the last 10 years. Most of the time, system is getting complicated just because of poor design, overdesign. Also the system was built a lot of extra nice features which never been used, it also makes simple application complicated.
4. Law of Demeter - Code components should only communicate with their direct relations (e.g. classes that they inherit from, objects that they contain, objects passed by argument, etc.) http://en.wikipedia.org/wiki/Law_of_Demeter