A noted blogger and author of Joel on Software explains how companies can find and hire the best programmers available, offers practical suggestions and tips on how to identify great developers, sort resumes, interview candidates effectively, and more. (All Users)
My company is about to hire .NET developers. We work on a variety of .NET platforms: ASP.NET, Compact Framework, Windowsforms, Web Services. I'd like to compile a list/catalog of good questions, a kind of minimum standard to see if the applicants are experienced. So, my question is:
What questions do you think should a good .NET programmer be able to respond?
I'd also see it as a checklist for myself, in order to see where my own deficits are (there are many...).
*UPDATE: It want to make clear that we're not testing only for .NET knowledge, and that problem solving capabilities and general programming skills are even more important to us.
This might not be what you want to hear, but I would recommend not focusing on narrow technologies, but on general programming and problem solving skills. Solid developers can learn whatever you want them to do quickly.
I, for instance, am not a Compact Framework guy, so I might fail your interview if you went that direction. But if I needed to use it I could do some research and jump right in.
Joel's book, Smart and Gets Things Done, has great advice for hiring devs and there are large juicy sections about the kinds of questions to ask. I highly recommend it.
My company, a C++ house, is always looking to hire recent grads. However due to the Java Schools phenomenon, we typically end up interviewing strong Java programmers with maybe a minute smattering of C++. Often the C++ classes don't really prepare students for working in C++. Nevertheless, often these are bright kids, eager to learn and do their best.
Every interview, I struggle with this fundamental question:
How hard is it to turn a "Java School" programmer into a C or C++ programmer? Has your company had experience turning the stereotypical "Java Schools" programmer into a strong C++ programmer? Is it worth the effort?
One of the reasons I struggle with this is not just due to a C or C++ vs Java language difference, it's the fundamental skills that come with learning C or C++ that I think often get lost at the Java School. These include data structures, computational complexity, manual memory management, really everything Joel Spolsky says here.
Often, as far as I can tell, a student will have some of those fundamental skills (be able to answer a few questions), but I'll still have this large part of my mind that's extremely skeptical with how well someone can learn these skills without getting their hands dirty in some C or C++. Maybe I need to be disabused of this stereotype. Am I just being unfair?
Anyway whats your experience with turning the "Java School" programmer into a C or C++ programmer?
If you are hiring young people just out of school, you should hire for IQ, not for any particular skill. You want people who are Smart and Get Things Done, not someone who knows how to frob pointers in a way that is particularly pleasing to you.
It seems like every job posting I see any more, and most recruiters I talk to, insist that the only way I could qualify for the position posted is if I'm an "expert" programmer and designer. And when they say "programmer and designer" they seem to mean, designer, front-end developer and back-end programmer (and most seem to assume that also means sysadmin). So, what are your thoughts? Do these mythical master programming designers really exist or am I just being illogical in my confusion thinking that these guys actually expect to find some one who's an "expert" programmer and designer willing to work in a "senior" position for a barely livable salary.
Most good programmers are humble folk, and have a hard time being declared a "master" or "expert". So, don't be distraught because you don't think you're an "expert". If you're smart and get things done, go for it!