Thinking about the positive negatives
Over on bitbashing in I Must Admit I Don’t Quite Understand the Thought Process the post’s author asked a potential hire which features of C# in particular the developer liked. The developer answered:
His first response was that there were no pointers in C# which prevented a lot of bugs. When I probed further, he also mentioned that the lack of multiple inheritance was really nice.
The author was taken aback by this response, this acceptance of a lack of features as a feature in and of itself and as a result found the candidate unfavourable. To the author’s credit he’s continued to think about it and wonder if his reaction was perhaps the incorrect one.
Personally, anyone who answered the “favourite feature” question by citing a lack of features from other languages and who can justify that answer moves immediately to the top of my pile!
Two of my favourite interview questions are: “What’s your favourite programming language and why?” and “What’s something you hate about your favourite programming language?” If a candidate has no answers for either of those that’s a big negative to me, as both are intended to be strarting points for probing deeper into the candidate’s passion for programming and their desire to really know the realm in which they’re going to spend at least a third of their lives. If you don’t love and hate something about your favourite programming language you either don’t know it well enough yet or you’ve become a souless code-monkey bashing away at the keyboard until the clock chimes (warning: flamebait).
That this particular developer was able to cite what most people might percieve as negatives of the language as positives, and was able to do so rather than cite the actual, obvious benefits of C# (a language I’m quite fond of myself) tells me three things:
- They’ve learned at least two languages deeply enough to be able to come up with these contrasts between them and know why these contrasts matter. Understanding similarities between two languages is easy, understanding differences (really understanding the differences) is hard.
- They’ve thought about it. Maybe not concretely and explicitly until this question was asked, but at some level that developer has really thought about the languages they’re using and what it means to them when they’re using these languages.
- This candidate isn’t trying to game me, trying to figure out which answers I’m looking for and hand up the safe answers. They’ve answered it their way, based on their experience and whether or not I agree, if they can justify the answer then I like it.
The author writes: “In retrospect I wish I had probed deeper into his though processes when he named these language ‘features’” and I think he should have. It sounds like this developer wouldn’t have been hired anyway, so no big deal in hindsight, but I think he might have missed an opportunity to examine his interview approach all that much more.
Sometimes being shocked awake in an interview is a good thing.
