Simplicity:
Use only those third-party and custom modules that are necessary
Use as much from core Drupal as possible (but only what you need)
Abstraction:
Reuse generic components whenever possible; avoid one-off custom components
Find other homes for content that should be separate from main site
Only public content on public site
Sustainability:
Don't set yourself up for ensured failure down the road!
Use only well-supported modules with good history
Use preferred methods of extending Drupal, not hacks and kludges