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.

It seems that nowadays most decent developers jobs are accompanied with some sort of programming challenges that precedes the real interview: usually in the form of a non-trivial project requiring more than just a test about one or two programming concepts.

Previously, it seemed companies requiring such things were rare, and that the most you'd have to deal with is a 30 minute to an hour-long programming task. But now, the longer pre-interview challenge seems to be adopted in many companies, and it seems to be expected that these challenges are to be completed in one's spare time.

How do I adapt to this type of pre-interview screening? Should I be spending a lot of time (sometimes a half a day or more) on these challenges for just one company, or is this too inefficient and not what is expected?

share|improve this question
2  
1  
How hard is it to solve a programming question. In theory you are not going for a job outside of your skill set, so any question to verify your skill, can be solved by you? –  Ramhound Aug 9 '11 at 12:07
    
@Ramhound I'm talking not about a question, but about challenges which involves creating small (not often small) but real projects. Which is different from answering a question even in form of writing code. It often involves test data population, database interaction, business-logic layer, representation, other stuff. Like a real-life project, but not very big. Technically, yes, it tests your skills. –  user1449 Aug 9 '11 at 12:16
1  
I mean challenges that are described by their givers as "couple of hours challenge" which actually take at least half-day to implement, which means it will require a couple of days of work if you also have a full time job. –  user1449 Aug 9 '11 at 12:27
2  
I'm not trying to invalidate your point that they're annoying, but it's a buyers' market currently meaning there are plenty of people who want jobs and few jobs so you have to compete for them. That said, I do not condone this practice of pre-interview tasks, and would not use them myself given the choice. –  configurator Aug 9 '11 at 15:14
show 3 more comments

4 Answers

In the past, fewer people lied about programming experience. They didn't have to because employers were willing to hire generalists. Today, they want very specific skills, and few people can master all specific skills, so it becomes more tempting to embellish.

You should practice solving programming problems. For example, I was asked to write a URL shortening service (like bit.ly) for a job interview earlier this year. That is a nice bounded programming task which shows if you can solve web application problems as well as basic programming problems. I solved it, and deployed the solution. (The employer liked it as well as my code but rejected me because they found an equally qualified employee in their city.) But it was a good practice app for me.

Find a number of simple bounded problems and practice building solutions from scratch. You'll get good at it.

share|improve this answer
add comment

It's a difficult question to answer because you never know what they expect from you with those programming challenges.

Do they want you to realize in the given time a perfectly polished increment of software that can be used out of the box, regardless of whether it solves the entire challenge ? Do they want you to demonstrate your skill in architecting all the application layers, possibly integrating frameworks for ORM, dependency injection, etc. ? Are they interested in your problem-solving skills and your ability to come up with a clever/elegant/robust solution ? Do they want you to care about the performance of your code ? Are there deployment requirements as well, meaning you have to provide an installable solution containing all that is needed from DB to the actual app to whatever framework you used ?...

I got that kind of challenge when applying for a job once but it was a totally different situation. They sent me a bunch of files with work to do, it was actual code of theirs so it came with a non disclosure clause. The code and the instructions were rather obscure and they wouldn't answer questions I asked by mail, plus I felt like I was being outsourced a small part of their work to, so I finally gave up.

A good way to get used to these challenges would be to practice with programming puzzles, Code Katas and the like.

I'd also recommend providing a minimal set of unit tests for each challenge because it's what allows you to come up and say "my solution works, and here's how I can prove it".

share|improve this answer
add comment

PRACTICE

Practice everything you know and learn nothing new unless you must. You do not know what they will ask you so your best bet is to PRACTICE.

share|improve this answer
add comment

Think of a pre-interview challenge as the first question in your interview.

If you're an employer posting an ad for a position online, you're likely to get dozens or hundreds of applications. How do you know which applicants are serious about working at your company, which just want to hone their interview skills, and which are applying to dozens of jobs just to see what turns up? How do you know which applicants know how to apply the skills they claim on their resume and which don't? Asking applicants to spend a few hours on a pre-interview programming problem is one way to find out both who's serious and who is likely to be qualified.

If you're an applicant and you're truly interested in a particular job, then you can think of a pre-interview task as a great opportunity:

  1. Just spending time to complete the task will show that you really do want the job.
  2. Spending some extra time polishing is an easy way to make a great first impression.
  3. You move yourself out of the (often large) applicant pool and into the (much smaller) candidate pool.
  4. There's much less pressure. It's so much easier to think clearly and focus on the problem when you're at home and can take as much time as you want than it is when you're sitting in front of an interviewer trying to look good, not screw up, and solve the problem correctly in a short time.
  5. You can strut your stuff. What applicant wouldn't jump at a chance to put his or her best foot forward?

So, how should you "adapt to this type of pre-interview screening"? Do some research before you apply. Know something about the companies and positions to which you're applying, and try to apply only to jobs that you want.

share|improve this answer
    
great answer, thanks –  user1449 Aug 23 '11 at 9:58
add comment

Your Answer

 
discard

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