- Everyone needs to eat so let’s use that time to eat on the company dime and execute an interview.
- Eating together in a semi-formal place verifies the applicant is, in fact, not an asshole or sociopath.
- By not specifically testing on syntax(Refer to the Grobleski Rule) the interviewer can cox the applicant into showing off knowledge without the Minutiae of language.
- 99% of code CRUD screen related? Stop asking about bubble sorts as compared to quick sorts as neither will tell you much about writing CRUD screens.
- Will your FizzBuzz test really reveal a talented coder or will it just highlight how socially awkward they are.
A Better Way
Over the years I have interviewed hundreds of people. I have tried many different styles. Whiteboard, rapid-fire questions, code-in-front-of-me or some variation of all three. What I realized is that 99% of the code written is CRUD related. If you’re looking for a lame titled developers such as a $language hacker, $uperstar code junkie, JavaScript Magician, Code DJ or my personal favorite Code Artisan then you may be aiming a little high for someone who simply writes CRUD screens.
Interview on the the things that matter.
On January 2014 I was flown down to meet them, then CIO, of a company called ChenMed for their Sr. Solutions Architect position(Whatever that means). My interviewer was Oliver Degnan and he showed me the correct way to root out talent. He brought with him Manoj Nair who was acting as some sort of technical adviser and or solutions architect. I will admit I don’t know much about these two men other then they knew their shit.
The interview took place at a BoneFish grill which I found super odd. So they flew me down, put me up in a Hotel and then only agreed to interview me, not at their office, but at a chain fish restaurant?
A week before the Interview I managed to find the ten variations of the job description that they had posted over the year they had been trying to fill multiple positions. Every variation had been written and rewritten by several ambulance chasing type technical recruiters(Notice the disdain and hyperbole expressed in a single sentence). I noticed that every variation expressed an emphasis on design patterns.
While I do know my patterns I still created a bunch of flashcards and ended up over-studying before the interview. Asp.net MVC, AJAX, and C# were already second nature to me but I still ended up adding 500ish flash cards to my daily study regimen.
Note: I still use flash cards, on the weekly, to memorize any language or concepts I am studying that month. You know…..like someone with OCD and an obsession with software development.
So let’s skip to the interview. We started with some small talk as in Smalltalk the programming language developed the year before I was born. It was at this moment I realized that the table was covered in a brown disposable paper tablecloth as this was a fish restaurant. Oliver began drawing on it to help better explain what he was trying to accomplish.
He then handed me the pen and asked me to write code to;
- Create rudimentary HTML to Display Data.
- Execute a GET request using AJAX.
- Create a Web API ActionResult for that GET request.
- Create a Data Access Layer Class that actually connects to SQL Server via Entity Framework.
- Draw a table design to hold some complex data.
Every step of the way they dug into what code I was writing and why I did it this or that way. This was generally not syntax specific but generally how I would go about something and why. They also asked how each step could be done differently and in what language or software I could do it in. They ended up spending about 45 minutes pummeling me with JavaScript, AJAX and C# questions.
So let’s try to understand what was accomplished with this Technical Lunch Interview
- Everyone needs to eat so let’s use that time to eat on the company dime and execute an interview.
- The disposable paper tablecloth at this fish restaurant was perfect for drawing on for each concept that they were testing for.
- Eating together in a semi-formal place verifies the applicant is, in fact, not an asshole or sociopath. Which is my number one requirement as I have worked with both over my long career?
- By not specifically testing on syntax(Refer to the Grobleski Rule) the interviewer can get the applicant to show off her knowledge without the Minutiae of language. To be fair I am useless without intellisense.
Only A Non-Coder would interview on exact syntax. ~Dave Grobleski
So ask yourself some questions about how you interview someone you are hiring to design, develop or code your software.
- How much does it cost you to get 1-3 developers in a room to interview your candidate(s)?
- Does your current interview process end up being a pissing contest where your developers end up showcasing their knowledge rather than the candidate’s knowledge?
- Will 99% of these candidates job be CRUD screen related? Stop asking about bubble sorts as compared to quick sorts as neither will tell you much about their ability to write CRUD screens. If this is a web developer position then ask more NPM, GIT and Angular 4 questions and less binary search questions.
- Will your FizzBuzz test really reveal a talented coder or will it just highlight how socially awkward they are.
How many times have you been asked the difference between an Abstract class and interface by a technical recruiter/ philistine? Asking tired coding questions by non-coders is just silly.
You are trying to figure out which candidate..
- Has a good work ethic
- Takes Pride in their work
- Has Coding Skill in the area your looking for
- Has Experience and Depth to solve your problems
The bottom line is that a technical lunch interview will better help you ferret out good people then your old tired conference room interview. A coder knows another coder as it takes one to know one. Conference room interviews almost seem designed to impede casual nerd-to-nerd communication. You aren’t hiring for a sales position. Sometimes interviews, as with software development, can be more like art and less like science.
- Choose a restaurant that is fairly quiet
- Bring a small whiteboard and a pen.
- The interviewers should be at least 2 highly technical people and one project manager.
- Order food and get to know the candidate.
- Ease into a few softball questions to figure out the edges of their knowledge
- Ask the candidate write code on the whiteboard in a general way.
- Ask tool-specific questions like npm commands or some other artifact about Visual Studio or VS Code.
Try doing 5 Technical Lunch Interviews to try to understand the real value of them and then contact me on twitter if you have any comments or questions.