How Stack Overflow hires engineers
At Stack Overflow, one of our main missions is to close the gap between companies and developers during the hiring process. Though you may know us primarily as a Q&A site for developers, we are also a talent platform, and are in a unique position to connect developers with companies and jobs that they are best suited for. Here is our take on hiring great developers, especially for those that are finding themselves with a new influx in qualified applications during the changed situation.
What makes Stack Overflow unique?
More than anything else, we know developers. As one of the most ubiquitous developer-centric sites with one of the largest user bases, we know developer culture. Thanks to the data from our Annual Developer Survey we know what developers want from an employer and what technologies are trending. We also know the hiring market and have seen many of our Talent clients find success in addressing developers with content and information that speaks to them.
While the current pandemic has slowed hiring, even in technology, it hasn’t stopped. Companies large and small—including Stack Overflow—have been forced to furlough or even lay off workers in order to place themselves in the best position during uncertainty. Suddenly, there’s a whole new influx of candidates, so competitive openings may be flooded with applications, requiring more thought about how you refine your choices.
As an employer ourselves, we at Stack Overflow have always had strong brand recognition amongst developers, and so we’ve seen more applicants than our company size might suggest. In this post, we’ll explore the learnings from our Talent platform and also shed some light on our own hiring practices.
Our approach to recruiting:
- Transparency: Our process is designed to be transparent. We believe that both developers and hiring managers can benefit from more transparency: developers can learn what to expect in similar processes, and hiring managers can pick up useful information and ideas.
- Full team involvement: We also have the benefit of being a relatively small company, with a team of around 300 people distributed around the world. This smaller size allows us to include team members at all levels in the hiring process, which we manage by conducting interviews remotely, and using Greenhouse to track candidates.
- Brand identity: Because we are well known among developers, our brand identity is pretty strong, which attracts many inbound candidates. However, we also believe that active sourcing is incredibly important when it comes to creating a diverse, specialized pool of candidates. If your employer brand amongst developers isn’t as strong, it makes sense to target passive and active jobseekers more directly. Make sure you focus on what makes your company a great place to work.
For instance, consider these results from our survey, where we asked developers about the most important things that factored into choosing a company and a potential position there.
As you can see, factors like working with a preferred language or technology, opportunities for a flexible schedule, remote work, and company culture are all important to developers. One of our goals is to help companies consider what they are doing, or could be doing, to focus on these factors and make themselves stand out in the crowd.
- Having a clear idea of who we’re looking for: At Stack Overflow, we focus on a specific set of criteria when looking for developers. We look for developers who are passionate and excited about their work and the field, who like to take deep dives into new technologies, who learn quickly and solve complex problems efficiently, and who – put simply – get things done. Our hiring process looks specifically for those qualities in a candidate, both in terms of past projects and proven track records, and in terms of how they present themselves and their work.
At this point, you may be wondering, “Okay, so we know what informs your approach. But what exactly does the Stack Overflow hiring process look like?” Here’s a breakdown of our hiring process. Note: since 80% of our engineering team has been remote even before covid, this process including interviews, is done remotely.
- Resume review: Our first step in the hiring process is a review of inbound applications. Because of our brand recognition, we get a lot of inbound applications from a wide range of candidates. We specifically review and screen inbound resumes for our target qualities (as mentioned above, experience, technical depth, passion, and the ability to get things done).
- Initial screen: For all candidates, we conduct an initial phone screen to check and expand on how the candidate emulates our target qualities, and to set expectations about the rest of the interview process.
- Code screen: All candidates are then given a 30 minute code screen with an engineer on our team. Every engineer on our team conducts these code screens. They basically establish whether or not the candidate can actually code. If there is any doubt on the part of the interviewer, the candidate is turned down.
- Full interviews: If candidates pass the initial screen and the code screen, they move on to three full interviews.
- Algorithm interview: This interview is focused on a candidate’s technical depth.
- Architecture interview: This interview is focused on a candidate’s ability to build something end-to-end.
- PM interview: This interview is focused on PM and developer relationships.
- Manager interview: At this stage of the process, candidates are invited in for a manager interview. Before this interview, we determine a team match for the candidate. During the interview, we sell the candidate on the company, on their intended team within the company, and on the position. There may be a second code interview at this point, but only if it is deemed necessary to test for specific skills. If the VP or CTO have any outstanding concerns after this interview, the candidate may be invited back for a follow up interview.
Since COVID we have moved from a 40% to a 100% remote company, but we’ve always been focused on delivering a great remote experience for candidates. We believe in hiring smart people and empowering them to get the job done. Regardless of where they are located.
If you came across this looking for a job at Stack Overflow, you can find open positions here. Want to see what jobs are out there from other companies? Check out Stack Overflow Jobs – a job board for developers, by developers.Tags:
can’t see the graph text with the dark theme
That’s a lengthy process, OMG! Are you sure there’s no other way to optimize the technical interviews and still filter quality candidates?
The way I see it, recruitment processes work both ways: the company gets to know a candidate in detail but the candidate gets to know the company too. Lengthy interview processes are usually bad perceived by candidates because it requires them to invest many hours (or days) into a company for FREE, with no guarantee of receiving a paycheck at the end of the process. Plus, there are so many stages and tests in there that show an unnecessary high level of bureaucracy. That realization is scary because that level of bureaucracy might be part of the company culture. On one hand, companies say they like people that “get things done” but on the other, they don’t have an efficient model to help their employees get things done.
I’ll give you an example. The other day a company called me to invite me to participate on their recruitment process. The first stage of the interview was a coding exercise that required 6h to 8h of coding. What?! That’s just for the first stage, that’s ridiculous! The entire interview process should be able to reveal everything you need to know about a candidate in less than 6h. I mean, I sat beside an old lady on a bus once and knew everything about her life in the first 30min of conversation. *sight* Jokes aside, my opinion is that if a company needs more than 6h-8h total to interview a candidate then that recruitment process needs to be reviewed urgently. People are wasting time asking irrelevant questions.
The Tech industry might be the only industry that enjoys torturing candidates for hours and hours. It’s completely unnecessary.
Couldn’t agree more. CV, initial phone screen, code task / interview, 3 separate technical interviews, then an on-site manager interview?!
I’ve had invitations to similarly long recruitment processes – and I’ve turned them down almost universally without a second thought. I don’t mind a couple of reasonable interview stages (especially if one is a phone call) & an evening on a quick take home project, but beyond that is really starting to push it for me. I realise that as a company SO must receive a boatload of applications and therefore need some way of filtering those down – but this process is far more likely to filter out good, rather than bad candidates right off the bat IMHO.
It’s insane and narcissistic, that’s what it is.
It’s very lenghty, I agree with you. I personally would not invest so much time into it. I’ve discontinued the interview process in the past with a few companies when I realized how much time they wanted me to invest into preparation and the process itself. It’s time lost when there are companies out there that do it much more efficiently. On the other hand, it’s Stack Overflow – and as they mention their brand identity is pretty strong so they probably still have enough applications of people who are willing to go through the entire process.
What it really upset me is that after step 4 of the process (1 week later) I got an automated email from them saying like “Thanks for your time, but we are looking a different profile for this position”. Are you kidding me? After 4 steps are you saying me that my profile doesn’t fit the position? It’s totally fine if fore some reason I didn’t get the job, maybe in my last interview with the team on step 4 I said something wrong, I really don’t know. But I NEED THE REAL FEEDBACK.
Companies: if people give you FREE time to be part of your process, at least give a proper feedback to them if for some reason your are declining to work with them. You don’t need to be polite about this. Say the truth.
The text on your bar chart doesn’t show up.
Q1 – Is code screen still required or the recruitment process easier or shorter when candidates already have a high-rep stackoverflow or other accounts?
Q2 – Is the recruitment process harder or are candidates rejected when they are or were suspended in the past on any of the stackoverflow-sites?
That’s quite a convoluted hiring process for someone who might get to develop thanks sharing (https://meta.stackoverflow.com/questions/398367/feature-test-thank-you-reaction) 🙂
Dark Theme is good but certain optimization should also be required…I don’t know whether it is done intentionally or not but I am not able to see the text return in the above graph chart.
Just updated to a more dark-mode friendly graph! Thanks for the reminder
I’m always wary of calling something stupid, when the other person has obviously thought about it far longer than me, and is far more invested. I’ve also found that the people whinging about long interview processes are not team players.
Unless you’re paying me for what looks like days of my time spent on unnecessary hoops to jump, I won’t even consider engaging in this process. Seriously, modernize that thing. This is horrid.
By the time you’ve contacted me to organise my sixth(!!) interview I would have already collected my first paycheck from somewhere that values my time.
@T.Sar. Yeah, same here. Companies like this put themself into an abuse position in front of candidates. If a company try to abuse you in the hiring process and do not show respect for candidates, you can’t expect to be a good place to work in.
I was expecting an approach to hiring that would break from the trend, but I was disheartened to see that SO has tripled down on the tiresome and borderline abusive ho-hum. There has been much said about hiring practices such as these, but one concern that is usually overlooked is this: are you actually hiring the best candidates? Are there excellent candidates out there who will self-screen out of your hiring pool simply due to the arduous nature of your hiring process? I ask this because I have seen post after post of developers saying they don’t bother even applying to such companies. Yes, this is not exactly a rigorously vetted set of data, but it should at the very least make you wonder. I, myself, cannot spare the personal time to write a 6 hour test, freshen up on common algorithms and design patterns, practice common interview responses, and then give several interviews. Firstly, I would likely not even bother, but if I did, I won’t actually have the time to put up a competitive showing, since preparation is crucial in selections of this kind. Interestingly, as I get more experienced, my personal life becomes more complicated and time-bound. I would love to see some sort of study done on the quality, personality, age, and family status of teams that result from lengthy hiring processes such as those outlined in this article.
In ending; the data you yourself posted shows developers value highly office culture, flex time, family friendliness, and a number of other ‘soft’ attributes of a job. Your hiring process gives the exact opposite message. How many great developers look at the time investment you expect, and don’t bother? What kinds of developers remain in your candidate pool?
Unlike most people commenting here, I don’t have an issue with the amount of time a candidate is spending on your process – on the contrary, I would be highly skeptical about working for a company that hired people based on ~2 (?) hours of interaction with them, as it seems most of the people here want.
My main issue is how you’re spending this time. A few quick points:
1) Why the phone screen before the code test? The code test should be highly automated and should take very close to zero time for anyone in your organization. So many candidates that look great based on their resumes and have a phone call can’t code at a high school level – you are completely wasting the time of your phone screeners.
2) Algorithm interviews are largely useless, outside of the basics. They measure how good you are at interviewing, not working. Do you want people who are good at studying things they learned in college many years ago, or people who are good at software engineering?
3) Architecture interviews can be valuable, but only for more experienced candidates.
4) It looks like you have no “real world” coding in the interview stage, which I believe is the most useful predictor of success.
In short, the amount of time people are spending is fine, but the process is in desperate need of some modernization.
Unless this was my first job in the field and I was desperate, I would not sign up for this process either. Yes it’s insulting but mainly it’s unnecessary. As experienced developers, surely you would have gleaned some insights by now as to how to efficiently identify good developers. One resume, one interview, and maaaaybe for less experienced applicants one take-home technical task to be completed before the interview so that the applicant can talk about their thought process. And that task should not take more than 1-2 hours to complete.
Same old same old and getting worse by the day. Why do coders want to torture other coders? Every day goes by and it gets closer and closer to fraternity hazing rather than a job interview and you’re already walking in there with a degree, side projects, and for more experienced people shipped titles. But sure, because of interview prep companies using the scare tactic of possibly “making a bad hire” now the process becomes four days with the possibility of being called back to do it all again because Joe on the panel doesn’t like the cut of their jib or if they are a woman or possibly non-white good luck.
When is the last time the company has a big problem with the rank and file coders? It couldn’t be the CEOs buying yachts, the CEOs using investor money inappropriately, managers walking in the door without a clue about software, managers not listening to their employees, VPs taking advantage of subordinates, etc.
Here’s a secret, most people don’t get their job getting through one of these panels.
Wow, developer appeared in age of 30s will get cleared in age 40s. Kidding!
Lets make it simple. Please cut the lengthy technical round into short one like below:
# Give us a problem to solve, a web application or any other stuff.
# We can send you a git or http URL of hosted application on our server (Live running application).
# Check the quality of delievery if qualify then conduct the PM round.
Frankly I’ve enough work to do and same like me other developers are already occupied in their job. We would love to work for you as well if you make it short.
Because in the duration of technical interview I can deliever a whole project. And this whole wait an anxity kill me.
Believe me in my whole life I can’t qualify your interview. But one thing I am asure that give me a problem and I will give you one of the better solution.
I have an idea … why not add this question to your next developer survey to really see just how many developers hate this process and how many good candidates you are missing out on?
I just wouldn’t even bother. I don’t even care what benefits you offer. I don’t even care that you have brand identity. You don’t even bother to sell the person on the company until step 5. Smart companies will recognize that interviews are a chance to potentially market to future clients and employees and stop doing this nonsense. That engineer that you are making jump through hoops may have a company you want as a client in a few years.
If I have a bad experience these days, I post it on Glassdoor. If a company has a ton of negative interview experiences on Glassdoor, I’m not interviewing with them.
A take home test that takes a few hours and a talk with the manager should do it these days. Having non-technical HR screens are a total waste of time. If you have over a decade of experience as well as a large portfolio of projects you can talk about, you should have an offer inside of a week, tops. The rest of this is just a waste of time and money and designed to give useless employees a say in things they should have no say in. HR will “screen” front-end developers out because they don’t have 8 years experience in a JS framework that has only been around for 7 and did not have widespread enterprise adoption until a few years ago. It is absolute insanity.
I find the code screen ironic.
Thanks for sharing this blog. This blog perfectly shows that the ability to select the right talent for the position is critical for achieving the company’s business goals. Applying proven recruitment strategies and best practices in talent selection will ensure that your company can hire the talent needed.