[–] magic-chicken 7y 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.
1 comment
[ 3.1 ms ] story [ 15.0 ms ] thread- 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.