24 Interviewing  We could spend a whole book talking about interviewing, but I’m going to boil it down to the basics of what you need to know to get started right now. I include more information in the resources for my book. Interviewing is a process and involves more than simply answering questions and waiting for a phone call. You will probably have to go through many interviews with many different companies. Do not worry, most people, even if they have experience, will bomb interviews sometimes. The trick is to just be honest about what you know with the interviewers, make a connection with them, try to get feedback, and learn something every time.  Types of Interviews On average, programming jobs will have three rounds of interviews: an initial interview with the hiring manager or recruiter where they will ask you standard interview questions, then a technical interview to make sure you can do the job, and, finally, an interview with the team to ensure that you are the right fit for the culture at the company. Some companies will have more rounds than this, but additional interview rounds are usually for additional employees or managers to meet you and they will probably ask you the same kind of questions I list here. General Question Interviews These interviews typically consist of one or two interviewers asking you standard interview questions. The company uses this time to weed out candidates that are obviously a bad fit or have poor interpersonal skills. At this stage, they probably will not ask too many in-depth technical questions, but you can expect more generalized questions about why you want to get in the field and what you have built or accomplished so far. Technical Interviews This is the most difficult type of interview and the one that everyone gets nervous about. Every company does this a little dif- ferent: some will make you pair program with other people on the team, some will make you solve problems on a whiteboard, and some will drill you with deep technical questions. You also might get some combination of these three. When you make it to the technical interview, the company should let you know the details about what they are going to ask you to do. Culture Fit Interviews This is where you will probably meet the whole team and answer questions from other developers and team leaders. You can also ask them questions about what it is really like to work at the company. By the time you are at this interview, the company is already considering you to be a serious candidate for the position. The goal here is to be friendly and humble with the team. Make sure they see that you are able to handle criticism well and work as a part of a team. Off-Site Interviews Sometimes companies will invite you to lunch or coffee for an interview. I have seen this a lot with consulting companies who want to see how you present yourself and interact with other people, not just the interviewer that you are trying to impress. You should prepare by researching the venue and their menu. It is a good idea to know what you are going to order before you arrive. Try not to be picky and be kind to the people that are serving you. The interviewer will take note of every interaction you have. Phone Interviews Many companies will schedule a brief phone screening before the first interview. These are usually mid-sized or smaller compa- nies who want to whittle down the field more efficiently than through in-person interviews. You should try to ask questions that build a relationship with the interviewer, which will show them that you are well-prepared and interested in the role If you are applying for remote companies, you will probably be doing only phone interviews and video conferences via Skype or Zoom. Make sure you read over the instructions ahead of time and download whatever video conferencing technology they are ask- ing you to use. Make it a point to join the call five minutes early and wait for other participants. Even though it may not be as formal as an in-personinterview, tardiness will not be easily forgotten by the interviewers. You should always use headphones on these calls to cut out background noise and distractions, and make sure you look clean and presentable. Companies will also usually call you in between each round of interviews but these calls are just to give you information and set expectations. Make sure you ask them questions about next steps if anything is unclear. Be polite and thank them each time.  Interview Preparation The more prepared you are before the interview, the more impressive you will look to the company. It shows that you are organized and driven, and every company wants to hire eager and motivated people. As a beginner, and especially if you are self-taught, it is going to be difficult for you to get noticed by companies. The best way to give yourself an advantage is with thorough preparation. Interview preparation starts with doing research about the company: •Look at their website and social profiles. •Learn about their mission and what they do. •If they have software products that you can access, download them and test them out. •Look into any open source projects they contribute to. Additionally, reach out to former and current employees about their experience at the company. You will often find that employ- ees will give you important nuggets of information on what you might experience in the interview process. One example is a re- cruiter who worked for a company I was interviewing at let me know that my interviewer really liked the book Clean Code by Robert C. Martin. I made sure to reread the book and brought it up during the interview. The interviewer was impressed and we formed a great connection right away. During your research, you will probably stumble upon employee reviews on sites like Glassdoor. Take these with a grain of salt. They are usually written by disgruntled employees or, in the case of the positive ones, people asked to write reviews by the HR de- partment or management. Some of them are real, but it is usually hard to tell unless you speak with current and former employees from the department you will be working in.  Preparing questions The standard practice in an interview is for the interviewer to ask if you have any questions for them before ending the interview. Employers will be concerned if you do not have any questions to ask or just have the low-effort ones like “What would I be doing in this role?” that you come up with off the top of your head. You should prepare the questions you are going to ask in advance. You should ask questions that show you want to be successful if you take a job at this company. You also want to build a rela- tionship with the interviewer and help them see you as a future coworker. Here are some examples of good questions you can ask in general interviews: •How did you come to work here? Asking the interviewer these types of questions can help you build a relationship. •What do you like about working here? This is a great question to ask for deciding if the company is the right fit for you. •What are your top company values? •What is your policy about open source? •What is the company policy on working on other projects outside of work? This is a good question especially if you are planning on freelancing while you work at the company. Some companies do not allow you to do any kind of programming for pay outside of work. Just be careful that you do not come across as someone who does a lot of moonlighting; they might think that you won’t have the mental energy or focus to fulfill your job responsibilities. •What are your policies on running a personal blog or making technical videos? Very few companies have policies against these activities, but it is good to get information on what you can or cannot do up front so you do not make mistakes later. •What struggles are the company currently facing and how are you dealing with them? •What challenges are you expecting to face in the future as the market evolves and how are you preparing for them? •What challenges do some of the other developers experience here? •Is there a good relationship between the IT department and the rest of the business? •What additional skills do you think I need to learn first if I come on board at this company? As a new developer, this is a good question to show that you are humble. It also gives you the chance to tell them that you have some experience in that area if they are mistaken, or to tell them that you will work on improving in that area. •Is there any reason you are hesitating in hiring me for the position? This question can also show them that you handle feed- back well. •Can I speak with one of the developers one-on-one? If they say no to this question, you should question whether working at that company is the right choice. The only reason to not let you speak directly with a member of the team would be if they are hid- ing something; probably employee dissatisfaction. It is also ok to ask to talk to someone you can connect with. For example, I usually ask to talk to a female employee before I start working at a new job. It is just something that makes me feel more comfort- able. Here are the questions you should be asking during interviews with the technical employees: •How do you manage your projects? •Do you work in sprints? What does a sprint look like? What sprint ceremonies do you perform? •What does the development process look like? •How long do developers normally stay at your company? Why do(n’t) they stay? •How does the team get along? If I asked any of the team members, would they have concerns about the cohesiveness of the team? •When there is a problem, how is it addressed? •What is the work-life balance like? How many hours do employees usually work? Overtime? •Are there opportunities for me to be mentored and learn from senior developers? (Especially important if this is your first developer role.) •What kinds of ongoing training opportunities do you provide? •Can I speak privately with at least one developer on the team? •Ask them some questions related to their tech stack based off of the research that you have done. Prepare plenty of questions so you will have some left at the end when they ask you if you have any more questions. I like to pull out a notebook or tablet where I have my questions listed out to show the interviewer that I came prepared. If it is a remote inter- view, I also take lots of notes during the interview. You can also ask about what the next steps are, but the interviewer will usually cover that.  Preparing answers There are several dozen common questions that you will be asked during a standard interview. You should write out the answers to these and practice saying them out loud before the interview. It even helps to watch yourself answer those questions in the mirror or record a video of yourself answering them so you can watch your facial expressions and tone and adjust them accordingly. Practice saying the answers with a smile and confidence, even if you are the only one in the room, it will help calm your nerves and feel more prepared for when you’re in an interview. The first category consists of open-ended questions. These are also the hardest to prepare for because they often have slight variations. You will almost always be asked the following: •Tell me a little about yourself. they want to see what is important in your background. Do not start talking about your child- hood or anything else that happened a long time ago unless it is short and relevant. Focus on what led you to look for a job as a programmer. •Why do you want to work as a software developer? •What made you interested in applying for this job? •What do you like about this company? •Tell me about a time when you ____. •What would you have done in ____ situation? •Give me an example where you displayed leadership or went above and beyond at a company. •What would your previous co-workers say about you? •What is your greatest weakness? You should not say something positive like ”I work too hard, it makes you sound disin- genuous. Everyone has weaknesses or improvements they are working on professionally. Bring up an actual weakness and then tell them how you have been working to overcome that weakness. I always bring up my poor communication skills and how I have been working to improve them over the last decade. •What are your strengths? Or, what is your greatest strength? •What kind of salary/compensation are you looking for? The salary question is tricky to answer. They should not be asking you about it until after the technical interview but it never hurts to be prepared up front. Do not give away the salary you are looking for in the first interview. Tell them that if we both feel like this job is right for me, then I’m sure we can come to an agree- ment that will make both of us happy. If it is the final interview and you are asked, then know what your value is and be able to support your value. Also, make sure you know what kind of total package you are looking for and not just salary. Any cut and dry questions such as, ”What are your hobbies?” or ”Where did you go to school?” should be easy enough to answer without practice. If you can prepare answers for the questions listed above, you will be starting off in a good place.  Preparing for Technical Interviews Once you start getting companies asking you to interview with them, you need to start preparing for technical interviews. Your preparation steps should include algorithm challenges, pair programming, and learning about the latest updates of the technologies that you use. I recommend using HackerRank, Project Euler, freeCodeCamp, and Coderbyte. Try all of these platforms and pick one or two to use for your training. Do not be afraid of the word ‘algorithm’ either. You do not have to be a math wiz. The challenges start off from the very basics and get increasingly more difficult. You should plan to spend a few hours every week just working on these types of challenges to get your chops ready. When you feel comfortable doing the basic algorithm challenges on these sites, I also recommend that you take a look at Khan Academy’s course on algorithms under their Computer Science curriculum. This will help you understand the best approaches for solving these problems. At your level, you should expect to be given beginner or intermediate challenges in a technical interview. If they throw something advanced at you, they are probably not expecting you to be able to solve it, but rather seeing how you think. You should research the company’s tech stack enough to be able to talk about it in the interview. When it comes to solving challenges, however, many compa- nies will let you solve challenges in the language you know best, not just the ones they use. If they ask you to whiteboard a solution, then you will be expected to write out your steps and talk them through it as you go along. It is difficult to write code with a marker, instead of a keyboard, not to mention explaining everything you are doing along the way. Some companies have told me that they do not care if you answer the problem fully, they just want to see your thought process, so that is what you should practice for. There is a really good book called, Cracking the Coding Interview by Gayle McDowell that details how to handle these types of interviews. Many people will probably recommend it to you. I do think it is more advanced than you need when you are getting your first job in the industry. I recommend starting with doing some research on whiteboarding interview examples on YouTube and your regular search engine. Pair programming interviews are getting increasingly more common. They are in many ways a more accurate measure of what you can do as a candidate because they are seeing you code live in your regular development environment. The best ways to prepare for these are to practice the algorithm challenges I mentioned earlier and practice pair programming with a partner as much as you can. Again, they are not just looking for correct solutions in these interviews; they want to see how you solve problems on the fly and how you work with other people.  During the Interview The number one best thing you can do for yourself is to be relaxed and act natural. More important than technical ability is how the people in the company perceive you during the interview process. Take a deep breath and walk in with a smile. What’s the worst thing that can happen? If you do not get the job, there will be plenty more opportunities for you. Even in the tech world, soft skills are important. Be friendly and likable. A 2019 LinkedIn Global Trends survey found that soft skills was, by far, the number one job skill that companies look for. Lydia Liu, Head of HR at Home Credit Consumer Finance Co., said “While hard skills may get a candidate’s foot in the door, it is soft skills that ultimately open it.” Have a notebook or tablet ready to jot down quick notes and to reference the list of questions that you have prepared to ask the interviewer, but do not spend too much time looking down at your notes. Making eye contact and connecting with the interviewer is important. During the interview, you should make sure to bring up what you are passionate about even if it is not tech-related. This will help the interviewer connect with you. You also have to show them what makes you valuable and what you plan to accomplish in this new role. These are all things that you should be thinking of how to insert into your answers during the interview. If you get bogged down thinking that they will not want you because of your lack of experience, you likely won’t get past the first interview. You have to assume that you are qualified for the job and that you are an exceptional candidate. They are interested in you because they invited you for an interview, so use that knowledge to give you some confidence going in.  Illegal Questions Discrimination in a job interview is illegal (I am speaking about the U.S. regulations here, you will have to look up your local laws if you live in another country). Do not answer questions related to age, sex, home ownership, place of origin, ethnicity, race, or reli- gion. That stuff doesn’t matter in a professional job interview. Sometimes they try to ask these questions in a roundabout way, and if you feel weird about a question, say that you want a moment to think about it first. Before the interview, do some research about what questions the interviewer is not allowed to ask and make sure you do not offer up that information either. There are also questions that should not be asked, even if they are not illegal (in a few states they are illegal). These include ask- ing a woman if she is pregnant or plans to become pregnant, or about her childcare situation. Do not expose personal information like this. Unfortunately, it may open the door for job discrimination, especially in tech where it can be demanding to keep up with new technologies. If they think you might be taking months off of work soon to have a baby, then you might not get the job for rea- sons that have nothing to do with fit or qualification.  Take-Home Projects This is a very common part of the interview process. A company will ask you to build a small application or feature according to a set of instructions. You will usually have about a week to complete the assignment and upload it to Github or wherever else they want. I recommend not spending more than 5-10 hours on this type of project. Yes, it is a learning experience and good to impress them, but you are not getting paid for your time either. If you do not finish all the features that they wanted you to, note that in the email that you send them when you are done with the project. Most of the time, they are not expecting you to finish everything. They want to see how you write code and prioritize your work.  Following Up Writing them a thank you note within 24 hours of the interview is basic etiquette. It just has to be a few sentences expressing your gratitude and saying that you look forward to hearing from them soon. It is also nice to include some new information that you learned from the interview. Wait a week and you can send them another follow-up email or message if they haven’t contacted you yet. Sometimes, they just get busy and forget, so it is good to remind them that you are still interested. If you get a rejection email, then reply graciously, say that you want to improve, and ask for feedback. Some companies have poli- cies against giving you any information on why they aren’t going to hire you, but some companies or employees you met with will be more than happy to give you insight into how they think you can improve.  Other Tips & Recommendations •Do not bring up salary with a company until the very end when they know your worth. Research current industry salaries at places like Salary.com. I keep saying this throughout the book, just to make sure you remember when you are asked on the spot for this number. •The only time you should bring up salary early is with a third-party recruiter. •Make sure you never tell interviewers what you are currently making. •Honesty and showing that you can learn from mistakes is important. •Many companies want likable, presentable people. Especially if you are client-facing. I have read about other companies that will not hire people who show up in a suit. Know your audience and dress slightly better than the rest of people: if it is a casual place where the developers wear T-shirts, then show up in a polo. If it is a consulting job, then you might be client-facing so you should show up wearing a suit if possible. Do not feel bad about asking the recruiter how people at the company normally dress. •Do not be too informal in your manner of speaking either. They are not your friends; you are there to establish a work- ing relationship. •Do not overshare. No one needs to hear your life story when they have just met you. •Do not sound overqualified. Go in knowing as much as you can about what they want and what you want. •Do not be boring. Act interested in what the company is doing. •Be forward. Ask them to try you out. This has worked for me in the past. Like I said earlier in the book, create your own opportunities. •Be able to talk about why the company fits in with what you want and also how you can fit in and help the company. •Use the word ”we” in the interview when talking about previous employers. This makes you sound like a team player. •Practice with someone. Sometimes you do not realize what mistakes you are making. •Have some enthusiasm about the technologies you work with. •Show enthusiasm about the opportunity at the company, not desperation. Do not say, “I really need this job.” Say, “I’m excited about this position.” •Do not second guess your answers or bring up that you are nervous. •Do not say bad things about the company or product. •Do not say bad things about previous employers or managers. If they ask about a previous company that you were let go from, just say that there were value or cultural differences between you and the company or managers. •Be punctual. Make sure you save their number in your phone in case something happens and you have to be late. Being prepared the night before usually prevents this situation. I very embarrassingly was late to an interview four min- utes from my house because I couldn’t find the coffee shop and I didn’t have the interviewer’s number saved. I felt flustered for the whole interview after that. •Show them that you have a positive attitude about work and life. •Do not be arrogant. Pretending that you are perfect is a big mistake. You do not know everything.  Conclusion Interviewing is a way to build a relationship with current employees at the company and for you to see if it is a good fit for you. If you are adequately prepared and keep interviewing at more companies, then you should have no problem getting through the rounds and receiving offer letters. Have you had an experience interviewing that you would like to share? Let me know on Twitter, @faradayacademy, or by email- ing contact@faradayacademy.com. Action Steps: 1.Start practicing algorithms and pair programming for the technical interview. 2.Write down answers to all of the most common questions and practice them over and over until they feel natural. 3.Make a list of questions for you to ask companies. Customize this list slightly for every interview. 4.Review things that went well or poorly after every interview and try to improve.