What's a Design Pattern?

Whether you've been a developer for years, or are just getting started, chances are good you've seen the words "design pattern" before. But what is a "design pattern" anyway?

Software development (and most things in life) is just a series of trials and errors. We get problems, we think of solutions, we implement them. Rinse and repeat. Overtime we find patterns, common solutions to problems, and some we like more than others. These common solutions are design patterns.

It's just someone saying "hey, I have this problem all the time, and every time I solve it like this and I kind of like it". Then other people say "oh yeah, I kind of like that too, I'm going to solve that kind of problem in the same way." Boom, that's how a design pattern is born.

Make sense? There are lots of design patterns out there, good and bad. The purpose of learning about design patterns is that slowly you'll build this mental database of all the design patterns you like and when they're useful. Then as you stumble upon problems you'll be able to pull a pattern out of your mental database and apply it. The more familiar you are with each pattern and the more patterns you understand, the easier it will be to tackle a problem.

The Definitive List of Design Patterns

Just kidding. Like I said before, there are an infinite number of design patterns, because anyone can make one up. Some are framework or language specific. So something that works in JavaScript might not work in Ruby, or something that works great in React might be a super pain in Angular. There are a whole lot of tried and true design patterns though, and these are some useful ones in web development that should help you get started.

  • The Observer
  • The Singleton
  • The Factory Method
  • The Builder
  • The Decorator
  • The Adapter

Over time we will go over many of these different design patterns, learn what they are, when they might be useful as a web developer, and how to implement them. By the end, you'll be an expert at design patterns and be able to tackle any problem you face that much easier.