In my experience, there are no dumb developers.
Unfortunately my experience has been a lot different than this.
Maybe “dumb” is strong word. I think it’s really more along the lines of “doesn’t have the aptitude to develop”. Many of the people I have met who call themselves developers are not. In my mind the term “developer” indicates someone who is good at problem solving, design, etc. What I will term here as “coders” is what Brian McCallister is probably referring to when he talks about not-very-good-developers.
Coders are not developers. These are the people who don’t look outside of their own work to explore what else is out there in the world. No interest in languages aside from what they use at work. No interest in things like new development methodologies. The list is quite long. In controlled situations they may be able to crank out working (but not necessarily good) code but move them out of their zone of comfort and everything breaks down. This is not saying they are dumb people (maybe they’re in the wrong profession…brought to software development because it’s a good-paying job) but they simply are only able to handle clean-room situations. If something doesn’t work as advertised or they run into strange debugging situations they need hand-holding.
Lets face it: a good developer has an innate ability to see problems in a way that coders just don’t have and that is why coders get in to trouble outside of controlled conditions. That innate ability to problem solve is just as elusive as the ability to capture great photographs are write great music. It really is more akin to art than science. Good developers are born with that ability. It will take training to bring it out but the ability is already there.
Contrary to what Corporate America thinks these things can’t be learned. If you don’t have the ability to start with no amount of training will help. Tools won’t help either. That’s why good developers are expensive and hard to find.