The typical programming interview is unscientific and random. This is a blanket statement, but I believe it to be true. Your mileage may vary, but in general you will find yourself in situations where your success or failure is dependent on something random, like if you happened to get the question you on a whiteboard interview. And while the randomness may even out at scale, your individual outcomes are not going to be a pure function of your suitability for the job.
This kind of sucks. We would rather the process be more based on merit.
No amount of soapboxing—if you are not DHH—is going to meaningfully affect on your personal outcomes. You should continue to voice your thoughts about better scenarios, but you cannot sit around waiting for the process to improve. You need to get out and make the most out of the popular process.
That means considering this randomness a feature, not a bug, in your personal approach, and go from there. That means applying for jobs you may not feel totally qualified for. If you want that great job at the company of your dreams, apply for it and embrace the opportunity to swing and maybe hit a home run.
Even established companies will find themselves scrambling to fill certain roles, or stumbling into a poor communication rhythm where their hiring process is not as tight as they want it to be. Step in and take advantage. Critically evaluating whether you are ideal for the job is negotiating against yourself from the get-go.
How to make the hiring process as arbitrary and subject to bias as possible. pic.twitter.com/dizvhXP4mc— The Practical Dev (@thepracticaldev ) April 4, 2016
I am not telling you to apply for jobs you are blatantly unqualified for or prey on companies that are radically disorganized. Both these outcomes are terrible for everyone, including yourself. But if you find yourself staring down an opportunity and wondering whether you are capable, please step into the batter's box and take a few swings. Reasonable qualification gaps can be closed quickly once you start the work and jump into the code.
Resignation to fate is a tough pill for software developers to swallow. We, as a species, love determinism. But if your goal is to land your dream job—or just get your first job—play the game and take more risks. It is up to the hiring firm to disqualify you, it's not your job. Somebody is going to be the benefactor of randomness, it may as well be you.
Mastering the technical interview pic.twitter.com/14RlUgX0zU— The Practical Dev (@thepracticaldev ) January 12, 2017
As with anything, always be honest and ethical. Just because you are trying to play the game to your advantage, ripping people off is never worth it in the long run. This goes without saying, but I'll say it anyway.