The "Doh!" Moment
Have you ever worked on a problem and kept working on it and working on it until you knew you'd created a solution to the problem that was completely defensible and utterly wrong? Don't worry, it happens to a lot of smart people. You think and think and think and think and come up with the absolutely elegant, smart solution that involves creating the perfect piece of infrastructure. Then your neighbor points out that a piece of chewing gum and two pennies would have worked more quickly and less expensively.
Yes, overengineering is common among us smart people. (Ed note: Has anyone else noticed that we need an international emoticon for irony?) The smarter we are, the more likely it seems we are to overengineer. Until you get to the really smart people, who are typically the ones offering you the chewing gum and pennies. (The brilliant people look at the solution proposed by the smart people and figure out how to implement it only using the same chewing gum and pennies that the very smart people offered thereby solving both the simple and general cases with no incremental effort.)
But I'm not just talking about overengineering. I'm talking about knowing that you're overengineering even as you're doing it. When that happens to me, I try to find a really smart person and I say, "I'm overengineering this."
Thursday I had the Moment of Recognition that I was overengineering. I was looking for a way to make Visual Studio work better with online community resources, like extracting source code from forum questions and things like that. I had a bundle of ideas just like that, ranging from one developer for a week to a team of fifty working for two years. Even I recognized the telltale signs of overengineering.
I booked 30 minutes with Scott Guthrie. In about 5 minutes he'd pointed out that it would make a lot more sense just to get everyone in our division to spend a couple of hours a week answering forum questions and marking the occasional article as very useful or the occasional question as a FAQ. Or hire someone to write some more samples and starter kits. Not precisely zero cost, but it has the benefit a) requiring no code to be written and b) getting the division out answering questions.
Sometimes when it's a nail, just hit it with a hammer.