Image via Wikipedia
The problem isn’t their work ethic. Your developers work hard. They often work overtime that you may not even know about. They kill themselves to meet their deadlines. They aren’t playing Quake when you aren’t looking.
The problem isn’t their intelligence. Your developers are extremely smart people. They have put themselves in an industry that is constantly changing, and the rate of that change will only increase. They have to deal with abstractions and concepts that rival math, linguistic analysis, and other varieties of pattern-spotting and computational jobs.
The problem isn’t their industry knowledge. Your developers are reading magazine articles, blog posts, going to conferences and Code Camps, books, and working on side projects at home to sharpen their skills and stay on top of things.
The problem with your developers is that they know there are better ways out there to do what they do, and they’d do them if they had someone to show them how to successfully implement them in real projects instead of just giving them theoretical knowledge and examples, but they don’t have that.
It will take them literally years to compensate for that – to claw their way up into a higher level of development skill and productivity – all for the want of someone just to show them how these fancy concepts like TDD, Interface-Based Programming, Dependency Injection, etc. actually work together to get a real project done.
That’s their problem.