| Assuming you are talking about software design: - Make it work, then make it simple, then make it fast. In that order. - Don't do at runtime what you can do at compile time. - You are not going to need it. - Encapsulate your dependencies. - Push code complexity / logic to the edges (aka Tell, don't ask) - Build only your core business software components. Use 3rd party software or open source for the rest. - If at least one part of your system is not redundant, your system is not redundant. - The persistance mechanism of your application is an implementation detail. - Stateful systems are harder to debug than stateless systems. - Almost always develop a business logic core for your application that is independant from it's distribution mechanism. - When you make an API public, make everything you can to make the changes to it backward compatible. Also, use semantic versioning. - If you are developing a distributed system, accept from the start that the other services on which you rely won't be availaible 100% of the time. - Fail fast, fail often. - Caching is hard to get right. Use it as a last resort. If you were talking about visual design : - Design for mobile first. Porting it to desktop will be easy afterwards. - Prefer text over images. The more explicit the better. - Read about typography to choose a good combination of font, line height, line width and letter spacing. - Don't use colors to give meaning to something. Use shapes and colors instead to help people with color blindess. - On a page, show all the information the user needs to make a decision or an action. No more, no less. - Optimize actions that are performed often or that needs to happen fast. The less input the user needs to provide the better. - Make navigating between popular sections of the site easy. It should not take more than one or 2 actions to go anywhere on your site / application. - Learn about reading "hot spots" to decide how to arrange your content. - Read about colors and how people of different cultures perceive them. - Be consistent. |