Pair Programming Interviews
My name is Parth Upadhyay and I'm a rising senior at the University of Texas at Austin, majoring in Computer Science. This summer, I interned at Square on the Register team.
Interviewing At Square
When I first started exploring internship opportunities at Square, I didn’t know a lot about the engineering culture at Square—that is until I came in for pair programming interviews. Previously I had only experienced a more standard interview process. Someone would sit across the table from me and go through the motions of grilling me on my resume and asking me pre-baked data structures questions whose answers had become rote review. These interviews felt like tests, and more than that, they felt orthogonal to the work that I would actually end up doing.
Square's interview, however, was really different. The first thing we did during the interview was spend time setting up a development environment on the pairing machines. My interviewer asked me to take my time and set up the machine to my liking.
I was confused. I thought I was going to sit across the table from someone and return rehearsed, stock answers to their standard interview questions. Instead I sat next to someone on a real computer and wrote real code that ran. On top of that they actually wanted me to spend time setting up my own development environment.
Sensing my confusion towards this foreign interview style, he explained that he wanted me to be comfortable coding on the machine so we could actually focus on the problem we would solve, and not have to worry about the cruft surrounding it. He was completely right! Coding in an unfamiliar environment is kind of like running a race with your shoes untied; you're spending so much time tripping over yourself that it's hard to even show off what you're capable of.
After setting up the environment, I did 3 pairing interviews with 3 different Square engineers. They would usually start off the problem by providing some of the boilerplate code, (sometimes even write tests), and then we would work through it together.
These interviews stood out because I was coding just as I would in the real world. I got to sit at a computer and just program—working through the problem, bouncing ideas off and asking question of the engineer who was interviewing me, googling syntax and APIs that I had forgotten, and actually running, testing, and debugging the code until it worked. I didn't even have time to be stressed during the interview process because I was having fun doing what I loved: coding.
This unique interview experience gave me insight into the engineering culture at Square, where collaboration is core. Working at Square has been everything, and more, than I thought it might be based on my interview experience. It's been an incredible summer working side-by-side with people who are pushing the boundaries, both in tech and in commerce, and I've learned so much from my team—not only about programming but about workflow, time management, product design, everything. And I got my first taste of all of it throughout the interview process.