I love Joel Spolsky, he just says it as it is. His comments here about Duct Tape programmers are spot on.
You need developers like this on any project – see the issues, find solutions, fix issues, get stuff done. And simply, in a way everyone else can understand. I love the comment about some technical approaches being easy to understand if you are Spock. That puts a lot of things in perspective. Being smart just for the sake of being smart does not get things done, does not help your fellow developers on the team, and usually does not help everyone get the job done and the product out of the door. What a lot of smart developers fail to realize is that there is a need to aim the level of complexity on any project to the level of the least common denominator. Think about it. If you are busy architecting and dictating ‘the way forward’ using terms and technologies that only a small number of developers on your project can understand, how does that help move the project forward to meet it’s end goal? It doesn’t. What smart developers need to realize is that being smart in order to help a project reach it’s end goal means they have to use their smartness to find the easiest, most appropriate solution that every developer can understand. Unless you can find this common ground you are not going to leverage your whole team. Think about it. If you have a team of 50 developers and you are proposing an architectural solution that only 5 developers understand and can use, this is pointless. This is not an appropriate solutions, regardless of how smart or proud you are of thinking of the idea.
It takes some smart developers a while to come to this realization, and some never get it at all. The ones that do become very valuable resources on projects because they help the team as a whole get things done. The ones that don’t get it, well, they’re destined to become astronaut architects and live in the clouds.