Wesley's Software Philosophy v1

‹ Airtable vs Google Spreadsheets | Using docker to replace all command line programs ›
  • 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.
Subscribe to All Posts - Wesley Tanaka