I was just informed in a very polite way that I would not be extended a job by the company I had interviewed with yesterday. I already knew it was going to happen, but I really felt it when the actual email arrived. Below is my post-mortem analysis of what happened. I hope that you can learn from my mistakes as I have.
The problem
Ultimately, I choked. I was presented a CS 101 problem, and I floundered. When I reflect back on what happened, it actually didn't start out too bad. I started thinking on how to solve the problem, started typing a bit, and then realized what I had typed wouldn't work. I don't know why this was a problem, but for some reason the fact that I had made a mistake and would have to correct that caused me to panic.
It's hard to describe the feeling I felt, but it felt like the same feeling I had when I clipped the bike tire of a kid who rode out in front of my vehicle out of an alley a couple of years ago. Fortunately, the kid only had a couple of bruises and a few scratches and a bent tire on his bike. Our mental state, on the other hand, was in far worse condition. I had so many thoughts racing through my head of what I was supposed to do in the situation like ask where he hurt, make sure he didn't try to move too much if there were back injuries, etc. I knew what to do, but all I could actually seem to get my body to do was ask him over and over if he was OK.
It wasn't until I took my hands off the keyboard and grabbed a piece of paper and started trying to solve the problem there that I caught my first break. I am not sure what about this helped, because what I wrote down was just as non-sensical as the things I was typing, but perhaps it gave my brain enough time to re-assert some control over my body to get the message through that I had been looking for, which was what I needed to do. This got me back on track and I immediately got the problem 90% of the way done, but the damage was already done.
The same thing happened on the next problem, but this time it was because I had already shut down. All I could focus on was that I had completely failed the first problem.
Keep Calm and Carry On
As I look back on my botched interview I realized that there were some areas that could have changed the outcome of the interview. Some are things I could have done; some are things I should have known.
Trust Yourself
I distinctly remember one thought that kept occurring to me multiple times during the interview from my brain that could have turned everything around. I kept getting this thought that I should stop trying to solve the problem, collect myself and slow my breathing, then start from the beginning. If I had done this and told the interviewer how I was feeling, I think I could have avoided all the repeat problems because I would have stopped focussing on what had happened and focus on what was next.
Talk, damnit!
I think I was destined for failure before I even started the interview because I was already slightly anxious, and totally missed the key instruction that was given to me: to talk about what I was doing because the problem didn't matter, what they were interested in was how I approached the problem. If the problem didn't matter, then beating myself up over making minor mistakes became the biggest mistake I made in the entire interview. Once I started to panic, I don't know if I actually was capable of talking anymore, which is why I should have collected myself and calmed down so that I could do what I was there to do.
The interviewer is your friend
By far this is the most important thing I learned from looking back on the experience. I feel a bit foolish that I wasn't thinking this way before, but the person interviewing you is on your team and is rooting for you. The best thing that can happen for them is that you end up doing great in the interview and become a great member on their team. Sure, they are looking out for themselves and don't want to bring someone on who isn't going to meet their needs, but until they decide that you won't work out, you should believe that they are on your side. Unfortunately for me, I walked into the interview with the wrong mindset: I felt like I had to be the best that they had ever seen.
Keep It Simple, Stupid
On one problem, I had it mostly solved in my head, but when I began to actually implement my solution I stopped and went for another solution because I felt like it was too simple. I knew in my head that I could do this with one statement and didn't need to allocate an array and I got hung up on this notion. Yes, it is possible to do it in one statement, because I did it after the interview, but I was not able to do it without looking up the names and syntax for the methods that allowed me to do it in one statement. By feeling like I had to make an impressive solution, I committed myself to no solution.
Moving Forward
Even before being told that I would not be hired, I was already beating myself up a bit because I was fairly confident I was not going to be hired. I actually felt as though I was not good enough for the position, and that I had let myself down. Only one of those was true, and I'm solving the other right now. I've decided that even though I won't be hired, that doesn't say anything more than that. Just like a bad piece of code, I just need to fix the bug, make sure it doesn't happen again, and move on. For me, that means putting myself "out there" more. Looking back at this interview, I clearly have some issues when coding in front of others, so I'm going to try to do some coding competitions to practice for the next time I have to do this.
Ultimately, if you find yourself in a similar situation, just remember to focus on what's important, trust in yourself, and if things don't work out, learn from it and move on.