The Measure of a Developer
So here's the deal, I don't enjoy interviewing people... especially developers. The process on a whole does not do anything for me, sometimes I leave excited, like - "that was great, we need to get this gal" and sometimes I don't - "well I'm glad the WCF guru was able to explain how he used his Neutron binding for us". But at the end of the day, the biggest problem I have is that developer resumes are a horrid mess of acronyms that they may or may not have used further complicated by delineations between Junior, Intermediate and Senior. I can't tell you how many "Gurus" I have interviewed to only have them tell me - "yeah I was more the maintenance guy on it" or "yeah I didn't use that part of the framework". I would NEVER declare myself a guru in anything because there is an infinite amount of information out there that you can't know it all. But my biggest peeve with interviews is the guys who come in with 15 years experience thinking they are Senior-Level but then when you talk to them, their knowledge is a Junior, but somehow these years of toiling away on code has given them the right to be a Senior? So with that in mind, here is how I measure a developer's worth when I am looking to hire someone.
Experience is Not Years
I don't care how many years you have been working with programming language X, I care about what you have done with programming language X. Do you want they guy who has built and maintained 4 projects with ASP.NET for the last 5 years (putting him at a typical Intermediate level) or do you want the guy that in the span of 2 years has built 12 ASP.NET sites, each more complicated then the last? It's not a trick question, the latter is the guy you want - he's pushed his train of thought further and built on his skillset at a much more accelerated rate. Assuming, all things being equal, that the 12 projects increased in scope and easily surpassed our previous candidate's 4 projects, the choice is obvious, you want the guy who has a wider breadth of the framework and a better understanding of what can and will go wrong with these projects. Years do not equal knowledge, I would easily consider the second candidate an Intermediate (again assuming he really knew his stuff) over the guy with 5 years experience.
Passion is Mandatory
I run an interview like a conversation, and I always throw in a question about what you do in your spare time, how do you keep up-to-date with changes in the industry, etc, etc. I am always, always blown away by the number of people that rely soley on MSDN, don't get me wrong, I use MSDN (and the magazine) a lot, but there is so much more out there, guys are writing blogs on how they have solved problems in innovative ways that go beyond the documentation on MSDN. The guys that tinker in the evening for the sake of figuring out a problem to understand it are the guys I hire. Partly because you know they are genuinely interested in what they are doing, but mostly because I know that passion will shine through in their work in the form of pride, dedication and quality to getting the job done.
Velocity
Alright so we've got a candidate that has some solid experience based on what they have done and they have the passion for the job - so let's peg this candidate as a strong Intermediate. My final criteria for determining the measure of a developer cannot be discovered during an Interview. Nope, you're going to have to go with your gut and bring buddy in. Maybe you can do this as a test exercise, but really you will not witness it until they are hired working through problems with you and your team. The final measure of any good developer is how much quality code they can pump out in X amount of time. Anyone can paint a Mona Lisa if given enough time to learn the finer points of painting, but for many this would take years. When we're working on the next release, I need passionate, experienced people who can hit the ground running and pound out code like its going out of style. Do I want them going a reckless pace? No, but I want them going at a velocity that shows progress is being made and we are getting things done. Remember velocity is about quality OF code, not quantity OF code - this is often the hardest trait to find - some guys can think of a problem and get right to it, others can sit their for days before starting to go and then they go at a slow rate.
So there you have it - the Measure of a Developer is achieved by their Experience (not in Years), passion and velocity to get the job done. It's not a complicated set of characteristics but it can be a hard set to come by. The key is that when you find these people, you make sure you do what you can to keep them, because they are not an easy find and like Aladdin said, they are a Diamond in the Rough.