At Square we talk a lot about our "hiring bar." If you've ever interviewed here you know that we put a lot of work into each interview. You'll have a recruiting coordinator ensuring the schedule for your interview day (yes, it's a full day) is clear and reasonable, and your interviews stay on-time. At the beginning of the day you'll have time to talk to your future manager and relax (we know interviews are stressful). You’ll then have the hardest (and most fun) part of the interview: three sessions of pair programming with a veteran engineer. When you’re done, you'll have lunch with an engineer whose sole task is to help you relax from the interviews and ensure you get good food in your belly. We make sure to schedule down time because the interviewing itself can feel intense.
Interviewing is very hard to do well. It's the job of the interviewer to collect enough data to make an informed decision and to do so in a dignified way that doesn't waste the interviewee's time. Failing to collect this data means the decision will be based on "culture fit" because the brain likes jumping to conclusions based on limited data, as if other data didn't exist.
What we look for
I'm very proud to work at a company that has rejected brilliant assholes and hired a few junior—but enthusiastic—people. We want to bring in engineers who are enjoyable to work with, who level-up our teams, and who can contribute on day one. And we've got about 5 hours in which to determine all this.
Since the very early days of the company, our CTO Bob Lee has honed an approach to gathering hiring data using two methods:
Square does not believe in trick questions. How many gas stations are in the U.S.? Who cares? What's the ideal JVM garbage collector for an application with these characteristics? Oh, that's not your specialty? Sorry then, I should have asked a much better question.
We do, however, need to know if you'll be a strong contributor to the growth and success of Square so we need to measure your skill, but we need to do it in a non-bullshit way. The best way that we've found is to pair-program with you for an hour. This means you and I will sit down at an iMac, we'll chat for a couple minutes so you can relax, then I'll describe a fun programming idea to you and we'll build it together. In other words: It's just like a work day.
Unfortunately, coding sessions are not a good indicator for any skill other than the actual coding part of your job. So we have a second kind of interview where two Square engineers and yourself get together for 40 minutes and the Square engineers work to find your strengths. Rather than pushing you to prove that you don't make mistakes under pressure (spoiler: Squares make mistakes constantly) we look vigilantly for the kindness, creativity, integrity, and willingness to try difficult things that might have been missed during other parts of the interview. This will involve asking technical questions but that's just grist for the mill – we don't care if your answers are right as much as we care that the interactions between us are healthy and that we're getting a sense of your skill level.
Square has many diversity initiatives and several of us work full-time on ensuring we represent and attract a healthy mix of people. It would be so easy to undercut all of this if we took a less methodical approach to interviewing. We're naturally attracted to people just like us so the default is to hire everyone who reminds us of ourselves. But we believe that our best products are yet to be built and we need new, diverse perspectives and skills to help us create what Square will become.
If you enjoy building beautiful systems used by millions of people please join us! https://squareup.com/careers
- "Culture fit" does have meaning at Square but a candidate is only rejected by this for two very narrow criteria: They are either condescending or they have no interest in learning to use *nix-based tools so there's a technology mismatch.
- Daniel Kahneman, Thinking Fast and Slow, 'WYSIATI' (what you see is all there is)