Design Patterns

Tried and true software design patterns (and principles and tactics) that I’ve encountered, used, or want to apply.

Warning: This section is under construction

I don’t have a traditional background in computer science, so I missed out on a lot of the foundational theory that is taught in school. 3+ years into my career, and I’m still learning a ton and playing catch up.


Someone before me likely encountered most of the problems that I’ve faced thus far, and has architectured solutions for them, or created a set of principles to help guide any future developers in the same problem space.

Some topics

  • Separation of concerns
  • Single responsibility principle
  • Service oriented architecture
  • Testing
  • At least once delivery
  • Tightly vs Loosely coupled
  • Single point of failure
  • Fault tolerance
  • Idempotency
  • Distributed systems
    • Consensus
  • Eventual consistency
  • Event sourcing
  • Logging

Want to learn