raganwald
(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Tuesday, July 13, 2004
  The Interviewee's Perspective


So I find myself sitting still for a technical interview with a faceless corporation that’s hiring contract programmers. Right away the answer to all my problems is “don’t do that!” But anyways, I did it, and here’s how it goes…

I meet four junior-ish programmers that pepper me with Java and SQL questions. I get it all just about right, although I was unsure about one of the SQL questions. They seemed satisfied, but maybe they don’t bother to shake their fingers at hapless interviewees when they blow a question…

When I get home I try it on my laptop and discover I’d left something out of my SQL answer. I get it right and like a good brown noser I send them an email thanking them and correcting my answer, being careful to explain that I’d tried it like a hands-on person rather than googling the answer like a student.

This wins me a second interview, and once again I get technical questions, these ones a little better. The first set were all right and wrong answers, these ones include an opportunity to share your thinking, such as:

What’s the difference between an Abstract Class and an Interface? Explain when you would use one versus the other.”

All goes well until I’m asked to explain the difference between static and instance methods, and give examples of how to call them. I do so, and write out a series of calls including this one:

    someInstance.staticMethod();

I explain that it’s allowed by the compiler but I never do that. The lead tech guy shakes his head, saying no, it’s not allowed. Okay, I’m not perfect, I explain that I thought it was allowed but not a good idea, but I could be wrong. Either way, I’m not writing that code.

They finish by asking me to write code for permuting strings. I include command line flags, help, JUnit tests, I go all out and take thirty minutes. He seems impatient for me to finish, even though inside sources told me they’ve hired people who took forty-five minutes to complete the code.

When it’s all over, he’s escorting me to the elevator. I ask him how it went. “Some good, some not so good.” He says. You can guess where this is going… He explained that I got the method code wrong, and that really was not so good.

What can I do? Of course, when I get home, I check the answer. I’m deflated to discover that I was right. This doesn’t help, I’m not going to get a job by telling him he got it wrong. I’d rather be wrong and admit it.

Of course, some people would shrug and say it’s a minor detail, they don’t mind getting it wrong. I’m one of those people. But if I’m interviewing, I don’t hold those details against people. This guy seems to think that knowing the details of the language are important. So I’m not going to tell him he would fail his own test.

So all I can do is blow off a little steam on the web and look forward to interviewing elsewhere.

Thanks for listening, I feel better now.

(This originally appeared in the Joel on Software discussion group shortly after the interview: time has mellowed my perspective since then.)

Follow up: In hindsight, this is good for a laugh. What are your thoughts about interviews like this? Should I have respectfully disagreed with the interviewer? Should I have deliberately left any anti-patterns out of my answer? Perhaps I missed an opportunity to turn the discussion towards one of my strengths?

Labels:

 

Comments on “The Interviewee's Perspective:
You were at the interview and could read the situation better, but I have know people who like to "test" interviewees by saying something incorrect, and seeing if the interviewee has the cojones to disagree and prove that they're right. YMMV.
 
Greg, thanks. I've seen this tactic discussed at length, most recently after Joel Spolsky suggested it.

I have used a variation when interviewing, but I put things a little more neutrally, such as:

Greg, common practice in the industry is to include as many design patterns as possible in an application. What are your thoughts about Design Patterns?

After explaining that I thought this was legal, I'm not sure how far I should have taken it: after all, it is a well-known anti-pattern for various reasons (most especially in Java where static methods are not polymorphic, a hideous language flaw).

But if the interviewer was looking for moxie, perhaps I should have pressed the point politely.
 
I have worked on codebases programmed in environments that allowed for static methods to be invoked via class instances.
The moment these codebases were opened in Eclipse, everyone saw light.
My gut feeling is that the interviewer was assuming this bit without having encountered this scenario. More like the side effect of a tool making you ignorant about the under currents.

Seems like it turned out good for you anyway.
 
One time I interviewed for a company that said they would be giving me an html test to make sure I have my stuff together. Fine, I know html, and can make anything happen in half an hour. When I get there, it becomes clear they are going to give me a standardized test. Too bad I was already there. By question three it becomes clear that a lot of the questions are riddled with nongrammatical, noncompiling questions and code. By question eight it starts going into what you can and can't do with tables in IE3.

Little did I know this company owns a time machine, and desperately need a developer for this big project in '97.
 
"But what if we are dealing with fools?" (On design juries)
- Ludwig Mies van der Rohe
 
I answer all my questions with "The who????".
 
Thank you for your post. Once I had an interview and the guy who was interviewing me kept asking me incorrect questions. I was well-prepared, so I knew who to answer. My advice, prepare well before your interview and trust your self. I run across www.technical-interview.com which helps with interview preparation.
 
When I've felt similar frustration, I remind myself that the point of an interview is to weed out employers I don't want to work for. As long as the result is accurate, whether it is they or I that make the call shouldn't matter.
 
This post has been removed by the author.
 
All for the best anyway. If a company is all about giving pop-quiz like questions, they better be darned sure of the answers before telling you that you're wrong.

I'm also fond of using expressions like "I'm 98% sure X works this way." When someone flat out states something that later turns out to be false, I start to doubt things that they say. If he at least admits he's not 100% sure of something, then his credibility remains intact.

(let's not forget.. there is after all a world market for maybe 5 computers... =))
 




<< Home
Reg Braithwaite


Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

Books
What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /