© William Gant 2019
William GantSurviving the Whiteboard Interviewhttps://doi.org/10.1007/978-1-4842-5007-5_3

3. The First Steps for Getting Ready

William Gant1 
(1)
Nashville, TN, USA
 

In this chapter and the next few, we’ll talk about what to do to prepare for the interview. This chapter will center on the things you need to do to make the process as painless as possible. In the next chapter, we’ll discuss in depth how to practice well before interviewing. The goal here is to practice until the real thing feels easier than the practice.

Search for Common Questions and Problems

Here’s a secret that the folks interviewing you won’t tell you—interviewers are busy people. The fact that we’re hiring is evidence that there is more stuff to do than we can get done. We don’t have time to put a lot of thought into creating new interview questions and whiteboard problems. If we feel that the rest of our interviewing practices are good enough, we can just do an Internet search to find some suitable questions and problems. So, it’s in your best interest to do an Internet search for questions as well.

Start off by searching for “Interview Questions for [framework/language/platform/database]” where the items in brackets are the framework(s), language(s), platform(s), and database(s) that you will likely be working with for your job. For instance, if you are an ASP.NET developer using Angular and SQL Server, you might make separate searches for the following:
  • ASP.NET interview questions

  • C# interview questions

  • Angular interview questions

  • SQL Server interview questions

  • IIS Interview questions

Make sure you can answer the most common questions you find with these searches, as you probably will be seeing them again. If you have to research the answers, take the time to do so, because this will help you get through the interview long enough to get to the parts where you can truly differentiate yourself. It will also help you a little bit later if you actually practice with a whiteboard. If you see any short coding problems here, hang on to them for later.

This whole thing may feel like cheating. However, the idea here isn’t to memorize the answers; the idea is to internalize them. Not only can these answers help you in the interview, but there are pretty good odds that you’ll use the information in your job as well. You have tools that can help you—use them.

FizzBuzz

There is a particular type of whiteboard problem that is used a lot and is perfect for early practice with the whiteboard. That problem is known as FizzBuzz. First proposed by Joel Spolsky, FizzBuzz is a very basic coding exercise that shows you at least have the beginnings of thinking like a programmer. By itself, it’s not enough to prove that you can code in a real environment, but it is still used to screen job applicants.

Besides being simple enough to start with, FizzBuzz offers a number of other advantages. For one, there are versions for most programming languages, and if there aren’t, you can probably still figure it out without much trouble. Second, FizzBuzz problems in another programming language are still understandable, even if your friends don’t program in the same language as you do. This makes it easier to find a practice partner for the whiteboard. Finally, FizzBuzz does show familiarity with things like loops, the console, arithmetic operators, and strings.

Again, do an Internet search and get the basic outline of FizzBuzz in your language of choice and set it aside. We’ll be using it in Chapter 4 as a code kata.

Code Katas

In addition to practicing whiteboard problems on occasion with a friend, it will help you a lot to practice code katas daily. The main goal with continual practice of code katas is to get you into a headspace that is effective for getting through technical interviews and keep you there. You should also revisit the concept once you have a job, as they can help you a lot when you are trying to learn new skills as well.

Katas in the martial arts are prearranged sequences of movements to help you practice. They help improve a lot of things like footwork, balance, body structure while doing a technique, and flexibility. While not directly helping with getting through actual combat, they are quite good for developing ancillary skills that are still really useful. The same practice can be applied in coding.

Again, to get some reasonable code katas to begin, go to Google and search for “[framework/language/platform] code katas” for each framework, language, or platform that you use. Pick one that looks a little challenging to you (but don’t overdo it) and practice it every day. The idea here is to use the same example over and over, working it all the way through and trying to improve your approach. You might think that most of the value of a kata is gone after the first time you complete the problem, but nothing could be further from the truth. After you get done solving the problem, try to solve it faster, more eloquently, with unit tests, using less code, and so on. You can learn a lot from a single problem practiced in this fashion, and the lessons thus learned will improve your skill. Keep practicing until you are sure you have wrung everything out of the kata that you can get, then pick another and do it again. Periodically revisit the katas you’ve worked through before and see if you’ve picked up anything new. You might be surprised. We’ll spend some time in the next chapter explaining how to really improve your skillset with code katas, but for now just pick one and try out the concept.

This all sounds corny, doesn’t it? However, it’s a trick I’ve used on a regular basis over my entire career, both to sharpen my skills and to bring new techniques into my practice. Even in my current role as a software architect, I still periodically go through a period of practicing code katas to tighten up my skills. If you do this as an aspiring developer before you get your first job, you’ll rapidly stand out from the crowd. Whiteboard problems are often very similar to code katas, and consistent practice with code katas will make you better at getting through whiteboard problems.

My friend BJ, who is my partner on “The Complete Developer Podcast,” among other ventures, was one of the first people I worked with on surviving whiteboard interviews. We drilled whiteboard problems. We drilled code katas. I was tough on him on both—in fact I was far tougher on him than an interviewer would be. When it came time to interview and he was given a whiteboard problem to solve, he laughed. The interviewer picked a problem that he had been working on as a code kata for a couple of weeks. He solved it in a single line of code, as the interviewer stood by, mouth agape. Needless to say, he got the job. Even better, his skills stood up to the test of the job after he got it. We will discuss code katas and FizzBuzz in Chapter 4.

Find a Study Partner

Another thing you need to do is practice for whiteboard tests. It’s going to require working with someone else, but it is worth the trouble. Practice actual whiteboarding problems with a friend, as often as possible, until you actually manage to land a job.

Each time you practice, each of you will present the other with a problem to solve on the whiteboard. When it is your turn, you will solve the problem as if it was a real interview. You’ll get some advice on how to get through a real interview in a later chapter. Practice on the whiteboard with a friend who is acting like an interviewer. This is not a joke, so be serious. Your goal is to practice in such a way that when you encounter the real thing, you are ready.

When it is your turn to be the interviewer, your job is to be a challenging interviewer. You’ll have to vary this depending on your partner’s tolerance, but your job is to press them to the point of mild discomfort. Question what they are doing, and why. Make noise, joke, talk on your phone, and do all the stuff that you would imagine a terrible interviewer doing. Give your partner the opportunity to practice under pressure, especially irritation and emotional pressure.

When I worked through this with BJ, I was a jerk toward him, on purpose (I had a blast though). I can remember one day when he made a mistake, when I threw an eraser at the back of his head, telling him to pick it up and erase the memory leak he had just written. While I don’t necessarily recommend taking it that far (we’d known each other for 15 years at that point), I will tell you that getting through such an experience in practice makes it far easier to get through it in a real interview, when the interviewer is probably far nicer. Practice hard, so that the real thing is easy.

The idea behind doing this is that exposure to a harder version of a whiteboard interview with nothing at stake will make it easier to emotionally and intellectually handle the real thing when your ability to pay the rent is on the line. You don’t want your first experience with a whiteboard interview to be during a real interview for a job that you actually want. Take the pressure off in advance by practice.

Write Code Every Day

I almost hesitate to mention this, but you really do need to try and write code several times a week, if not daily, while you are interviewing. It’s not just that practice is important, but that your skills will atrophy faster than you think if you aren’t using them regularly. If you’re lucky, your job search for your first development job will only take a couple of months, but it might end up being six months or longer.

I’ve worked with a lot of people who have recently graduated from coding bootcamps, undergraduate programs, or have simply learned to code at an acceptable level by themselves. The most common reason for failure of recent graduates to get a software development job isn’t lack of knowledge, it’s atrophy of knowledge while they’re waiting. Like anyone else, interviewers usually see what they expect to see, unless you give them a reason to look more closely. Regular software development, in addition to improving your skill, also hones your reactions and thought processes so that you “look” more like a developer. Atrophied skills make you stand out, and not in a good way.

Once you get a full-time developer job, you’re probably still going to have to learn on your own time. While employers provide varying levels of training, it’s rare that you’re going to be able to get enough training during work hours to keep your skills fresh. Since it will help you and you’re going to be expected to do so anyway, you should continue working to build your skills.

There are a number of different ways to build your skills, including going through more coursework. While coursework helps to a degree, the best thing an aspiring developer can do is to build a small app that does something useful. You can do almost anything (I think I’ve built a little recipe management application in 10 or 12 different platforms over the years), but try to pick something that has some of the same kinds of problems that you expect to encounter in a job. In general, I would recommend choosing something where you have to deal with databases, authentication, and authorization at a minimum. This will give you a lot of moving parts to worry about as well as force you to deal with insufficient documentation, trying to figure out the best way to do various things, and open-ended design. If you are already working on code on a regular basis at home, you’ll be able to keep your skills fresh enough for interviewing to go well.

Summary

In this chapter, we discussed general things that you should be doing to prepare yourself for interviewing. These tactics are not company-specific. Rather, they are designed to sharpen your skills so that you can handle any interview. We discussed how to use a search engine to get some basic information you need for practice. Next, we briefly went over what FizzBuzz is, how to find it, and what it can do for you. We followed that up with a discussion of practice whiteboarding and the importance of continuing to write code for practice. In the next chapter, we’ll be digging in more on how to do code katas and some possible approaches to really ramp your skills up to the next level using them.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.147.66.178