Over the last three years at Google, I have conducted 140+ interviews for Software Engineering. My style of interviewing is to start with a simple problem and develop it in various dimensions. Let us say we wish to find the intersection of two multi-sets. There are myriad variations of this simple problem: what if the two sets are equi-sized, what if one is really tiny, how relevant is the big-O notation, what if one set is gigantic and on-disk, what if the sets are on two different machines, and so on.
The first twenty interviewees taught me a lot! There are many ways to "see" the solutions. It was a learning experience. Thereafter, I started leading candidates to explore the inter-connections between various sub-problems, as skillfully as I could. The extent of exploration possible in a limited amount of time helped me rank the candidates relative to each other. A major personal challenge that I faced was to make sure no candidate feels bad at any point of time, and to keep the interview going without any pauses especially when a candidate was fumbling with lack of insight or information.
By the thirtieth interview, I realized the connection between my style of interviewing and Socratic teaching! Some of the candidates had actually thanked me, saying that they had "learnt" something new during the interview. Also, I had finished reading The Art of Teaching by Gilbert Highet, a wonderful book that I highly recommend to teachers of any kind.
So in late December 2007, I wrote the following short article:
A technical interview is a meeting of two minds. The interviewer helps an aspirant explore a series of inter-related problems: Socratic teaching in action. The extent of exploration depends upon the acumen of the aspirant and the level of preparation of the teacher. Over time, interviews with aspirants from varied backgrounds imbue the teacher with a deep understanding of the problem space. A bright aspirant sweeps through the problems quickly and sometimes gives new insights to the interviewer. Such an aspirant is joy to talk to. A compassionate interviewer never makes an aspirant feel bad when communication breaks down or when little progress is made in some problem.
Around the same time, I was given the opportunity to interview Jim Roskind, whose humble homepage hides his illustrious career: Ph.D. from MIT in 1983, co-founder of InfoSeek, VP at Netscape and VP/CTO at AOL. After the interview, I received a warm e-mail from Jim:
Your interview in particular was a lot of fun. It was one of the first I've had in many many years where I had to think hard about detailed problems that were not merely "trick questions" (where a person typically either knows the trick, or is dumbfounded). In addition, I've never interviewed at a place where such a question (actually, series of related questions) could be asked of an interviewee. I was hoping to have fun challenging discussions with folks at Google today, and you're interview was clearly the most interesting and educational of the day.
Approval of my technique by somebody as experienced as Jim Roskind assured me that my approach was sound. Thanks, Jim!