This is a read-only archive!

Interviewing for programming jobs

I've had to interview people for programming jobs before. (Believe it or not. Just goes to show. Those who know do, those who don't, interview. Something like that.) Interviewing people is one of the worst experiences I've ever had. It's impossible to tell how good someone is at anything in a half an hour, unless the skill you're trying to judge is "ability to interview well". So inevitably you start trying to come up with stupid tricks to tease out the details of people's character.

One of my favorite questions was always, "What's your favorite text editor?" You can tell a lot about a person from the answer. It's such a stupid question and it's one that few people would see coming. It can be delivered in a seemingly harmless off-handed way. Only a true geek can see through to the true depth and significance of the question. It's also a question you can't easily fake a good answer to. Here are some possible answers and their implications for hireability.

  • "Vim". Insta-hire.
  • "Emacs." Close enough. Insta-hire.
  • "Textpad." They're probably on the right path, just another sad victim of Windows indoctrination. You may be able to bring them back into the light, given time and careful attention.
  • "Eclipse." Sadomasochistic. Proceed with caution.
  • "Visual Studio." This person lives in a strange, alien world which I want no part of.
  • "EDIT.EXE". Hire this person the next time 1987 rolls around.
  • "Notepad." Immediately drop this person to negative hit points. They're not quite dead, but will be dead soon without immediate supernatural recovery.
  • "I use whatever." This person wrote three or four programs his entire life, and all of them were homework assignments.
  • "MS Word." Avoid direct eye contact and GET OUT OF THE ROOM WHILE YOU HAVE THE CHANCE.

Most of those, I've actually heard. Of course once they answer, you should quiz them a bit further to make sure they aren't making it up. One person I talked to mentioned "vi" but didn't know of the existence of vim, which was kind of suspicious.

April 02, 2008 @ 4:04 PM PDT
Cateogory: Programming

53 Comments

David Hilton
Quoth David Hilton on April 02, 2008 @ 4:47 PM PDT

Yeah, you can learn quite a bit about a person from their editor.

Here in school, lots of teachers tell students to use vim (or, less commonly, emacs). However, lots of times they don't know how to do anything very advanced - customization, code completion, macros, etc.

I feel a little disappointed when people say they use an editor, and then only type in it...

Moo
Quoth Moo on April 02, 2008 @ 6:34 PM PDT

Visual Studio and Scintilla text Editor.

jf
Quoth jf on April 02, 2008 @ 6:43 PM PDT

kate? pico?

Joe Chung
Quoth Joe Chung on April 02, 2008 @ 6:51 PM PDT

"And if you gaze for long into the abyss, the abyss will also gaze into thee." - Nietzsche

Mark
Quoth Mark on April 02, 2008 @ 7:09 PM PDT

When I am hiring, if the person says vim, then my response depends on the project I am hiring them for. If I am hiring them for some stone-age maintenance project, and they say vim, then insta-hire. But if I am hiring them for a modern project with a GUI, and they say vim, then I want to interview the next person.

Jeroen Leenarts
Quoth Jeroen Leenarts on April 02, 2008 @ 7:14 PM PDT

Now I wonder what you would say if someone answered one of these: -Textmate -SubEthaedit -BBEdit -Coda

(Yeah, those are all OS X only editors.)

CruxOp
Quoth CruxOp on April 02, 2008 @ 7:25 PM PDT

I'd have answere MSWord or Open Office, because when someone says 'text editor', I think 'something to write formatted reports and thesis in'.

For the record, my favorite IDE is in Smalltalk. Programming code goes far beyong simple plain text. (P.S. I actually think Emacs is more IDE than text-edior. Sure you can use it to edit text, but that wouldn't be the point of it for me).

David Precious
Quoth David Precious on April 02, 2008 @ 7:29 PM PDT

To be fair, the editor is just a tool; if someone is comfortable with their editor of choice and can use it productively to knock out quality code, who really cares what editor it is?

Personally, if I'm at a console I'll go with vi, but for day to day work I tend to use Kate, just because I find it really easy to work with - splitting windows, bookmarks, code folding etc can all come in handy at times.

If you are picking a carpenter to do work on your house, would you ask him what brand of hammer he uses? :)

Michael Campbell
Quoth Michael Campbell on April 02, 2008 @ 7:37 PM PDT

I want to not reply here because it's just another editor war, but...I .... can't... help it.

> splitting windows, bookmarks, code folding etc can all come in handy at times.

Yes, they can, and emacs does them all so very well. (vim only at a console? Please.)

vilaca
Quoth vilaca on April 02, 2008 @ 7:39 PM PDT

"Only a true geek can see through to the true depth and significance of the question."

And the significance is: Run out the door ASAP. This interview is crap. You don't want this job.

Seriously, this is the dumbest interview question ever. I've coded hundreds of lines of code in Notepad, Visual studio, VIM, VI (some systems i worked only had this), Eclipse, etc.

What is the next question? "Nokia or Iphone"?

Get a life fanboy

> splitting windows, bookmarks, code folding etc can all come in handy at times.

David Precious

> > splitting windows, bookmarks, code folding etc can all come in handy at times.

> Yes, they can, and emacs does them all so very well. (vim only at a console? Please.)

Of course it can, I never said it couldn't. All I did was express my general preference, and also state that, whatever somebody chooses to use doesn't bother me in the slightest; if they like their choice of tool, and can work productively with it, then great. I really don't see why it should matter.

I agree with other commenters that it's a pointless interview question, and not an indicator of programming skill.

Bob Holness
Quoth Bob Holness on April 02, 2008 @ 7:46 PM PDT

Vim is my favourite text editor but I would not dream of using it for development, for which I use a decent IDE (e.g. IntelliJ IDEA or Eclipse for Java).

(Amusingly you can get a Vim extension to Visual Studio but the current version does not play well with Resharper.)

vegai
Quoth vegai on April 02, 2008 @ 7:51 PM PDT

emacs, vim and acme. Does this mean I get triple pay?

Alexander Mikhailian
Quoth Alexander Mikhailian on April 02, 2008 @ 7:59 PM PDT

Er...

Another trick to try is to check whether the person knows what is 'slashdot'. As in the question

Q: I saw the best ever vim cheat sheet on slashdot, yesterday.

A1: What is slashdot? He is not a programmer.

A2: Oh, I saw it as well. Proceed with caution, he may be burning his time surfing the web.

A3: Really? I am interested. Hire him for tedious, repetitive work only, he has no imagination.

A3: Really? I am interested. Hire him for tedious, repetitive or managerial work, he has no imagination, but lots of common sense.

A4: I know all vim commands by heart. He is a liar.

dm
Quoth dm on April 02, 2008 @ 8:00 PM PDT

Bob's got it right, use an IDE. Makes a huge difference.

Ciaran McCreesh
Quoth Ciaran McCreesh on April 02, 2008 @ 8:26 PM PDT

Unix is an IDE. Gvim is the editor for that IDE.

she
Quoth she on April 02, 2008 @ 8:42 PM PDT

Well I used to be an avid vim user but i grew tired of it so I built my own (which is never complete but good enough).

The thing is though, what if someone says bluefish? Or a full IDE?

I dont think the editor alone says a lot about someone's capability or knowledge....

vilaca
Quoth vilaca on April 02, 2008 @ 9:03 PM PDT

Someone should answer that with "I ONLY use copy con".

da
Quoth da on April 02, 2008 @ 9:23 PM PDT

I've usually asked this question a little bit differently: "Tell me the keystrokes you would use to move a section of code from one file to another using your favorite editor."

You can of course change this to other common operations (rename a variable, comment out a section of code, ...)

The point is to see how quickly they can just spit it out: cursor to beginning, Ctrl-Spc, cursor to end, Ctrl-w, Ctrl-X F to load file in other buffer, cursor to insert section, Ctrl-Y.

With IDE users, you often get an explanation using the mouse - which is understandable. But I've always found good programmers will learn the keyboard shortcuts and prefer that to using the mouse.

Krischan
Quoth Krischan on April 02, 2008 @ 9:35 PM PDT

Answer 8.: You drop people that use whatever is around on the system? I have to agree - fanboy-bullshit.

Craig Turner
Quoth Craig Turner on April 02, 2008 @ 9:40 PM PDT

> If you are picking a carpenter to do work on your house, would you ask > him what brand of hammer he uses? :)

He'd have an opinion. Either something along the lines of Snap-It, "because it's the best", or the cheapest one in the hardware store, "because when I drop it down a cavity wall I have another four in the van". He'd also have opinions about machines vs hand tools, and probably about build quality and "the problem with things these days".

A Programmer
Quoth A Programmer on April 02, 2008 @ 10:03 PM PDT

I use Vim, Programmer's Notepad, DevC++ and Eclipse .. So, will you hire me ? Btw, Do you really write Java code using Vim ? I think you are being prejudiced .. It appears one is considered a "ubergeek" only if one tries to show that one likes Linux, Vi, Lisp, Ruby or and one should of course hate - Java, C++, Eclipse and any Microsoft product. Good engineers are supposed to keep an open mind and not allow "religious" beliefs and predujices to colour their professional decisions. Perhaps .. geeks are not engineers after all ?

jc
Quoth jc on April 02, 2008 @ 10:20 PM PDT

I wonder about the reaction for "ed".

Peter J. Schoenster
Quoth Peter J. Schoenster on April 02, 2008 @ 10:34 PM PDT

Personally I think it's a very good question. But for those who don't understand it, you need to expand on the reason. A person should care about the tools they use. They should maximize their use of them to maximize their investment in what they are doing. I would expect that question to generate a lot of feedback from some people.

I've used a lot of tools. A lot. I've used notepad and still use it sometimes. I've used vi,vim and PFE and Elicpse and Visual Studio and others and I'll use them again.

But the 2 editors I use most are textpad and emacs. I write macros in both and in emacs I extend it with my own elisp and from others.

When the interviewer asks me which editor I use I'd talk about context and use. I would then expand on how I use them and how use of them makes me more productive. It might get into how I use code to write code.

I would expect a programmer to have a favorite editor and to know it well and defend it. I happen to work in a windows and unix/linux world so I work on asp and python, perl, java and php and more so in different contexts I use different editors. But I still have my favorites.

Clayton Nash
Quoth Clayton Nash on April 02, 2008 @ 10:43 PM PDT

I think it's a great question but the answer probably doesn't matter - it's how they choose to justify their choice that matters. Talking about vi(m) vs. Eclipse would at least show they cared about how to do things. Everyone I've hired who turned out to be good had real opinions in the interview.

Obligatory xkcd reference
Quoth Obligatory xkcd reference on April 02, 2008 @ 10:52 PM PDT

http://xkcd.com/378/

pTymN
Quoth pTymN on April 02, 2008 @ 10:59 PM PDT

Why does it matter which editor I like, when I'm almost never actually writing code?

http://www.codinghorror.com/blog/archives/000684.html

BP
Quoth BP on April 02, 2008 @ 11:13 PM PDT

"Only a true geek can see through to the true depth and significance of the question."

Only a nerd thinks the question has any depth. A true geek sees immediately how shallow it is.

Warren Parsons
Quoth Warren Parsons on April 02, 2008 @ 11:28 PM PDT

> Seriously, this is the dumbest interview question ever. > I?ve coded hundreds of lines of code in Notepad, Visual studio, > VIM, VI (some systems i worked only had this), Eclipse, etc.

Hundreds of lines of code, eh? That explains why you don't care what tool you use.

vilaca
Quoth vilaca on April 02, 2008 @ 11:41 PM PDT

@Warren Parsons

i'm an expert, i dont get paid by the line

gwenhwyfaer
Quoth gwenhwyfaer on April 02, 2008 @ 11:59 PM PDT

I think you might have posted this article about 36 hours too late...

Jay K
Quoth Jay K on April 03, 2008 @ 12:26 AM PDT

I had an interview recently where they asked me that. I was very surprised how much more they seemed to like me after I said vim.... I start Monday!

vilaca
Quoth vilaca on April 03, 2008 @ 12:35 AM PDT

@Jay K

run while you can, that employer.......... erm................ sucks

Brooke Jackson
Quoth Brooke Jackson on April 03, 2008 @ 12:41 AM PDT

Ok, so I am in the Microsoft world, because that is what pays in my area. So I use Visual Studio for just about everything. If asked this question in an interview I would say exactly that, but I would also follow it with an explaination that whatever editor I need to use I can use, just as whatever language I need to use I can use. In some cases I may need to get up to speed, but in all cases any program can be learned and the important part about programming is being able to solve problems in whatever platform you need to solve them in.

Oh and the out of the box Visual Studio drives me nuts. I use Refactor Pro and Code Rush to provide templates and speed up changes in my code.

So would an answer like this mean anything to you?

220vac
Quoth 220vac on April 03, 2008 @ 12:52 AM PDT

sed. Wrote my last novel with it, just made a file consisting of "a" and started replacing.

ubersoldat
Quoth ubersoldat on April 03, 2008 @ 12:57 AM PDT

Sure, I'm a vim user all the time. Even my resume is on TeX because I hate Word Processors but for programming in Java, give me NetBeans any time. Sure, if I need to do some quick stuff on any code, I use vim. The thing is, you've got to know vim. Why you ask? Because sometime along the road you'll find yourself trying to edit a file where the only editor is vi. And again, it's just a tool that of course, helps you do lots of stuff, it's versatile, fast and by remembering a few keystrokes or commands you can get your way with it. Even that I find the question a little out of place (or maybe the company is a Perl/C shop where all the coding is done over remote access), the thing is that if you're a "computers" guy, learning vi is a way of showing how far you want to go on learning new stuff, because programming anything with an IDE will make the job done, but when using vi/vim you're on your own so you'd better learn. Also, many people just give up when they're shown vi for the first time, that's gotta give you a hint.

Paul R. Potts
Quoth Paul R. Potts on April 03, 2008 @ 1:23 AM PDT

I'm not impressed. It sounds like what you are really saying is "I only want to hire someone who thinks just like I do, and has the same background I do." That's a recipe for a team that is less diverse than it could be. Diversity avoids groupthink. You might even learn something from a hire with a slightly different background.

If the issue is whether the developer can make productive use of an editor, ask the candidate what he or she looks for in an editor. Personally, I look for:

  • Good tab/space management to conform to whatever the local standard is. Usually this means allowing me to use the tab key but writing files containing only spaces.

  • Automatic formatting, keyword highlighting. Preferably customizable so I can set up brace style, etc.

  • The ability to manage a dozen or more open files at once.

  • Really good search-and-replace facilities. Really good. On folders, or groups of files, whether open in the editor or not. Preferably with regular expressions.

  • Being able to split a pane to edit multiple parts of the same file can be very useful.

  • Really good support for multiple line endings. The editor should work fine with DOS or UNIX line endings (or even pre-OSX Mac line endings), warn me if a file comes in with mixed line endings, never let me write a file with mixed line endings, and let me convert files.

  • Assorted plug-ins to do things like dump binary files to hex, find accidental non-ASCII characters, etc.

Things I don't care all that much about:

  • Auto-completion. It rarely seems to do exactly just what I want and having things pop up often is a distraction, although it can be useful in IDEs configured for a given language if it really works well.

  • Elaborate navigation keys. As long as I can indent, outdent, do columnar selection, deletion, and insertion, comment/uncomment, and re-wrap a piece of code, I don't much care if I have key codes to do all kinds of navigation commands.

If I said my favorite editor was BBEdit, would you rule out hiring me? Or that I currently used Notepad++ on Windows, another GNU editor? I can get around fine in vi as well, but usually prefer not to. Really, I do use "whatever," and I assure you, I have written far more than three or four programs in my entire life. I think being able to adapt and get productive with different tools for different jobs is worth far more in an employee than religious convictions about editors.

Brian
Quoth Brian on April 03, 2008 @ 1:36 AM PDT

Of course the question doesn't stop at "What's your favorite?" Anyone who can qualify their answer with sound reasoning would be fine. Anyone who can show they are aware of the alternatives. The point is whether you care about the tools you use, and know about the alternatives, and know what a difference in productivity the right choice can make.

Would I care about the brand of hammer a carpenter used? No, but the difference in text editors is more than branding. I would care if the carpenter only had one old rusty screwdriver and tried to use that single tool to build a house rather than have a toolbox with an array of proper tools.

borlak
Quoth borlak on April 03, 2008 @ 1:43 AM PDT

if they mentioned 'vi' and didn't know of 'vim', they should be at the top of the list, for reasons beyond the scope of this comment.
also, my answer would have been without even a thought "I suppose you want me to say VI, but..."

Albin
Quoth Albin on April 03, 2008 @ 2:02 AM PDT

I usually ask this question too, and you need follow-ups depending on the answer. I had someone answer vim, so I asked "In vi, how do you move to the end of a file?" - Blank stare for a bit, then "I just scroll down to the end." No, thank you for playing... you don't really use vi.

If someone uses emacs, you can ask - "Can emacs simulate vi?" :-) An long-time emacs user would know the answer even if they do not like vi.

I also like to ask how to debug programs. That can lead into choice of debuggers, expertise with those debuggers, maybe they switch to an IDE, put in lots of print statements, how much test code they write, etc.

What also tells you a lot is... what is your favorite (or top three) programming languages and why?

diogo
Quoth diogo on April 03, 2008 @ 2:07 AM PDT

What if the guy answers "ed"? And he can actually do stuff in ed? Than YOU are out of a job, because the guy is God.

vilaca
Quoth vilaca on April 03, 2008 @ 2:09 AM PDT

sorry diogo, GODs use >copy con filename.txt

:D

Chris
Quoth Chris on April 03, 2008 @ 2:15 AM PDT

What about nano? I love nano

Jim Thompson
Quoth Jim Thompson on April 03, 2008 @ 10:33 AM PDT

I use "cat > filename" as my text editor.

adam brewster
Quoth adam brewster on April 03, 2008 @ 12:23 PM PDT

I prefer not to discuss religion in the workplace.

ph0enix
Quoth ph0enix on April 03, 2008 @ 1:14 PM PDT

Sorry but if you have enough CPU/RAM power Visual Studio puts everyone to sleep.

I love being able to scroll through text without moving my fingers off the home key row but that's where it stops for me. Never tried emacs so don't try and teach it to me now. I'll use notepad if I have to over having to learn something new.

Don't just judge on the basis of what a person uses for text editor. If he uses vim and you can only provide him with edit.exe for your programming project, it's not fair game.

I think nano is a great middle ground between GUI text editors and command line.

Michael
Quoth Michael on April 03, 2008 @ 5:55 PM PDT

I believe everyone who uses vi most probably has a deep knowledge of linux, since on many linux systems, especially servers, it's the only available editor. It's a great programming tool, too. If you know it.

This doesn't mean however, that you can't get a good programmer using other oss. Think of a programmer who did much assembler programming in dos and nt32. He will have a deep knowledge, but most possibly he won't be using vi..

What interests me: What are you using to write xml ? Even for this task I'm using vim with some plugins, but I guess there are better tools.. ? (xml validation, xpath, .. )

Miklos Hollender
Quoth Miklos Hollender on April 03, 2008 @ 7:45 PM PDT

I'd reply FAR Manager. Code coloring, bracket matching, easy vertical selection, but the point is that it's part of a Norton Commander-like fast, lightweight file manager. For me to navigate around files quickly is more important than the editing of text. (This actually discloses that I tend to do many small fixes in many files around rather than to spend an hour editing the same file.)

Gabriel C.
Quoth Gabriel C. on April 05, 2008 @ 8:47 AM PDT

I write code in a whiteboard, take a picture of it and scan it with OCR

Ben L.
Quoth Ben L. on April 07, 2008 @ 4:15 AM PDT

Probably the most telling answer would be "I use whatever". That's a clear sign that the person hasn't done enough coding to develop a preference. And you will develop a preference. The text editor is to the programmer what paint composition is to the artist.

Ivar Refsdal
Quoth Ivar Refsdal on April 08, 2008 @ 9:12 PM PDT

You probably want to check out the Firefox Addon It's all text.

I wrote this "from" Emacs and Gvim. Whee.

(And hey, edit.com can handle unix linefeeds and save it properly as windows' linefeeds.)

Martin V.
Quoth Martin V. on June 27, 2012 @ 11:09 PM PDT

Quoth da on April 03, 2008 @ 4:23 AM PDT

I've usually asked this question a little bit differently: "Tell me the keystrokes you would use to move a section of code from one file to another using your favorite editor."

Uh huh...?

The point is to see how quickly they can just spit it out:

Yeah: "spitting it out" faster makes any nonsense really look so much better ;-)

cursor to begin....... With IDE users, you often get an explanation using the mouse - which is understandable.

Lame! You all have no clue. I am using a trackball (forget mice and keyboards! ... and those guys using them ;-)

But I've always found good programmers will learn the keyboard shortcuts and prefer that to using the mouse.

I'm quite confident that you will always "find" what you wanted to find: you all seem to be in the big class of people who never have any difficulty to confirm their favorite Theory of Everything. You all believe what you want - no matter whether it's making any sense ... sigh :(if only you could suppress your urge to keep us posted on the doctrines of your current pet "theory" a little better :)

Martin V.
Quoth Martin V. on June 29, 2012 @ 1:05 AM PDT

Sigh ... why can't anyone find a really good interview question? Allowed to be hard in case you really want to be selective. But should reveal something about a candidate's knowledge, ability or both - at least if (s)he was able to give a good answer.

Ok, here goes:

If you have a random generator that can pick really good random integers out of any given interval, what would be your favorite algorithm that creates a random K-tuple out of N elements by calling the random generator exactly N times? Note that, in the long run, each K-tuple should occur with the same likelihood.