How to write software

  1. Write simple, composable code
  2. Tell don't ask
  3. Use high level abstractions only when needed