November 18, 2007

An Interview Question (and a Thanksgiving note)

Interviewing potential hires is always tough. Determining whether or not somebody is good for your team from a technical and personality standpoint based on a two page resume and an hour interview is a nearly impossible job. I’ve made a number of hiring decisions over the years. Some of them worked out quite well; others, not so much.

I used to have a stack of “tricky” interview questions that I used to ask. In my VB6 days, I would ask applicants to explain binary compatibility to me. I was amazed by the number individuals who didn’t have any idea about such a fundamental concept in COM development. (In the interest of full disclosure, I would only give myself partial marks the first time somebody asked me that question. I told the interviewer that you could add a method to a COM contract. VB6 allowed you to get away with this through a horrible concept called interface forwarding, but it violates just about every COM rule known to man.)

Over the years, though, I’ve come to realize that tricky questions don’t mean anything. The percentage of the .Net Framework that the average developer will use in a typical day is tiny. If a competent developer doesn’t know exactly how to do something, there are plenty of resources on the web for them to research exactly what they need to know. Over the past couple of months, I’ve watched a team of developers with little or no experience in WPF and WCF start to build some pretty serious enterprise level applications using these new technologies.

I’m not saying that experience shouldn’t come into play when deciding to hire somebody, but I am saying that we need to know exactly why we are hire for experience. If a decent developer with a moderate amount of experience can pick up any new coding techniques they need fairly simply, what is the real difference between a junior and a senior level developer?

As near as I can tell, the difference comes down to how they would answer the question “What does a developer do in a day?”

I recently talked with a fairly senior developer at another company. He typically works from home, and hates the thought of having to ever go into the office. “I never like to go in, because when I’m in the office no coding ever gets done. It is nothing more than meetings with other team members to talk about the project.” While I think all developers feel this frustration occasionally, his aversion to going into the office is constant.

Even though he has a senior title, I have a hard time accepting him as a senior developer. (This may be a bit unfair, as I don’t know exactly what standards he is being held to by his management.) I’ve found that the extremely good developers focus less on the code, and focus more on the team. They work to bring the weakest developers in the team up to be more in line with the stronger developers. They push the strong developers to continually improve and to keep expanding their horizons. They work with management on long term planning to ensure the long-term success of the project. They do it all, and still have a love for the code and the langues and the bits and the bytes.

Leadership skills aren’t all that easy to come by. For developers to truly learn these skills, they have to see them modeled effectively. (I also believe that experience in seeing these skills modeled ineffectively can be extremely helpful in understanding the difference.) Reading books on methodologies, researching leadership on the internet, even getting an MBA, are all helpful activities when looking to learn about leadership, but it doesn’t go far enough. It takes mentorship and modeling from existing leaders to truly build and grow a successful organization. When a self-managing development team begins to work effectively, it is a beautiful sight to see.

I’ve been very blessed over the past couple of years to work with some extremely talented and effective leaders, and I just wanted to say a huge thank you this Thanksgiving for all of your time and guidance. I have learned so much from you and look forward to working with you over the next year.