Take this all with a grain of salt, I’m just a little frustrated.
I received a glimmer of hope today. We were interviewing a candidate for a senior developer role today and he was able to speak knowledgeably and confidently about design patterns. I don’t know what everyone else’s experience is, but finding developers that are strong in Object Oriented Programming concepts and conversant with Design Patterns has been extremely rare for me.
I don’t think this is just a lacking in the .Net community. I’ve both interviewed and graded code submissions from Java developers, too. I’ve observed just as much ignorance of Object Oriented Programming concepts and Design Patterns from them as well. I do think it might be worse with .Net because of the widespread VB6 heritage and what always appeared as indifference to OOP from Microsoft prior to .Net. You could technically use some OO concepts with VB6, but it was often more effort than it was really worth (trust me I know). Even today I would guess that most .Net applications are largely procedural code. I know that almost every legacy .Net code I’ve worked with has been almost exclusively procedural in structure. Being procedural doesn’t automatically mean that it’s bad code — but it usually is.
Personally, I think design patterns should be a basic skill for all but entry level developers. I don’t really understand why after 10+ years of literature and hype that design patterns are still considered esoteric knowledge reserved for ivory tower, arm-waving architects. It seems to me that Service Oriented Architecture gets all the attention these days, but I don’t think that SOA (or AOP for that matter) in any way, shape, or form diminishes the need for OO and design pattern knowledge. If anything, it just creates an additional set of patterns (if you’re doing anything resembling SOA or traditional EAI, I heartily recommend reading Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolfe).
Thanks for listening, I feel better now.