1. Keep it simple. As in everything in life there are many ways to solve the same problem, but not like in life, in programming it is better to choose the simplest solution. The benefits of that are: code maintainability, easy to explain to others, easy to understand what you did with your code months ago.
2. Use design patterns. Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.