Interviewing can be frustrating.
I recently went through a round of interviews in San Francisco. I had to interview with twenty companies to find the right job and was rejected from many places. One of the things that I learned from the experience is that interviewing is completely different from normal work. Being a good programmer does not mean that you will interview well.
The good news is that I think you can improve your interviewing substantially by working on a few key things. I like to think of interviewing as a series of hurdles. I think the key to success is to focus on the hurdle that you are not getting past.
Rejection
I was rejected from thirteen companies during this last job search. Here is the breakdown of the reasons that I was rejected:
- 5 - they wanted someone with more experience
- 4 - failed coding challenges
- 4 - other reasons (they were not actually hiring a programmer, not a cultural fit, never heard back, etc.)
The top two reasons are the ones that concern me - not enough experience and coding challenges. They happened many times. I think many of them could have been avoided.
Hurdles
If interviewing is like a series of hurdles, each hurdle is designed to weed out people who are not qualified. From the breakdown above, we can see that there were two things that consistently put me out of the running for jobs: 1) coding challenges 2) lack of experience.
You cannot get a job if you cannot get past the coding challenges at these places. If you focus on looking more experienced without being able to code up a fibonacci method, you are going to have a really hard time finding a job. To maximize your chances, you have to focus on the first hurdle that's tripping you up. In my case, it was coding challenges; I should have taken them more seriously.
Common Coding Challenges
The following questions came up over and over again. Memorizing solutions to these problems was extremely helpful for me.
- fibonacci sequence (iterative and recursive)
- implement a stack/queue
- string manipulation (reverse, sort, etc.)
- talk about the big O of your code
Once I became comfortable with these, interviews started going much smoother.
Experience
The second hurdle I struggled with was experience. In several cases, I did very well at the coding challenges. Then, was told that I simply did not have enough years on my resume. Naturally, that is frustrating to hear because I cannot change time. I refused to accept that I had to take a crappy job just because I hadn't been working X number of years.
What Can You Do About the Experience Hurdle?
Clearly, some people are more motivated to learn than others. I think your goal here should be to point out anything you do outside of work that contributes to your experience. By pointing out how motivated you are, you can mitigate them focusing on the number of years you've been at it.
Working on and talking about the following can help:
- open source contributions
- side projects
- clubs/meetups that you attend
- programmers you follow/look up to
- books you've read
What Else?
I also found the following to help me:
- be prepared for non-technical questions (i.e. why do you want to work here?)
- dress up slightly more than the people interviewing you (don't get crazy though)
- be positive
- smile (seriously)
Networking
As always, networking is extremely helpful. I found interviews setup through a connection to typically be more interesting. The job that I ultimately accepted was at a place where a friend of mine works.
Conclusion
I hope these tips help you with your next job search. Good luck getting past your hurdles!
Other Resources
- cracking the coding interview
- friends - ask them to quiz and mock interview you