I clearly remember this one time when I gave an interview. It was a Sunday afternoon.
To my surprise, people in the company were friendly, cheerful and in general – awesome. The moment I entered the office the CTO came out to meet me, shook hands and took me around the office. Pretty cool.
After 20 minutes, the actual interview started in a room with me, the CTO and 3 more. They asked me a few questions on my earlier projects, things related to scaling, technologies I would choose and I was answering them pretty well. Half an hour later, the CTO said, “very well, let’s do some real coding stuff now”. I said “yeah sure”. After all I’ve been coding for 6 years and If there is only one thing that I could do well it was coding. At least my wife thinks that.
It was not a very complex problem. Something about building a simple “web browser” where divs are to be aligned without overlapping. After hearing the question I promptly started to pick out my laptop to start to code, when the CTO said “For the benefit of all of us in the room, can you please try and solve it in the drawing board? Besides it’ll take a long time to actually code, so just explain us the logic”. So I walked over to the drawing board.
And everything fucked up. I was like “hmm. ok.. so I’ll create a map to hold the positions and then..” when somebody would interrupt and say “Can you think about it? A map would be terrible choice, since you have to iterate over it”. Later I was like “On the third iteration of the loop the value of ‘i’ will be 4 so the div.. umm.. hold on one second.. ". I was loosing control. Sweating. “How can I be this dumb?”. I had faced dozens of problems like this in my projects and I knew I could solve this. But not now. Was it because everyone was staring at me?. Every other 5 minutes, I would say “ok, lets start over guys, let me start from the beginning”. After like 30 minutes I was able to articulate something that was “acceptable”. But in my heart I knew : I would never accept that solution if I were them.
On my way home, I felt devastated. I wasn’t as good as I thought I was. That or something was totally wrong. On an instinct I picked up the laptop from my bag right there on the auto-rickshaw I was traveling, opened textmate and started coding Browser.java. What happened then was totally insanely awesome. The code was flowing through my hands into the text editor. I wasn’t even thinking about things like “What’ll be the value of i on this iteration”, I just knew it would work. I finished the entire code and tested it during the journey of 30 minutes. Before I reached home I took out my data card and mailed the code to the CTO.
It was a revelation. The more I thought about it the more it made sense. I did best what I was trained to do and I was never trained to explain to code. Two takeaways: