Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.

  • Love this website, it helped me out so much during my Java days figuring out how I should be trying to structure my code. Obviously, there’s a balance as to how much abstraction to include, but things like the Observer pattern, Strategy pattern and Adapter pattern are super super practical across many languages.

    These days in TypeScript-land I don’t tend to use too many design patterns, I try to be as functional as practical, but I owe a lot of my foundations to this website.