I was 3 paragraphs deep into writing a comment to Jay's earlier post, Starting to come out of my funk, when I thought it might be useful to just make my comment a post.
A couple of the comments to Jay's post about design patterns are similar to the flame-type posts you get when people start to argue VB.NET vs. C#, Stored Procedures vs. Dynamic SQL, etc. These types of comments concern me, because they start getting less about the facts and more about someone's religious-like preference or bad experience that causes them to get angry. I normally stay away from commenting on those posts, because by doing so you risk the chance of having your mamma being mentioned a few times.
I encourage you to read all the comments about Design Patterns on Jay's post, but Don's comment pretty much says it all with respect to Design Patterns:
I really don't need to expand on this as it pretty much says it all, but I will, because I have those 3 to 4 paragraphs sitting in notepad that seem such a waste to delete :) Most of it is in response to comments in Jay's post, so read those for more context.
I think it really is that simple and nobody should look at the use of design patterns as some measure of programming skill. However, totally writing them off as useless does seem a bit ignorant / arrogant.
But as I mentioned in a previous post, Design Patterns and Agile Software Development, design patterns are a solution to a real problem. If you don't run across a problem that a design pattern solves while coding, there is no reason to use a design pattern. Not all applications will or should use them.
And although I think you can learn a lot from the GoF book and others, I have personally found that the best way to learn about design patterns (and best practices in general) is to poke around some of the open-source code written by people who have a wealth of experience. If I had to pick one open-source solution that immediately comes to mind, the Enterprise Library source code is teeming with design patterns.
And, for a book, I haven't read it, but the Head First Design Patterns book has received a lot of good reviews and I believe has won a few awards. Another book that is just a good all around text on OOP, Patterns, and Agile Development is Applying UML and Patterns by Craig Larman (3rd Edition).
Like Jay, I recognize my weaknesses and strive to learn something new every day. Eric Sink said it best with his article on Career Calculus and constant learning.