Pair Programming Interviews, Part II
How to be prepared for a software engineer interview at Square
Written by Ed Ruder.
You may have heard that Square conducts several pair programming interviews when evaluating full-time and intern software engineers. You may also kinda-sorta know what pair programming is, but maybe you’ve never done it before. Or maybe you have but you’re not sure if it’s the same process at Square.
What now? You really want to work at Square and you’re pretty sure that you have the chops, but you’re a little (maybe more than a little) nervous about the prospect of pair programming. Sitting at a computer, furiously writing code to solve a complicated problem, watching the clock–all while being watched by a random engineer who has your Square career in his/her hands. What’s not to love?
First of all, take a deep breath. The Square engineers you will be programming with aren’t malicious–they are as eager to hire great engineers for Square as you are to be hired. They aren’t going to make your interview easy, but they’re not trying to trip you up with trick questions.
Every Square engineer has a favorite interview challenge (or two) that they’ll ask you to solve, usually in smallish, incremental steps. The problem is interesting (and maybe even fun), or they wouldn’t have chosen it! While your interviewer won’t be as helpful as a true pair, they will help you get past trivial gotchas as you solve their problem. They’re not interested in silly little things that you might have trouble with–syntax errors, API details, etc.–but in figuring out just what your skills are and how well they line up with our needs.
You’ll get to pick your programming language and a development environment or editor that you’re comfortable with. Your pairing machine will be a modern iMac–if you aren’t familiar with OS X or a flavor of *nix, you should probably practice up before your interview. Any mainstream programming language you’re proficient with is likely installed–C/C++, Java, Python, Ruby, even C# (using MonoDevelop). There are a number of IDEs and editors installed on your pairing machine, too–Eclipse, IntelliJ IDEA and RubyMine, Xcode, vim, Sublime, TextMate, and probably a few more.
If you don’t have much on-the-job programming experience (e.g., you’re a recent college graduate or applying for an internship), you should make sure you are reasonably comfortable sitting down at your computer and writing a command line application (at least) that solves a problem or performs a task. If you aren’t, all is not lost–you can practice on your own and get there! If the vast majority of your programming consists of homework assignments and group projects, you may not get through your Square pre-interview screening, let alone your pair programming interviews!
Even experienced programmers might benefit from looking up a modest coding challenge or two on the Internet and solving it. Project Euler, CodeKata, and Ruby Quiz are worth a look–there are lots of others–and the problems are interesting to solve in any programming language. The challenge that you’ll work on in a Square interview will be bounded–you’ll have less than an hour to work on it!
You don’t need to memorize every nuance of the standard library of your language. Just like in a normal workday, if you need to use an API that you’re not familiar with, you can look it up or ask your interviewer. You may want to find and remember a site that documents your language in a way that you like, but even that isn’t necessary.
If you want to work at Square, chances are you like programming and enjoy solving problems. Approach your interview challenge as you would any other problem and have fun! Your enthusiasm and passion–almost as much as your skills–will leave a positive impression on your interviewers.