A rewarding aspect of managing the iOS Interview Program is interacting with fellow developers in different phases of their careers. Some are relatively new developers seeking to gain interview experience, while others are looking to fine-tune their knowledge in computer science or other aspects of iOS development. Regardless of skill level, a lesson we all share is having failed at least one technical interview. These encounters can be biting experiences that accumulate the more time we spend in the industry. This essay provides tips and suggestions for using these not-so-pleasant experiences as opportunities for reflection and growth.
When we get notified that we were "passed" for a specific position it seldom comes as a surprise. On the contrary, you as well as the interviewing team will have a good idea as to your success towards the end of the phone screen or on-site meeting. With most major technical interviews taking 3-6 hours to complete, the entire process closely resembles an oral exam, with candidates either answering questions and writing code correctly, incorrectly or not at all. As developers we know when we "know our stuff," and it feels great when it all works out. However, frustration sets in when we attempt to code the right solution and run out of time, or completely miss a question we had planned to study beforehand.
Ironically, a benefit these encounters provide is a chance to reaffirm their importance in us achieving our career goals. For example, if you're confident you knew the correct answer but didn't have enough time to code the solution, this could be a signal you could benefit from more practice whiteboarding (without the aid of a computer). If you feel like the interview exposed significant gaps in your technical knowledge, ask yourself if not having that knowledge is preventing you from advancing in your career.
For example, consider the idea of Dynamic Programming. For people seeking to work at top companies such as Google, LinkedIn, and Facebook an understanding of this topic is suggested. However, requirements at another company may emphasize needs such as specific 3rd-party frameworks or API's. Also, the benefits of Dynamic Programming are often understood once you grasp the basic idea of other algorithms and data structures. As a result, if you intend to widen the breadth of companies you'd like to interview at, this should dictate what subjects you choose to study.
THE CHOPPING BLOCK
Lastly, keep in mind that an interview is also designed for you to consider if a specific company or organization is a good fit. In other words, do you believe in the company's goals and can you imagine yourself working there on a daily basis? A failed interview may reveal issues like personality conflicts, a less than ideal company culture or a technology roadmap that differs from the path you've decided to take. As hard as a failed interview may be, the focus it gives you for the future is invaluable for your career.