Submitted by wtanaka on Wed, 2018-03-21 16:01 (
- Immutability and referential transparency enable simplicity. Achieve them when possible.
- Shared state increases complexity and reduces parallelism. Avoid it.
- Fail as fast as possible. The earlier you detect buggy code or invalid data, the less complicated the fix.
- Use as much static analysis as you can, including linting and static type checking.
- Prevent bad data from propagating forward through your software, instead of writing unboundedly complex software to handle it.
- No hardware will last forever. Thus, hosting providers treat your servers like cattle, not pets. You should too.
- If your software has faults when the hardware suddenly fails, your software is buggy.
- Idempotence is the simplest workaround to distributed systems being unreliable. Use it.
- Every change you make to code should be ready to go out to production.