I'm a C++ developer. I know how Windows works on the native level, but I'm not a big expert in C# and .NET. Now I need a C# developer in my team (all my developers are C++). How can I hire a great C# developer if I don't know C# at good level? How to ask questions, how to test whether answers are great or are with silly mistakes?
I am occasionally faced with the problem of interviewing programmers who are primarily experienced in C++, which I do not know as well as them. My strategy is to:
mostly ask general programming questions, algorithms, OO design, how to refactor, what makes a good unit test, etc. I add in a few general questions targeted at the style of language so for C++ I might ask about memory management and object lifetimes for C# I might ask things like, can you have a memory leak when using a garbage collector?
try to find out how they learnt the language, what books they have read, etc.
verify that they have written a substantial amount of C++. Go into depth on when they have used it, how much, what they did with it and who for. Then try to check this as far as possible using their references.
If they can answer the difficult design and theory questions well and they have written a decent amount of C++ then I expect they will be half good at least, and probably able to learn any missing stuff quite quickly.
The real test for all programmers is how well they solve problems. A top notch problem solver with only mediocre C# skills will be far more valuable to you than an C# god(dess) that can't figure out how to handle form input.
Try to find a reasonable real problem from your business domain and let him work it out in C#. You know the domain and you know what the result should be. You can review the logic yourself and ask questions as the basic flow and commands in C# are not significantly different than C++.
If you are still concerned, send his finished code to one of your C# friends or perhaps a business partner and ask them if they could review it and provide feedback.
I assume you have an actual need for the C# developer.
First figure out what type of tasks you need for them to accomplish.
Then ask them how they would accomplish those tasks. Ask how they have completed tasks like this previously.
As you interview ask other applicants for their evaluation of the proposed solutions. I would suggest seeding the solutions with one you know will not work, and perhaps one that you think is good. This will serve to help determine how the applicant can work with your team. The controls should help weed out the yes men and the Idea Assassins.
This should provide you with a good group of candidates with Ideas that are accepted by their peers and should have the ability to work with your team.
Being .Net developer myself and dealing with C++ guys a lot, I think you still would want to find out if a person knows at least something about .Net platform: garbage collection, GAC, JIT, NGEN, Value vs. Reference type, purpose of IDispose, etc. A good list of questions is available on Scott Hanselman blog. There is no simple way to figure out if the answers are right if you don't understand the questions yourself, so it might makes sense to have a look at .Net overview on MSDN or pick up some good book, like Essential C# 4.0.
If you are looking for GUI programmer, it helps a lot to ask to implement something simple, like calculator or Mars rover or whatever. It's OK to give a day or two for this. You will see right away if GUI is useful and nice, for example, how it behaves when re-sized.