---
layout: blog_post
title: Design Patterns Overview, When to Use, When not to?
category: blog
---

What is it? Define?
What problem does it solve?
How does it solve the problem?
Visual overview? ERD of classes?
Tradeoffs and pitfalls?

Observer Pattern
Decorator Pattern
Factory Pattern
Singleton Pattern
Command Pattern
Adapter Pattern
Facade Pattern
Template Method Pattern
Iterator Pattern
Composite Pattern
State Pattern
Proxy Pattern
Compound Patterns


---
layout: blog_post
title: Design Patterns Overview, When to Use, When not to?
category: blog
---

What is it?
The Problem
The Solution
RL Examples?

Premature Optimization - You Aren't Gonna Need It - Shotgun Surgery
Dependency Hell
Spaghetti Code
programming by accident
WET - not DTY - copy pasting
Lava Flow

God Classes

God Methods/endless parameters, not adhering to SRP

Fear of Adding Classes	

Magic Numbers and Strings

Poltergeist Classes

Analysis Paralysis

Cargo cult programming - using patterns/methods without understanding why, increases complexity substantially

Every Fool His Own Tool - "Failing to use proper software development principles when creating tools to facilitate the software development process itself."

Golden Hammer/Silver Bullets - every shop/dev seems to have their own personal ones (mine used to be: ?)

Not Invented Here, or Reinventing the Wheel - rolling your own solution, because nerd? because excited? does not make it RIGHT

Tester Driven Development - "Software projects in which new requirements are specified in bug reports", I've seen this one rip projects apart and put into the red due to out of control QA

Design Patterns - for lols
http://www.yegor256.com/2016/02/03/design-patterns-and-anti-patterns.html
List of design patterns who themselves could be considered anti-patterns

http://sahandsaba.com/nine-anti-patterns-every-programmer-should-be-aware-of-with-examples.html#management-by-numbers is excellent
Add content to anti patterns post
Add content to anti patterns post
