Skip to content

Instantly share code, notes, and snippets.

@wingedrhino
Last active December 22, 2018 17:28
Show Gist options
  • Save wingedrhino/721b335f3e61784c84735735f6cf439e to your computer and use it in GitHub Desktop.
Save wingedrhino/721b335f3e61784c84735735f6cf439e to your computer and use it in GitHub Desktop.

What Makes a Good Architecture

  • Performance should linearly increase with added nodes and no extra effort. If the number of people required to maintain a system doubles with doubled capacity, you're doing it wrong.

  • Errors shouldn't cause growing data smell and should be quick to recover from.

  • The lesser locks there are in the system, the better it is.

  • Don't depend on something that wouldn't scale or keep up with the rest of the application.

  • Non-blocking IO saves money.

  • BDD tests are great for APIs. Unit tests are great for business logic and algorithms.

  • If you aren't using too much resources, it is okay to spend more to supercharge development speed. Heroku FTW!

  • Choose a lesser alternative, if it means quicker delivery but ease of porting later. Create thy abstractions!

  • Premature optimization is bad; sloppiness is pure evil.

  • Mixing and matching is good, as long as you know there are enough folks to maintain stuff. The right tools for the right job, but you also need the right team for the right tools.

  • Before all else, think how you can optimize purely in terms of time and space complexity. This is especially true for database operations.

  • Automate Plenty; human intervention is expensive and unreliable.

  • Readable code + Dashboards > Documentation, but the three are very good friends.

  • Black boxes don't exist in real life.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment