6

Possible Duplicate:
Interviewing a developer who's skilled in a language you don't know

I must interview people for a C# position we have. I work on the java side of the project, and master it quite well. When I interview for java position, I ask some technical-questions/programming-problems so I can make sure the candidate has solid skills, not just '5 years experience'.

But I don't know C# at all. I could look for some questions online (and their answers), but if I ask them these questions, I might not be able to see clearly if their response is right or wrong, maybe they have a point in some way etc. Also I won't be able to follow up in any side discussion etc.

So what I am basically asking is if someone with java/C# knowledge can think of questions that:

  1. are deep enough to show the guy is solid
  2. I (with java knowledge but zero C#) can discern their reply is good/reasonable/well thought or not.
3

8 Answers 8

2

A good programmer is a good programmer and you should be able to identify that regardless of language differences. A person who understands data structures, object orientation, testing approaches and the fundamentals of the craft of programming will have little trouble with a different languages. A person who claims to understand a language in depth but can't talk intelligibly regarding these topics is a weak candidate.

Even if they have less platform knowledge a good programmer will know that is what they need and have little problem acquiring it. Identify that someone is a good programmer and you have a solid starting point.

You could also potentially use your own knowledge as an asset- many people you interview will have a basic knowledge of Java as well so asking comparative language questions can be informative in those cases.

2

I think if the company has to hire a C# programmer, and in the offer it is stated as a requirement, then an experienced C# programmer should do the interview.

Otherwise, as Java programmer, you are going to be able to identify good OO design qualities, and general programming skills. Still you could use a test previously made by another C# programmer to help you in the evaluation.

2

It could be just me, but you cannot evaluate someone's C# knowledge without knowing C#.

You can measure his programming skills, analytical skills, logical skills, testability, object oriented design and everything that is common between C# and Java and everything that is general to programming (and yes all of these are very important), but you cannot evaluate whether he knows C# well or not, leave alone whether he has good practical experience.

Now, I do agree that programming is an art, and you can programming languages any day and all you need is the right approach and the programmer's mindset. But more practically, is your company ready to spend (at least time) for his learning C#? Do you want him "up and programming" from day one? If so, better find someone who knows C# to interview for C#. If you have some time, you can get anyone with a good programmer's mind and let him/her learn.

2

Technically, C# is more of a superset of Java (if you neglect a few syntactic differences).

C# has quite an impressive amount of features Java omits by design. Most important ones would be:

  • first order functions, especially lambda expressions, but also delegates
  • expression trees
  • LINQ (a very powerful tool, if used appropriately)
  • handling covariance and contravariance of type parameters with in and out

That being said, very few of these features are leveraged in every day code. That's because they are relatively new and relatively hard to understand. Of those things, the only one you will probably a commonly used on a daily basis are LINQ and delegates, data querying and event driven programming being the most important application respectively.

Frankly, in C# there are just characteristic idioms to solve some problems. And there are reasons why those idioms are in place. You want a C# programmer to write C# code, not Java code in C#.

It is not unlikely, that if you ask a C# programmer to show you his code masterpiece, he will show you a piece of code, that has these new features crawling all over the place. And you will really have a hard time understanding the code or judging whether the use of those features was appropriate or actually obfuscates a simple problem by convoluted constructs.

If you really want to live up to this challenge, you need to do your homework.
What you want to do is to hire brilliant people and you want to pass judgement on their skills. You should therefor have as much insight as possible. If not for actually finding the best candidate, then as a sign of respect towards their work and expertise.

Hiring is a critical process. If you can't provide the necessary C# expertise yourself, I suggest you hire someone you can trust, to get a good assessment for C#-specific skills and focus on examining all the non-programming aspects of software development.

1

Simple, give him/her a terminal and tell him/her to do some stuff. Check how much he/she looks up syntax to get an idea of linguistic familiarity. Then have him explain his/her code to you, line by line. Think of it as less a programming exercise and more of a communications exercise. You can weed out other candidates beforehand with questions about data structures and the like.

1

In any language knowing the library is an indicator of real experience. These .NET gems here should give you an idea how to word some interesting questions.

1
  • 5
    In any language, knowing the library is about whether or not you can Google the answer.
    – DeadMG
    Sep 1, 2011 at 10:42
1

This is one of the biggest reasons why I created Dev++, though I have not been able to spend much time on it lately.

Sign-up and take the c# tests yourself... if you want, I can make you a 'recruiters' account which would allow you to invite other people to take tests, then once they pass them, you can see their code.

As a Java developer, you'll be able to read their code and assess their c# knowledge 100 times better than stupid multiple-choice tests elsewhere on the internet.

(Did you catch my disdain for multiple-choice questions?)

EDIT: Here's the list of C# tests by the way: http://www.devplusplus.com/Tests/CSharp

1

Get him to send in some code examples. If you know java then you should be able to read C#. You can then see how he codes and how good at OO programming he is.

Not the answer you're looking for? Browse other questions tagged or ask your own question.