Design Patterns versus Design Principles

Tinou Bao and I met while working on a project a few years back. During that time I found him to be one of the best developers I had, and still have, ever met. Anyway, Tinou has an interesting post on his weblog titled Design Patterns versus Design Principles and I thought I'd cover it here.
In the article he is frustrated at the lack of real understanding job candidates have about Design Principles even though they state on resumes that they have experience using Design Patterns. Tinou writes:
Most are able to give me some examples – singleton, factory, etc. – but ideally I would like them to go beyond citing actual design patterns and actually discuss the rationale behind the patterns. In some ways design patterns mask critical thinking. Software engineers know about them and know how to use them, but a good portion – dare I say the majority – don't understand their evolution. In other words, they can answer, give me some examples of design patterns, but are stumped when asked what are some principles of good object-oriented design.
This is what I'm looking for (courtesy cilu/codeguru.com)
Open Close Principle (OCP)
Liskov Substitution Principle (LSP)
Design by Contract
Dependency Inversion Principle (DIP)
Law of Demeter (LoD)
Interface Segrgation Principle (ISP)
Reuse/Release Equivalency Principle (REP)
The Common Reuse Principle (CRP)
Common Closure Principle (CCP)
Acyclic Dependencies Principles (ADP)
Stable Dependencies Principle (SDP)
Stable abstractions Principle (SAP)
The folks over at Object Mentor Inc. have provide a pretty good paper on this subject that is easy to read. I say that because the Geek Factor is hitting the top of the scale with this subject. Kidding aside, it is a good idea for developers to know these things because in many cases they are probably following the principles but haven't been given a formal introduction to them.
December 8th, 2005 at 10:41 am
I agree with all.
October 14th, 2010 at 12:20 am
I am one of those who knows a lot about design patterns, but never knew that there is something called “design principles”. Used some of them (especially LoD) but it is a big help to have them bundled at one place – this is very useful.