Surviving the Whiteboard Interview Read online




  William Gant

  Surviving the Whiteboard Interview

  A Developer’s Guide to Using Soft Skills to Get Hired

  William GantNashville, TN, USA

  ISBN 978-1-4842-5006-8e-ISBN 978-1-4842-5007-5

  https://doi.org/10.1007/978-1-4842-5007-5

  © William Gant 2019

  This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed.

  Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights.

  While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein.

  Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.

  This book is dedicated to all those who stretch the definition of “possible” and make it not only achievable but who show the way to make it the “everyday” for others. I especially dedicate it to my friends Doc, Rob, James, David, and John, without whom my world would be smaller and the possibilities within it dimmer.

  This book is also dedicated to my wife, who has exhibited a remarkable level of calm for one subjected first to a budding programmer, then to a budding podcaster, and finally to a budding self-marketing writer and public speaker. That’s not a thing to be underestimated.

  Introduction

  You might be wondering why I am qualified to write this book. You’d be right to do so. Lots of stuff is available about getting through the development interview process, some by experienced developers and others that, frankly, don’t have a wide range of experience to draw from.

  I, on the other hand, do have a fair bit of experience in this space. November 2018 marked a milestone for me, because that month will be the 20th anniversary of the first time I got paid for writing code, as well as the anniversary of the first time I went through the process of a development interview. That was my freshman year of college and happened after four and a half years of learning to code on my own. I later followed that up with completing my bachelor’s at Lipscomb University, hitting the workforce and interviewing for full-time positions in late 2002. Since then, I’ve had 17 software development jobs, many of which were short-term contracts, along with numerous side projects, most of which required one or more interviews and at least half of which required getting through a whiteboard interview.

  I’ve not only survived numerous software development interviews from the interviewee side of the table, but I have conducted interviews as both a manager and as a lead developer. Having led and managed developers, I’ve learned a lot about what a manager is looking for when conducting an interview. Knowing this has given me a lot of insight into some best practices for developers who are trying to get hired.

  While not a qualification for writing this guide, I’d also like to point out here that I am one of the guys on the Complete Developer Podcast ( www.CompleteDeveloperPodcast.com ). As of the writing of this book, the podcast has been going for more than 3 years and has a lot of stuff that might appeal to you if you are reading this guide. In addition, I am also one of the founders of Developer Launchpad ( www.DeveloperLaunchpad.com ), which is a meetup group focused around helping developers get ready for developer interviews by giving them practice coding exercises and real training on dealing with whiteboard interviews, so that their first experience with it isn’t in an interview where the stakes are higher. I also frequently speak on the topic and have presented a talk on this topic at numerous times.

  I am sharing these tactics with you in this book for a lot of reasons. For one, whiteboard interviews are unnecessarily challenging and difficult, especially for new developers who don’t know the tricks and tactics to get through it. I also personally detest whiteboard interviews, as I don’t think they are a particularly good way to evaluate someone’s skill as a developer. I hope that this guide will not only help you get through this process in a way that makes it work well for you, but that the hacks that this book contains will circulate widely enough to eventually make it a less popular interviewing method.

  Developer hiring is fundamentally broken as currently constructed, and if enough people can learn to use the broken system to their advantage, we just might rid ourselves of it. In that sense, this serves as a bit of graffiti on the wall that keeps qualified people out of development when they shouldn’t be. You might say that this is a bit of a personal crusade and you’d be right.

  Acknowledgments

  Many thanks to Erin Orstrom. A question of hers during a meetup group long ago started the chain of events that culminated in this book, and she did the technical review of the code in Chapter 4 .

  Contents

  Chapter 1:​ Why Software Development Interviews Are Hard

  Chapter 2:​ Why Software Development Hiring Is Broken

  Chapter 3:​ The First Steps for Getting Ready

  Chapter 4:​ Code Katas

  Chapter 5:​ Your Resume

  Chapter 6:​ References and Your Network

  Chapter 7:​ How to Clean Up Your Online Persona

  Chapter 8:​ Researching Before the Interview

  Chapter 9:​ How to Get Through the Interview

  Chapter 10:​ What to Learn During the Interview

  Chapter 11:​ Interview Questions

  Chapter 12:​ Additional Resources

  Index

  About the Author

  William Gant

  is a software developer who has been working in the industry since 1998. He has worked with dozens of dif ferent programming languages in a wide variety of programming environments, both as an employee and as a consultant. In addition, he has owned his own business, been heavily involved in several startups, and is currently half of the Complete Developer Podcast, among numerous other things in the development space.

  © William Gant 2019

  William GantSurviving the Whiteboard Interviewhttps://doi.org/10.1007/978-1-4842-5007-5_1

  1. Why Software Development Interviews Are Hard

  William Gant1

  (1)Nashville, TN, USA

  In this chapter, we’ll start out by examining why so many of us find interviews, especially in software development, to be such a painful and difficult experience. We’ll start out discussing physiological responses and how to manage them. Next, we’ll discuss some strategies for turning the psychological responses into something that is actually useful. Finally, we’ll examine several ways to
prepare for interviews that we will discuss in further detail later in the book.

  I’ll start this out with the same question that I always ask when I’m giving a presentation on surviving whiteboard interviews. That question is: “How many of you find interviews frightening?” When I ask a classroom full of aspiring software developers this question, nearly all of them raise their hands. Do you know why this makes you nervous? It’s because you are rational. That’s all. It’s not a personality defect. It’s just evidence that you are a normal human being.

  There are a lot of very valid reasons to find an interview nerve-wracking. You can fail and if you do, you get to go through the entire awful process somewhere else. Not only do you have the risk of failure but you probably feel like the interview process is unpredictable. Going in, you have no idea how long the interview will take, who is going to be asking you questions, and what the format will be. It can create a sense of helplessness, as if the interview is something being inflicted upon you rather than something you chose to subject yourself to.

  A whiteboard interview is often the worst case. It combines the worst aspects of a standard interview, public speaking, a quiz show with a hostile host, and a dinner party full of strangers who are silently (or not so silently) judging you. Very little of it probably feels much like your reasons for getting into software development, and you start to wonder whether the experience is a valid reason to get out of it. I personally have seen multiple brilliant developers who are the best that I know, who nevertheless completely bombed in front of a whiteboard. Worse still, I’ve seen terrible developers who have had great success in the interview process, only to end up getting fired 6 months later because they couldn’t do their jobs.

  Let’s face it. Not very many people who decide to make a life out of software development really relish the thought of being put on the spot in front of a group of strangers. If we wanted to do that, it’s pretty likely that we would have made an entirely different career choice in the first place, as development tends to be a bit more isolated than many other career paths. You are essentially being asked to make a sale, and you probably aren’t very comfortable with doing so. Being the center of others’ attention is made even worse by the fact that they are usually complete strangers that you just met less than an hour before. In short, it’s the worst aspects of petty socializing, cold sales, and public speaking, all rolled into one.

  Even worse though is the thought process you are likely to go through in this situation. If this interview doesn’t go well, what happens then? Your ability to pay your bills may well be on the line. Even if you still have income while this is going on, the downside of failure in this is that you either have to give up or you get the pleasure of going through it again later, with a different problem and a different set of random strangers. Even better, because you don’t necessarily know what kind of questions you’ll be grilled on, you can’t even reassure yourself that next time will be better, because it could very easily be worse. If you are new to coding and this is your first whiteboarding experience, it’s even worse, because it’s all brand new. It’s this cycle of thoughts that we must break.

  Physiological Responses

  As a result of all this going through your mind, your body starts reacting as well. Human beings have a fairly limited range of physiological responses to nervousness, and those responses were developed over millennia for dealing with things like predators. The response is thus frequently a bit over the top for something that seems as benign as a job interview, but the way that the experience feels will still be the same. This set of physiological responses are the reason why a single misstep so often results in a more serious failure, as nervousness feeds into mistakes, which produce more nervousness. The cycle is liable to repeat until it is stopped.

  A few things happen when you get really nervous, none of which are particularly helpful when you are trying to show someone how you can bring value to their team.Your heart rate will increase and you will begin sweating, often to excess.

  You will probably start speaking faster, and being less cautious about what you say.

  Should you have to focus during this experience (and you’d better), you are also far more likely to make mistakes.

  In short, your built-in biological response to being nervous is more than capable of sabotaging an interview for you. It can be really unpleasant. This set of responses is supposed to keep you from getting eaten by a lion, and it makes you unable to pay your rent instead. In short, human beings evolved responses to stimuli that were appropriate when we were hunter-gatherers, but that have ceased to be helpful in the sort of modern, urban environments where most interviews take place.

  Natural reactions to stimuli are very difficult to remove. Because they happen before you can even think about them, there isn’t much you can do until after the fact. While mitigating these reactions is a useful and necessary tactic, the best way to keep things under control is frequent exposure to the stimulus. However, it is difficult to experience enough interviews in a short time to completely get rid of the very natural fear that they create. Experience (and the lack of fear that comes with it) will come in time, but that doesn’t get rid of the immediate problem.

  Instead, we’re going to have to work with the reactions we have and try to turn them to our advantage.

  It’s In Your Head

  Besides being in an interview, there is another situation where many of the same physiological responses occur, and that situation has nothing to do with avoiding being eaten. Instead, it is one of the best feelings in the world. When you are feeling joy and exhilaration, your heart rate will also increase, you will probably sweat more, speak faster, and even make more mistakes, yet most of us don’t walk around in fear of being happy and excited.

  Whether it is getting on a roller coaster, skydiving, driving fast, or playing a sport that you love, a feeling of exhilaration will produce very similar responses to fear, yet they won’t feel terrible. In fact, you’re very likely to have a heightened sense of focus and to thoroughly enjoy yourself. Wouldn’t it be great if you could feel the same way about a nasty programming whiteboard interview, and even look forward to the challenge?

  The good news is that you largely can do that, because the difference between the two isn’t physiological; it’s psychological. At the end of the day, getting into the right mental state will help you succeed both on whiteboard challenges and in other challenges in your life. It is not only possible to do this, but to make that sweaty, rapid heartbeat, sour stomach, panic-inducing feeling that you get when being interviewed into a feeling of excitement at the challenge. And it’s easier than you might think.

  Do you remember the bit in Star Wars: The Empire Strikes Back (1980), where Yoda sends Luke into the cave, telling him that the only thing in there is what he takes with him? And then Luke runs into Vader and makes a mess of things? While sounding a lot like the sort of pop psychology stuff that we are all more than a little tired of, it does represent a statement of profound truth. You are going to encounter what you bring into the interview. If you go in scared to death and concerned about what happens when you fail, you drastically improve the odds of that failure. If, on the other hand, you go in with quiet confidence and well-practiced skill, your odds of success are much higher. That’s just the way it goes.

  There are three main differences between something that induces a feeling of panic and something that produces a feeling of exhilaration.You have to know you are “safe.” In other words, you need to have the assurance that you won’t be harmed by the experience.

  You have to be “happily” anticipating the experience. In other words, there has to be something positive to look forward to for enduring the experience.

  You have to feel some degree of control over the experience.

  All of these characteristics are manageable, if you prepare in advance. Any good method of interview preparation must not only deal with the mechanics of interviewing but must also mitigate
the psychological and physiological difficulties one will encounter while doing so. In addition, any preparation should provide a real sense of being in control of the process.

  Get Your Stuff Together

  Because you understand that most of the difficulty comes from your response to the interview, you know that your odds of success are going to increase if you are prepared in advance. As we work our way through this book together, we’re going to put a plan of action together to make sure you are as well prepared as possible for the “exciting adventure” of going through a developer whiteboard interview. While I can’t promise that you will ever truly “enjoy” interviewing, if you prepare properly, I can promise that it will no longer inspire fear. Toward this end, the rest of the book will explain how to prepare for an interview using the following tools and tactics:

  Practical drills to help you practice for the actual interview (Chapter 4).

  Tricks you can (and should) use to get through the challenging bits of interacting with strangers during the process (Chapter 9).

  Some history that will help you understand why software interviewing is broken, how we got here, and how you can use this information to your advantage (Chapter 2).

  What the interviewer is looking for and what little things you can change about your approach to be subtly better than the other people going through the process (Chapter 11).