A while back I was asked how much I knew about "MVC" or sometimes called "MVP". I had to answer honestly and say that I wasn't sure what they were talking about and I felt pretty bad about it. So I started digging around (read googling) and still didn't find anything concrete because I didn't know it was a design pattern. Yes, I can admit it.
Well, after reading through chapter 2 of Dissecting a C# Application: Inside SharpDevelop, I finally realized what the heck MVC was. It is the Model-View-Controller pattern. I came to realize I know a lot about it and use it in any application of decent size. I might be short selling the actually definition but it just describes the basic 3-tier architecture: presentation layer, a business layer, and data layer. Those layers are something I really try and keep separate from each other and is one of the hardest hit areas for me when refactoring code. Its also a pet peeve of mine for the presentation layer to have any knowledge of the business layer; other than getting the information it needs to display on the screen.
I posted about Design Patterns before and have even started reading Head First book on Design Patterns (very good btw). Its all too funny that the more read I and understand design patterns the more I see areas of my code where I've used them without knowing it.
More than knowing them so I can use them - I need to know them so I can "speak in design patterns". This isn't just to impress my friends but I can see real value and having that ability. Its like a common ground or an assumed knowledge so that less time can be spent on the explanation of a potential solution and more time fixing the issue or code smell.
Giddy Up!