Rant()
{
Stop reading here if you’re looking for something technical :)
I’ve recently started interviewing candidates for what I would describe as a mid-level developer, skilled in ASP.Net/C#. This brought back memories of much the same exercise I went through last year when looking for a med-to-senior level developer.
So to summarise how I think that went, I’ll paraphrase some questions and answers that have stuck with me:
Q: Does C# support multiple inheritance?
A: I’ve never really needed to use inheritance, so I haven’t paid much attention to it.
Q: Can you explain the concept of generics and what they add to C#?
A: C# allows you to program almost anything and that makes it quite generic.
Q: Can you explain to me what an abstract class is?
A: An abstract class is like a class but it isn't really one. It can't do anything.
Dismal. I have a wild imagination, and when I start thinking back to this, my mind is filled with the imaginative sound of a downward-spiral-type-thing. It's a lot like in the Road Runner cartoon when Wile E Coyote falls of the cliff, except in a spiral, going back and forth from ear to ear.
I digress.
Before I get flamed with comments like “Aren’t these loaded/catch questions?” or “I’m sure you can find the answers on Google very quickly”, I have to ask a question: Surely these concepts should be understood by someone applying for a mid-level/senior developer position? What intrigued me at the time was the oft occurring idea that many of these candidates classed themselves as senior because they were either the person who had been at their previous company the longest, or they had managed to secure their current position which had that title.
I feel that a senior developer should have excellent knowledge of the language he is working in; he should be able to work on almost any code or project unsupervised, and require very little input on “how to do things”. I found this article on StackOverflow and the first answer (at the time of writing started with “We have similar gradings:”) is very much in line with my thinking and what I expect. I also think that a working knowledge of concepts like patterns, common algorithms, lazy loading and continuations are a plus. So, if I get a CV that describes the candidate as “senior developer”, I expect this person to be pretty damn good and they can expect me to give them an equally good grilling during the interview.
My idea of mid-level developers is that they have reasonable knowledge about the language they’re working in, can handle small projects by themselves with some guidance from a senior, and should be able to write a string reverse function which does simple things like boundary checking, null reference checks, etc. The reason I include that last one is that it’s one of the questions I ask in the practical test for mid-level developers. As of today, the score is zero out of four.
Maybe I’m expecting too much.
}