Hacker News new | ask | show | jobs
by magic-chicken 2754 days ago
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.