Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Anyone who has used R# or CodeRush knows how fast you can put together simple constructs (and refactor complex ones) with a simple keyboard shortcut. However, do these productivity plugins cause a false evaluation of ability during interviews?

Part of being a productive code writer (and making a good first impression in an interview) is writing good code - fast.

If I had two candidates:

  1. Doesn't use plugins. She thinks about the problem, sits down at a stock IDE at the interview PC that looks exactly like hers and types out the code in a minute or two, as usual. Done. Pass.

  2. Uses plugins. He thinks about the problem, sits down at a stock IDE at the interview PC and realizes "fe + tab" no longer writes a foreach loop automatically, and all the shortcuts are gone. He then bumbles around the keyboard hitting his normal hotkeys and popping up strange windows and getting flustered. It takes him 3 minutes to write what normally would take 30 seconds. Done. Looked like they didn't know their way around the IDE at times. Must be new to this IDE and thus not had much experience with it or maybe the language. Pass, but a 'meh' mark beside their name.

In your experience, how do you handle plugins during interviews as the interviewer or interviewee? What are the best practices to getting what the candidate really knows? There can be candidates who don't understand code, and use R# as a crutch. There can also be candidates who know the code in and out and use R# because it's just plain faster than the built in VS or Eclipse templates. Is it best to just not use an IDE at all? Let them bring their own PC? Others?

share|improve this question
add comment

5 Answers

up vote 31 down vote accepted

I was a candidate 2 in an interview very recently. I was given a vanilla install of the IDE on a PC with a non-standard keyboard and unfamiliar testing framework, and I was asked to write a simple Fizz-Buzz app with unit tests. I fluffed it. I must have looked like a complete noob, stumbling around in the dark trying to hack out code. Needless to say, I wasn't offered the position.

What I learned is that I rely very heavily on my plugins. They don't just get code typed faster - they actually shape the way I think about code and the way I go about coding. For example, I used to think very carefully about variable names because they could be a pain to change after the fact. Now, in contrast, I just make a half-baked guess about how I'll use the variable, hack out some code, let the variable tell me what it is for, and then hit Refactor->Rename to call it something more appropriate.

Does this make me the less capable candidate? In some ways, I think it does. Someone who can write code in Notepad and have it compile and run correctly has certain advantages over someone like me who needs all the IDE goodness he can get. From that point of view, I perfectly understand why any company would choose not to hire a toolhead like me.

On the other hand, I'm still a talented and capable Senior Developer. I've learned what works for me, and I practice the sort of laziness that makes me productive, given my own weaknesses and limitations. In short, I'm the kind of programmer that could really benefit a company like the one who turned me away.

Interestly, I had another interview a couple of weeks ago. Following my previous experience I made a point of asking about additional tools or budget for buying them. Discovering that there were neither gave me one more reason for turning down to the (rather generous) offer that they made to me.

So, to paraphrase Groucho, "I would not join any company that would have someone like me for an employee."

Not unless they let me use ReSharper, anyway.

share|improve this answer
2  
When I interview people, I have them write code on a piece of blank paper. It doesn't have to be pretty, and it doesn't have to compile, but it does have to resemble the target language. I'm not looking for a working product; what I am looking for is a thought pattern; can the interviewee think about problems and solve them using code? –  Robert Harvey Nov 25 '10 at 19:32
    
BTW it must be nice to be able to turn down attractive offers in the current economic climate. –  Robert Harvey Nov 25 '10 at 19:34
add comment

Let them (candidates, that is) use whatever they want. The old, build a Wal-Mart with a Swiss army knife just to show you can approach is so old. They are going to use whatever it takes in their daily work (well, I certanly hope so) so let them use whatever they want in an interview. The final result is all that matters. And I'll much more gladly hire a candidate who knows what tools are available on the market, and how to use them efficiently, then the one who does it all manually. This is a killer industry.

p.s. As an example, think of Vim (or Emacs) - would you like to use it without any customized settings, plugins, etc.?

share|improve this answer
    
+1 Besides, if your coding task really is only checking that they know about foreach I question how useful it really is (even something like FizzBuzz is looking at a lot more than that). I was chatting to someone from the Java community and he said you could tell who the good .net coders were as they used Resharper. Not sure that's 100% accurate - but you get the point... –  FinnNk Nov 2 '10 at 15:37
    
Getting a candidate to write code on a whiteboard at interview is VERY revealing in their ability to program. As an interviewer you are making a judgement call about how much support this person needs to do the role. –  Ptolemy Dec 3 '10 at 12:19
add comment

I'd argue that tools like ReSharper actually make you a better candidate over all.

For one, something like ReSharper is going to teach you about language constructs you might not have known about, as well as better ways to organize your code toward thinking about a problem or structuring it for readability. ReSharper, in a sense, keeps you sharp with the best practices for slinging code, rather than letting you fall back to bad or obsolete habits, or worse the bad kind of laziness.

A good coder needs to understand basic constructs, but not manually type them in. The good kind of lazy lets the tools do the borning grunt work, and the extra time saved is instead spent thinking about the problem. This makes one a better developer overall.

I'd complete the line of reasoning by stating that if the interview process is favoring sticks and stone knives, it's fundamentally broken.

share|improve this answer
add comment

Great question BTW - I've often pondered this.

Mastery of tools is a skill that is central to being a good developer. I have always felt alarm bells ring when a developer claims he prefers coding in notepad to using an IDE. It suggests he's more interested in the process than the product.

It's like preferring to till the soil with a hoe vs a tractor - fine if you're a hobby gardener, but insupportable as an industrial farmer in a competitive economy.

However, we do become dependent on our tools. People do seem to freak out about how we would cope in the hypothetical situation where our tools were suddenly taken away. There was the same argument about allowing calculators into exams.

The reality is that tools get better and better and cheaper and cheaper each year and there is no reason why you should ever suppose you will be without them. And tools are great at doing repetitive things with a high degree of quality - which means we can focus the full force of our incredible homo-sapien intellects on the difficult (and interesting) parts.

ReSharper is an awesome addition to Visual Studio. My current company didn't have ReSharper when I was interviewed - but I was so evangelical about it in my interview that they bought me a copy when I accepted the position as well as one for the developer who interviewed me. It is now being rolled out across the company. Good tools pay for themselves in no time at all.

So to answer the question: your dependency on tools may cause a false evaluation of your abilities in an interview, but they will always give a correct evaluation of the interviewer's abilities. If a company doesn't recognise the value of tool support in your interview - you've got to show them the light. And if they still won't see it, then I'd be very concerned about accepting a position there.

share|improve this answer
    
I'm very clear in interviews about the tools I'm used to working with, and what I expect from the company. Would you believe some companies still only provide one monitor per developer? I have no problem saying to an interviewer "I'm running at half speed because tools I rely on aren't here", especially when I use a key combo and it doesn't work. Even in a nominally vanilla IDE I customise things, because my hands know where things are and I can't be bothered retraining. For a Dvorak keyboard or writing comments in German, or whatever other handicap they want to give me. –  Мסž Feb 18 '11 at 2:45
    
@moz - Totally agree you should tell the employer they won't get the most out of you without investing in tools. I'd go a step further and get them to commit to getting the right tools. It probably won't be much fun working for them if they won't. Each time you manually refactor something, you'll be cursing them for not valuing your time enough. Working somewhere mediocre may effect your future earning power also. It can get interesting if you do any pair-programming if the two developers have different shortcut configurations. I try to keep with the standard configuration as much as possible. –  Acentric Feb 20 '11 at 5:27
add comment

That's one of the reasons I ask people to code at the whiteboard, not in the IDE. It levels the playing field. And people do say "oh dear, resharper handles this for me usually". Heck, the built in snippets handle for loops and such, which the whiteboard can't give you. In that case saying something like "I hope the punctuation is right there; I'm a R# guy" is probably all you need to keep me from holding some syntax issues against you.

I need some ability to write understandable code on the whiteboard so we can have a meeting in which we work out how we're going to do things. And of course, I want to see if you have ever actually written code in your life or not. Your interviews may vary.

share|improve this answer
    
I completely understand why you want to do the whole Whiteboard thing - I imagine it weeds out a lot of poor candidates - but it will also weed out some great talent, too. Of course, that needn't be a problem as long as you have a pool of good whiteboarders. –  Kramii Nov 2 '10 at 15:45
2  
@Kramii: You know, "great" talent should be able to explain themselves and their code with a whiteboard. So I can't really see why it would weed them out. –  Spoike Nov 23 '10 at 19:14
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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