Dieter Rams' principles of good design applied to software engineering
Rebuild old software using new technology. Build new software using old and stable technology.
Strive to bring something new into the world, even when building a clone. Observe the users for inspiration. Try to anticipate them: what will they really need next?