These are some of the guidelines that my team and I follow
What makes a Lead, Senior or Software Engineer?
It’s not the years of experience. It’s not full-stack development. It depends on the role at the company. If you are strong in a few areas, you are a Software Engineer. If you are strong in many areas, you are at a Senior level. At the Lead level, you should have a broad knowledge of your domain.
You could have two decades of experience in a language. If the team writes their algorithms, creates their pipeline, deploys their stack, maintains their own blue/green deployments, expect to know many of those if you are applying for a Senior role.
What I don’t do
- I don’t do pre-screens with HackerRank or any online tool.
After a few candidates take it, the questions start popping up on StackOverflow and other places. Yeah, many of these sites have a library of a gazillion questions. I don’t bother to keep up with what’s leaked and what’s not.
- I don’t ask candidates to do a homework assignment.
I detest them. I was interviewing for the position of Engineering Manager. At one startup, they asked me to write a set of REST APIs to do CRUD operations on a social media platform. The guideline was to do it in 2 hours. Yeah, right! I was rusty but I figured out how to configure the build manager. I wrapped my head around the arcane MVC framework they wanted me to use. I researched a library to interact with the social media platform. I got the basic thing working with unit tests and all. I had taken a whole weekend by now with my kids screaming around me. So did I submit it? No way! I needed to figure out multi-lingual support, Unicode, edge cases, performance, scalability, deadlocks. It was a mind game and I just wanted it to end. I submitted it close to the 5-day deadline, passed and they invited me onsite.
- I don’t ask people to design frigging Twitter or Divvy or Google.
C’mon man! If I rocked at this, do you think I would have applied for a position as a Software Engineer? Don’t you think I would be one of those people at some mega consulting company drawing pretty pictures for clients? Or even running my own company? However, if you are applying at a senior level, expect system design questions. We design a lot of services so this is a critical skill.
- I won’t ask for an NDA for my interview
True story. I signed one when I was interviewing so I can’t talk about it. Kidding — I signed it but never went to that interview.
What I do
First, I tell them why I joined this company and why it matters to me.
I put them at ease saying there are no right or wrong answers. Only trade-offs. I ask them to speak out their thoughts. You’ve got to bring the candidate in the right mindset to solve any problem. Yeah, an interview is not the end of the world. My logical mind knows that but that’s not how I feel. When I interview, I am anxious, tensed and feel judged. You bet the candidate feels the same way — be compassionate.
This is my thing — I show the candidate a working piece of code in an IDE. All ready and working. Just one screen of code. I ask them to do a code review and see how far they go. I encourage them to tweak the code and see how it works. I am liberal with my hints. Dude/Girl, this is not a torture chamber in a windowless huddle room!
I do expect candidates to know simple data structures. This is basic to writing any code.
What my team does
I have over thirty engineers across three teams available to interview candidates. Sometimes we do six interviews in a day. So we want to keep it structured and objective. Our recruiter walks the candidate around the office. They give a short talk about what our division is about. Then we give a very basic twenty-minute coding exercise to our candidates. We leave you by yourself, a working IDE/environment and allow you to use the internet. Like you would normally code.
Our engineers ask about keywords on your resume. Be prepared to answer if you worked on them and why the team chose something.
As a Software Engineer, expect to critique, write or finish a simple algorithm. Listen to the hints the engineers give you. Think about simple data structures. If you are thinking complex data structures, you are on the wrong path.
Brush up on your basic SQL. No, we won’t ask you to write a stored procedure or optimize a two-page query.
Be nice. Nervous is okay. Sweaty is okay. Don’t get mad or upset if you can’t figure something out. We are ready with hints for you and won’t let you languish in a long spell of silence and misery. We’ve all been there recently and we don’t want you to suffer.
At the end of the interview, you should feel like you rocked it. If not, I need to work at getting better. Ask for my business card at the end of the interview and let me know your experience. I want to know how I could have made it better for you.
If this sounds reasonable, please consider joining my team via our career page. If you are not local to Chicago, I will fly you in and provide lodging. If you are on a visa, I am okay with that. If consulting is your thing, drop me a line and I will work directly with you.