The key points are
- Don't let customers compromise on the quality of the software
- Write small, simple, readable code (even for the complex issues)
- Strive to provide only the necessary functionality (bang for the buck for both users and developers)
- Ensure that software works in a co-operative manner (with others resources of the system)
- Ensure that external functionality of a software can easily be mapped to the code (reduces maintenance or enhancement costs)