1.Make sure your software does what the customer wants it to do.

2.Apply basic OO principles to add flexibility.

3.Strive for a maintainable, reusable design.