views:

482

answers:

8

Hi All - I am interviewing senior developer candidates and would like to have them think through a design problem as part of the interview. I would like something that involves front end, middle, and database. It should have some a data modeling challenge and more. What do you think?

A: 

First of all, ask yourself if the job itself requires this skill - will programmers actually be responsible for doing data modelling. I've sat in so many interviews as an interviewer and interviewee where the most pointless problem-solving and paper-programming tasks were set. The best way to interview a programmer is to sit down and do some programming with them.

Corehpf
A: 

The one that I was asked was: "How would you build a netflix-style web app, from start to finish? Assume it will have to support the same scale that netflix currently supports."

RibaldEddie
A: 

Give an overview of a design for an application for a salesforce out on the road where orders will be entered by individuals from mobile devices.

The system should have

  1. a backing database
  2. web application
  3. rich client app with a local estimating engine

How would you modify the design to handle people being disconnected, so they can still enter the orders and reconcile them later?

The answer could include:

  1. implications for the database
  2. design of the local client
  3. user interaction issues

Now ask where this system has security vulnerabilities and how the offline requirement affects those vulnerabilities.

That should be enough to make anyone sweat or the truly creative launch into a good design session.

If you really want to stress them, keep interrupting with OK, I get that, please move on to the next point

Andy Dent
i am thinking if someone asked me "Now ask where this system has security vulnerabilities and how the offline requirement affects those vulnerabilities" i will really sweat ...
iceangel89
"I get that, please move on to the next point" is really BAD... btw mind to say some of the security vulnerabilities and how the offline requirement affects them?
iceangel89
A: 

I think Andy has the basic framework, notice he already has some moaning going his way ( which I agree with btw ) take it as a "creative launch into a good design session." and don't stress them using: I'm OK, you're OK but you're design is not OK unless you really know how the design works and how to program and have a good bullet proof proof of why the design is flawed. And another level to consider is don't throw the Ph.D. Doctoral Thesis "Any Question" style unless you have an actual Ph.D. across from you in the interview chair. Master's level and lower do not handle the stress-or correctly and the true Ph.D. will nail you to the floor if you try to weasel through the interview with a cheapened form of that .... big time.

It's the ask where this system has security vulnerabilities and how the offline requirement affects those vulnerabilities. where Andy shows the value of field experience, you've got the entire potatoe right there and he gives you the plush carpet setup to miss that baiting you with how to stress the interviewee - like interviewers don't know how to do that. As always, the greatest risk comes from within ~ but no candidate will tell you that.

Unless they have 50,000 hours field experience.

@iceangel89: What do you do if you are being setup to take someone else's fall?

{ If there's fifty million at stake they sure won't mind giving you the business, and I don't mean their business. }

Nicholas Jordan
A: 

I don't think it's always the best choice to do a case like this. This will only work for senior people who also have to be used to deal with new contacts (consultants perhaps?). What you're in fact testing is not how good someone can design a system, but how good someone handles stress and/or can bluff his or her way through a conversation.

I've had my share of interviews from both sides of the table and one technique really caught my attention. I know that both Avanade and Microsoft use (or used) this for technical people.

They give then non-technical riddles that they can solve by thinking logically. You should be aware that it is not about getting to the right answer, but it's about How one got to an answer that tells you if someone is good at solving problems. And that's what programming and designing software is all about, isn't it?

Programming languages and technologies can be learned. Talent to solve problems can't be learned.

Jonathan van de Veen
A: 

According to me a senior developer who want to involve in designing of a n-tier architecture should know about

  1. What is design pattern?
  2. Do you know UML? (If object oriented programming)
  3. What is the difference betwwen analysis and design?
  4. Have you worked on loosly coupled software architecture? if yes how you achieved it?

and so many..

Jaswant Agarwal
A: 

Doing this will show you if the candidate can design such a system in a few minutes; with emphasise on "few minutes". This is most likely not the scenario he/she will face when working for you, so it might not tell you what you need to know.

Why don't you do it the other way round? Ask them to tell you about the design of an application they have designed in the past.

Carsten
A: 

Thanks everyone. This is a great discussion. I really like the idea of posing a simple design problem, let them design it, and then ask about security and scalability. I plan to follow all this up with some simple coding challenges as well. I really don't want to stress candidates out but I also want to find good people.

Dave K