I’m no longer working at Stack Overflow (I worked there for 4.5 years), and by the time I left, the interviewing process had suffered some modifications. Even if this article would have helped a candidate prepare for an interview, keep in mind that the company is a very different one from the one I joined.
Also, while I enjoyed the interview process as a candidate, I don’t think this interview process is a good one at attracting good candidates. If I were to go through this process today, I would… let’s say “have feedback” for the company :)
I just add this disclaimer because on a bunch of interviews I did while still there, people brought up that they read this. So:
- Don’t assume this is what the Stack Overflow hiring process looks like today. You should ask about the process to your recruiter.
- I no longer think that “at every step of the way that the experience was super valuable for anyone interested in how great companies work”. The interview process I experienced as a candidate selects for a specific type of people (that’s not necessarily the best people for the job). I’m glad Stack is working on tweaking it.
- Stack Overflow 2021 is very different from Stack Overflow 2016 (when I joined).
Now, the original article :)
Alright, this is something I’ve been wanting to write about for a while now. But I find it really hard to share experiences that aren’t just “I had this problem and this is how I fixed it”… we’ll see how this goes.
First, make sure you check out the posts from my amazing coworkers talking about their experiences:
- Haney’s experience
- Dave’s first year as a data scientist at Stack
- Jon’s first six weeks
- Jon’s first year
- Matt Jibson’s experience (he left Stack before I started)
- Nestor’s amazing story (written in a beautiful Spanish from Spain with cool pictures)
And this is not related to his experience interviewing or getting started at Stack, but I think these articles by Alex are a must read:
Only once you’ve read those articles you should proceed with this one, so go ahead and check them out, I’ll wait.
Alright, now that you’ve read them, I don’t think I have a lot to add, so what follows is just a summary of my experience applying to (and getting a job at) Stack Overflow.
On June 30th, the company I was happily working for entered into “maintenance mode”. That meant we wouldn’t have a development team anymore and all the work we’d do would be focused on keeping our sites alive to fulfill existing contracts. Fortunately, I was offered a retainer to take care of that… but this was the first time in my adult life I didn’t have a full time job (and the first time actively looking for one).
The job search
I started applying for jobs mainly via Stack Overflow Jobs (RIP) (the product I worked on when I started at Stack Overflow). I managed to get some interviews, I made it to the last round at HotJar, but in the end they went with somebody else.
I wasn’t too concerned about my situation though, my goal was to make some lemonade and end up working in a job I loved even more, so I was quite selective when applying. I put a lot of work on each cover letter I sent (if I wasn’t able to write a cover letter that made me happy, I would just avoid applying). I wanted my potential employers to realize how much I love what I do, how much I could love that position and why they could love me back. It was of course about technology, but it was more about feelings. Why? because what I work on is a big part of my day to day happiness. Because I will end up working way more than 40 hours per week, as I keep on thinking about work when I sleep, when I run, when I travel.
The dream job listing
At some point, I saw a job listing to work at Stack Overflow. I didn’t lose anything for trying, and to me it was like applying to Google… I didn’t stand a chance. This time, the cover letter wrote itself. It was super easy to talk about why I already loved Stack, why I think I’d love working there and why they could love me back. When I read my cover letter in retrospect, I think it’s not on my top 10 (and that I should probably have spent more time working on it)… and the fact that I sent it in that state also talks about how remote the chance to actually getting the job was to me.
So I clicked on send, I received an automated response (saying something along the lines of “Thanks for applying, if we think you could be a good match, a human will contact you”) and I continued living my life.
They called! (well, emailed)
After a couple of weeks, I got an email from a [email protected] (it was the awesome Tom Harvey) apologizing for the delay and asking if I was still interested in the position. Ha, they were asking me if I was interested. A Stack Overflow recruiter was asking me if I was interested in their position. Of course I replied instantly and we set up an initial call for the next day.
He was awesome, he explained how the process worked and sent me a link to this video which was transcribed by the good folks at Greenhouse (if you’re applying to Stack or interested in how to perform great technical interviews, you want to see the video, lots of good content). He made sure my questions were answered and he asked me how much I wanted to make. My honest response was “I’m making $X per hour, but if I had the opportunity to work with you guys, I wouldn’t mind the money”.
I saw that video (go check it out) and that’s when I realized that my cover letter hit almost all the points they look for. I kind of hated me for not seeing the video before applying, but I was super happy that I nailed that not knowing, it felt like something was genuinely right. It impressed me how much they wanted all candidates (even the rejected ones) to have a great experience applying to Stack.
The interviewing process
If you didn’t watch the video, this is where I stop asking you to. Stack’s interviewing process consists of 5 steps:
- A simple technical interview just to check that you know how to code
- A SMART technical interview, with a complicated task (focusing on algorithms/structures/etc)
- A technical interview about architecture (and all the moving parts that are involved in a web application)
- An interview with a PM
- An interview with the VP of Engineering
Each interview’s output is a Hire/No Hire recommendation, and the feedback is relayed to the interviewee in a timely manner (I always got feedback in less than a business day, once on a Saturday). You need to get a Hire recommendation from every interviewer to receive an offer.
Before each interview, I watched Steve Job’s commencement speech at Stanford. It really resonated with me and it gave me the boost of confidence I so desperately needed.
The code screen
It started all right (really easy stuff) until… until he asked me to implement a simple algorithm with the structure I had. It worked, but there was a corner case… a freaking corner case. I ran out of time and I couldn’t make it work. Bryan (my interviewer) was super cool about it and he offered to answer any questions I had regarding Stack. In my mind, I had already failed, but having the opportunity to talk with a brilliant developer working at an amazing company about technology was a valuable experience by itself.
What frustrated me the most, is that I wasn’t lying about my skills. I am a developer, I know how to code. I felt super frustrated I hadn’t made it through the first (and “easy”) round.
The next morning, I was surprised to see an email from Tom saying that they wanted to move to the next stage with me!
The SMART interview
I studied, I studied like I never studied before… structures, algorithms, big O, puzzle questions (even if they don’t ask those, I wanted my brain to be as prepared as possible), went over my experiences to see what I could talk about when they asked the behavioral questions… I studied a lot.
The day of the second interview, Tom sent me a quick email to wish me luck. That afternoon, I had a blast with Bret… I approached the SMART task right. He saw an issue in my code and asked me about it in an open-ended way, but that was enough for me to fix it. And then… he asked kind of a “bonus” question. I talked through my reasoning, but I couldn’t figure it out. In my mind, I had already failed… but once again, I took the opportunity to talk with Bret about how it is to work at Stack. I loved it, I was determined to get the most out of the interview now that I had already failed.
The next morning, I was surprised to see an email from Tom saying that they wanted to move to the next stage with me!
The architecture interview
What did I do before the interview? I studied! This time I interviewed with Geoff. I had a great time and as he started working at Stack on the early days, the talk was super interesting. I ended this interview convinced I had nailed it. Unfortunately, it was on a Friday, so I had to wait until Monday to hear back.
I was happy about it… until I realized there was a better way of doing what I said I’d do… At that point I was kind of dreaming about working at Stack and then, I absolutely failed just for taking too long to figure it out. Well, tough luck… I’ll ask how long I need to wait to reapply. Now, working at this amazing company wasn’t as far fetched as I originally had thought.
That Monday… Tom surprised me with an email saying they wanted to move to he next stage with me! I couldn’t believe it!
The PM interview
What did I do? I FREAKIN STUDIED MORE. I did my best to prepare for an interview to work as a PM to kind of understand what’s important to them, and then I thought about how I can make a PM’s life easier. Fortunately, it was mostly stuff I’ve already done at previous jobs.
My PM interview was with Will. It was dynamic, I came up with an idea he said he hadn’t heard before and I left feeling like it had gone great… and it did. When Tom emailed me this time, it wasn’t a surprise.
The interview where they sold me Stack
According to the video, the idea behind this interview is that it was their turn to sell me the company. Before this interview, I had already bought it.
BUT… I completely blew it. I was too prepared to answer the “tell me about a time when you failed” question… I was so prepared that I started answering that even if David never asked. That made me feel super negative, and I wasn’t able to switch my mindset.
The next day, Tom sent me an email saying something like “It went well, but we’d like you to meet who would be your manager before extending an offer”. That was, according to that video, a non-existing step in the interviewing process.
The non-existing interview
I took it with all the positive energy I had in me. I blew the interview with David but they were giving me another shot. I was prepared to bring my A+++ game.
And I had an interview with Haney. It went great, I felt we connected on various levels, sharing some views regarding how to work in a team, open source and the Stack Overflow way. I had read his blog before the interview, so I was able to ask specific questions about things he made public there.
And I made it!
A couple days after, I got the very much anticipated email from Tom saying that they wanted to make me an offer to join their Engineering team…. WOW! I HAD MADE IT!!! At some point in my life I seriously considered moving to the US looking for challenging job opportunities, and I somehow managed to get a job at an amazing company without leaving my country.
And then, on our offer call with Tom, I told him that I was so bummed when I blew the interview with David… and that’s when he said that I hadn’t actually blown it, that the comments were really positive… it’s incredible how badly I read that interview, but I think it was still a good thing, it let me adjust my mindset, and I’m really proud of having been able to do that.
The moment I finished our first call with Tom, I decided I’d blog about their interviewing process regardless of the outcome, as I honestly felt at every step of the way that the experience was super valuable for anyone interested in how great companies work. I especially loved Stack before applying, and the feeling has just got stronger. I can’t believe it’s been more than 3 months since I started.
Are you about to apply to Stack? DO IT.