"Obey the principles without being bound by them."
Do you have some guiding principles you use when designing a new feature or when implementing a new requirement? I do. And you should too. I put them to paper a few years ago while we were undergoing a hiring binge and I wanted to make sure our entire team was on the same page with regard to a few core concepts. These are the guidelines I use when evaluating my own work, before presenting it to someone else. When there's a fork in the proverbial road I use these design principles, in the order listed, to help guide my decision.
- Simplicity over complexity
- Willing to sacrifice flexibility for simplicity and maintainability
- Scalability and performance
Disagree? Would you order them differently? Have your own principles? Let's hear it.