The primary goals are should be simple and easily achievable.
- Simplify maintenance.
- Optimize future functionality expansion.
- Make different pieces of the code reusable, i.e. write once, use many time. This is the base of the above two goals.
- Minimize potential problems from admins/users, by isolating the customer from the core logic via configuration files.
- Make it easier for whoever inherits the code to easily do their job.
- When referring to a product please understand project, web site, application, script, whichever suites your needs at the moment.