I always have a hard time assessing fellow developers.
For one thing, I’m never sure whether it’s fair to apply to other people the same internal standard I have for myself. Some people might say, “of course it’s fair to expect as much from other people as yourself!", but the fact is that I’m not even sure if I expect too much from myself. I may like to project and arrogant and prideful exterior, but I’m extremely self-critical. I feel that many of the problems in our current project have been caused directly by my own lack of experience in handling techincal design decisions. However, my own perceptions contrast with the assessments I get from my peers. I’m neither kidding nor trying to brag here… I’ve actually had assessment sessions where the phrases “idolize” and “would like to follow his career path” were used. I’m not sure if I’m being buttered up or my expectations of myself are really that far out of sync with the world…
Anyway, meaningless self-analysis aside, what makes a good software developer? I’m sure many others have given numerous things to look for in developers, but for now I think there’s one trait I can identify: a passion for learning. I prefer software developers who are always looking to improve themselves; the ones who buy reference books, read articles on the ‘net, consult with senior developers for design advice, attend trainings and seminars, etc. They study what works and what does not in software development, and they strive to apply only the best practices. For lack of a better term, such people are craftsmen, software development is their craft. I’m fairly sure that any software developer who exhibits such qualities is a pretty good one.
I suppose I’m fairly lucky. Of the current crop of developers I work with, at least 3 out of 10 satisfy that description. Not a bad ratio.