Photo by [Pedro Lopes](https://unsplash.com/@pedrinholula?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
on [Unsplash](https://unsplash.com/s/photos/timelapse?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

Photo by Pedro Lopes on Unsplash

If you got invited to an interview for your dream job in tech you need to come prepared. This plan will give you a guidance on how to get ready and grow in confidence for whatever questions you might encounter.

Why You Need Preparation

Your find your developer dream job online and you apply. You get a swift response with an invite to an interview next week. The hiring manager, another senior developer and somebody from HR will attend the interview. You mark the date and jump into the interview without preparation. Congratulations, you have set yourself up with a huge disadvantage and the job of your dreams might slip through your fingers because you rewatched a Netflix series for the 5th time instead of preparing for your interview.

Especially if you have never done a technical job interview before, you should get familiar with the situation. You should have some answers up your sleeve if asked about the short duration at company XYZ in your resume or know something about that new framework which was mentioned twice on the job posting.

To avoid awkward moments of silence and rash answers to questions, practice presenting yourself adequately and deliver your selling points with confidence. You cannot send an e-mail to the recruiter after the interview with all the points about yourself that you forgot to mention. Nobody listens to your explanation on why you do not know how to call a function recursively.

You have 45 to 60 minutes in the interview to shine brightly. Use it wisely and give an authentic picture of yourself. Make clear why the only reasonable decision is to hire you. Be smart when negotiating your benefits. Get the job that you truly want.

This article describes my 10 step plan to prepare for your next interview:

  1. Understand the job posting
  2. Do the research
  3. Craft a sales-pitch
  4. Prepare for resume questions
  5. Solve the technical quiz
  6. Solve the non-technical quiz
  7. Ask your own questions
  8. Negotiate your way
  9. Practice makes perfect
  10. Read some more

Step 1: Understand the Job Posting

Study the job posting thoroughly. Try to divide the information into two areas: expected skills and responsibilities that you will have. Check the job posting for specific technical keywords:

  • Programming Languages
  • Libraries and Frameworks
  • Domains like networking, databases, containers, etc.
  • Software development methodology, for example SCRUM
  • Established best practices like CI/CD

This might give you an insight into the maturity of the organization regarding software development. Does it sound like you will be the only person in charge of establishing an automated build pipeline? Are they shipping code directly to the customer or is QA ensuring a certain level of quality?

Most likely the job advertisement contains requirements regarding your people skills that give away a bit of information about your future workplace, for example:

  • Does the team consist of mostly junior developers or experienced veterans?
  • Are the team members working at the same location or distributed internationally?
  • Will you have close contact to stakeholders, especially customers?

Write down any open questions for the interviewer. These items will come in handy in a later chapter in your preparation and the final interview. Of course a job advertisement will not give away a complete picture of the work culture and environment. But even formulations that seem too vague and generic will give some information that these areas might be not be optimal.

Step 2: Do the Research

Find out about your potential future employer. Research some general key points about the company, for example:

  • How long have they been on the market
  • What is their main product or service
  • How profitable is their business
  • How many employees are working in the advertised division

Research some news articles from the last year about the company. What is the sentiment in these articles about the company and what current challenges are they facing? Does the company have a high turnover of employees or did they buy any companies or get bought in the recent past?

Have a look on Youtube if there were any recent talks from tech people of the company you are applying to. This could give you valuable insight about the company and also help you to ask more specific questions. Additionally it shows your general interest in the company.

You can use platforms like kununu to see employees’ ratings of the company. Be sure to take these ratings with a grain of salt: some of those might be from frustrated ex-employees that were terminated for valid reasons. In larger companies there are also big differences between divisions and departments, so one review from a sales manager might not reflect the working culture in engineering.

Search LinkedIn for the names mentioned in the e-mail from the recruiter or the names of the attendees of the upcoming interview. You might see their resumes and which positions they already held at the current company or previously in other companies. However, do not go into specifics about these facts during the interview - you don’t want to give the impression of a creepy stalker. Instead use it to create a picture about your potential future workplace.

Step 3: Craft a Sales-Pitch

A job interview is like preparing a sales contract. You are offering your time and your skills to your future employer. If you are offering something you need a sales pitch.

Here a some points that you need to consider for your sales pitch:

  • Which advantages you brought to earlier employers
  • What benefits you could bring to the team
  • How you can contribute to different topics, including non-technical ones

Start a sales pitch bullet point with a broad description and then make it specific, for example by mentioning specific situations from former jobs.

  • “I can transfer knowledge from my experience in different industry domains to new challenges. When I worked at company XYZ within the area of ABC I could implement the way we tested at company UVW to achieve a higher product quality.”
  • “I am always looking for opportunities to improve productivity. By automating ABC at company XYZ we saved X hours every time we made a new release of the software and could release more often.”

The interviewer might not give you a specific question to describe yourself and deliver your well thought-out sales pitch. But you can use the different bullet points in answering other question where you might see fit.

Avoid giving a cocky or arrogant impression. Be self-confident when presenting your selling points but do not try to oversell yourself. Instead be authentic and clarify with examples from your working experience.

Step 4: Prepare for Resume Questions

  • “Why did you choose to study at college XYZ?”
  • “Why did you choose to leave this position at that time?”
  • “Describe a difficult situation with a customer/colleague/supervisor and how you solved it?”

The most prominent questions that are asked at least 75% of the time are: “Why would you like to work at our company” or “Why do you want to leave your current position at XYZ?”. You definitely need to prepare well thought out answers for these questions.

Be aware to not violate any NDAs with former employers when answering specific questions about job positions in your resume. It safer to say “I am can only answer this in broader terms” than getting yourself in trouble.

Avoid bad-mouthing previous employers. Speak about “challenges” and “unexpected events” rather than “idiotic feature requests” and “disorganized project management”.

You should be prepared to answer questions about your personality:

  • “Give us three characteristics that your colleagues like / do not like about you”
  • “How do you perform under pressure?”
  • “What motivates you?”
  • “Which traits in a person do you like / do you not like?”

Step 5: Solve the Technical Quiz

Preparing for programming questions could fill its own series of articles. Whole tournaments and websites are dedicated to the programming puzzles and brain teasers that you might find in technical interviews. Your interviewer might have picked it from the last

  1. Check out which programming environment you will be coding in. This could be an old-school shared word-document, an IDE like Visual Studio or specialized online tools like coderpad. If you know which tool is used, you can practice your programming puzzles directly in these tools before the interview. This ensures that the code editor is already familiar to you. Otherwise this new environment could potentially cause you unnecessary additional stress when in fact you need to focus on the actual task.

  2. Find out which programming language you are expected to write in. Typically the choice is yours between the popular programming languages or the languages mentioned in the job posting. If you decide on the programming language you are using, always choose the one you are most comfortable with. The interviewer will probably understand if you do a quick search on what a specific library function takes in as parameters. However, it will make a bad impression if you need to search how to construct a dictionary in Python.

  3. Exercise specific programming puzzles. Pick a programming question and try to solve it. Set a timer to five minutes. If you do not have at least an almost working solution, use a hint at the beginning of the solution. See if it helps and continue another five minutes. If you have a working solution, try to refine it. Search for possible non-functional requirements to improve it, for example with regards to execution speed, memory or disk usage if applicable. Think about maintainability and testability. If you cannot solve the quiz, make sure to look up the solution and type out the complete solution in the chosen coding environment. This improves learning. Mark the question as to be repeated later for practice again.

  4. Brush up on generic programming topics. Pick topics that might be relevant to your new job position but you lack some experience in. These topics could be data structures (e.g. graphs or trees), algorithms (e.g. search or brute-force), or testing strategies (e. g. fuzz testing).

Examples of general technical questions you could encounter:

  • The automated test suite is failing during the nightly build but there were no changes in the code since the last time the tests were passing. What could be the reasons?
  • You are tasked with implementing an automated test strategy for a legacy code base of 100k LOC. How would you realize this without breaking ongoing feature development?

You can also encounter programming language specific questions, for example: “Name three examples for undefined behavior in C++” or “What is the difference between =, ==, and === in JavaScript?”. Of course, these questions will be about a programming language from the job position. You can brush up your knowledge on the programming language by reading books or blogs or going through the top questions on this programming language on Stack Overflow.

Similar to the programming language questions you could be asked about a specific library or framework that was mentioned in the job description. You are not expected to know all details of every tool mentioned in the nice-to-have section of the job description. It is beneficial if you do not know the answer that you can mention some specific sources that you would search.

Step 6: Solve the Non-Technical Quiz

The interviewer can employ questions that are aimed at your social skills in communication and understanding of team dynamics. These questions might be specifically asked in a way to provoke you and challenge your composure. It is important to be as professional as possible, because any emotional reaction could be reasonable, but potentially leave the impression that you might not be fit for the job.

Examples for non-technical questions you could encounter:

  • You have an idea for a new feature for the product. How would you present this to a technical project manager?
  • How would you present the same idea to a sales person?
  • Your idea is dismissed because of urgent deadlines. How would you react?
  • Your idea sounds interesting to the management people. You are expected to develop a plan to implement it. How would you approach this?
  • Your colleague is refactoring a big part of the code base and breaks your unit tests. Instead of fixing them or talking to you he is commenting out the tests. You see this in the morning in the version control history. What do you do?
  • You found out that a specific programming practice outlined in the coding guidelines is causing performance problems throughout the code base. When and how would you tell your colleagues?
  • A software architect from a different department higher up in the hierarchy is expecting your team to migrate to a new technology that all of you have not used before. There is a steep deadline to implement the changes. How would you proceed?
  • You are presenting a new feature to the customer. You are encountering a bug that causes the application to crash. How do you communicate this to the customer?

You have to ask counter-questions to form a reasonable answer to these questions. Ask about the other people involved, the reasoning behind specific actions or any additional info regarding the involved technology. It shows that you are not keen on hasty solutions without more context. These counter-questions to the questions above could sound like this:

  • “Does the technical project manager himself prefer to use presentations or whiteboards?”
  • “What is the technical background of the sales person?”
  • “Was the dismissal in person or per e-mail?”
  • “Did management already specify a budget?”
  • “How is my work-relationship with this colleague?”
  • “Did the team develop this practice themselves or is it from outside (book, consultant, etc.)?”
  • “Do we have time and budget for trainings?”
  • “Is the software already deployed to production?”

The counter question should be easy to answer for your interviewer and leave no room for interpretation. It does not matter if you do not have a full context or background to answer these questions. The interviewer is more interested in your approach to specific situations. That is why most of these questions have more than one way to answer.

In your answer it might be helpful to draw connections to your own experiences from similar situations. Just be aware: do not bad-mouth former colleagues or employers. This is frowned upon and unprofessional. Instead of saying: “I had a similar incompetent colleague who fucked up my code” try to say: “a former team member introduced a problem in our codebase, so we discussed it and fixed it together via XYZ”. There are no “clueless sales clowns” but rather “sales colleagues without technical background”.

Make up your own questions, using examples from your everyday life at your current job and write them down. Write down potential answers as key points. This ensure that if you encounter further ideas later you can add them more easily and they become easier to remember.

Step 7: Ask Your Own Questions

A job interview is not only an opportunity for your potential future employer to get to know you. It is also the same opportunity for you to learn about the company you might be working at for the next years. Typically at the end of an interview the interviewer gives you the opportunity to ask your own questions.

Here are some examples for general questions that you could ask the interviewer:

  • What does a typical day for this position look like?
  • Why are you looking for people for this specific position?
  • What departments will I collaborate with and who will I report to?
  • Will I have direct contact with customers?

If the interview includes a technical person from the team, for example a project manager or senior developer or architect, you can also ask more specific technical questions:

  • Which software development processes do you follow?
  • What does our testing strategy look like and what parts are automated?
  • Do you release often and how long does it take to get the product to the customer?
  • Do you plan on migrating to different technologies in the future?
  • How big and how old is your code base?

There is the famous Joel Test for additional ideas for technical questions. The test is intended for a quick assessment of a software development team’s standing with regards to established practices. Although it is from the year 2000, the bullet points still apply today (maybe one or two questions about CI/CD could be added).

Take some ideas from Joel’s list to ask your interviewer in order to know what to expect when working in their code base. But do not go through every point on Joel’s list step-by-step or you will make yourself look like you cannot come up with your own questions. Mark one or two that are important to you.

I’ve come up with my own, highly irresponsible, sloppy test to rate the quality of a software team. The great part about it is that it takes about 3 minutes.

- Joel Spolsky

You can write down your questions - it is typically not frowned upon if you bring them to the interview and it ensures that you don’t forget something you really wanted to know. However, if you forget to ask that important question - it is no problem to simply ask in a friendly follow-up e-mail after the interview.

There will always be unknown variables in a new workplace. You have to rule out that those are no deal breakers for you, for example work-from-home-policies that are too strict for your liking.

Not asking any questions is typically interpreted as a lack of interest from your side. Even if the earlier parts of the interview already clarified the questions you wrote down, you can ask for more specific details. Say you wanted to ask what software development process the company is following but the interviewer already talked about their agile process during the technical questions. You could ask a more specific question about the length of sprints and their reasoning behind this or how they implement suggested changes from the retrospection meetings.

Step 8: Negotiate Your Way

Your time is valuable. That is why you should not sell yourself below market value. You probably already did some research to find out what the salary range is for a job position like the one you are interviewing for.

The question about your expected salary will definitely arise during the interview. Do not answer right away. This way you will lose a lot of negotiation power. Instead ask for the offered range for this position.

This gives you the opportunity to negotiate depending on their answer. If the range is similar to yours, you can try to negotiate at the top end of this range. If the offered salary range is above the one you expected, continue to negotiate on this higher level. If the range is below your expectations, tell the interviewer your expected range and emphasize points from your sales pitch.

It might also be the case that the interviewer does not answer your question and you have to take the first step in naming a range in negotiations. You should start with a specific number at the high end of your expected range and continue negotiations from there.

You also have the opportunity to negotiate benefits. If the salary range is lower than you expected, maybe the interviewer can offer different benefits that can make up for it: company stock packages, pension plans, or take-home vehicle. This is highly depend on the country, thus I cannot make any general recommendations here.

Step 9: Practice Makes Perfect

To get comfortable with the situation you need to practice. You can ask your partner, friends, or relatives to do a mock interview with you. They don’t need to have technical background or know anything about the company you are applying for. The questions can be read from the notes you made during your preparation phase.

You should try to keep the practice serious. There is nothing to be gained if you are just joking around. I also recommend to practice on a table opposite each other if you have an in-person interview - or via video call if you have a remote one.

  1. Very quick small talk: how was your weekend, how was the interviewing process for you so far, etc.

  2. Introduction: include your sales pitch from step 3, make sure that it does not sound to robotic or committed to memory. Let your partner ask questions about specific stations in your resume, for example: “What did you do before your current job?” or “What did you learn during your internship at XYZ?”

  3. Technical part of the interview: let your partner pick a programming puzzle from the ones you practiced with, and implement your solution on the editor the company is using. It does not matter if your partner can verify its correctness (because you should have already done this during practice). Your partner can ask generic questions like “Why did you use this solution?” or “What could be an alternative implementation?” or specifics like “Please explain line 12 to me”.

  4. Let your partner pick and ask some of the non-technical questions. Let them ask follow-up questions like “Why would you choose to do it this way?” or “Did you encounter a similar situation in your working past?”

  5. Now it is your turn to ask questions. Let them give generic answers or defer the questions “I would have to look it up and send you the answer via e-mail. Do you have any additional questions?”.

  6. Try to negotiate a salary. Give different ranges for this position: one lower range than you expect and a higher range and practice both situations.

General points you might consider when answering questions:

  • Take a pause before answering a question which requires a long answer. It makes you sound more confident and seem like a more considerate interviewee.
  • Instead of using filler words like “uhm” a short pause is more effective for brushing over your natural nervousness.
  • If you have to think a little longer about your answer do not hesitate to show your thinking process. “I need a moment to think about this” or “Let me try to remember a similar situation from the past” is a better answer than a minute of awkward silence.
  • Whether you are in a face to face interview or interviewing remotely, try to keep eye contact with the different people in the room, sit with a confident posture and keep your arms open and relaxed.
  • If somebody tries to interrupt you during your sentence, try to finish it anyways to show confidence. Then try to address the remark from the interruption.
  • Depending on the other people, it is safer not to joke in order to avoid the impression that they are about to hire a clown - except if you are applying to a developer circus. Keep your answers professional and serious.

Step 10: Read Some More

In addition to researching about the company itself, there are three books that I would recommend to prepare for a technical interview:

  • Programming Interviews Exposed by John Mongan, Noah Suojanen, and Eric Giguère
  • Cracking the Coding Interview by Gayle Laakmann McDowell
  • Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

Additionally, read tech blogs and news to stay up-to-date. You might use this information during the interview to show that you are aware of current tech trends in your field. It also gives you different perspectives on new subjects that help to expand your horizons. Of course this advice does not only apply to preparing for interviews.

Conclusion

There is no golden answer to every interview question. There is no guaranteed-to-get-your-way method in negotiations. It all depends on the situation and the people you are in a interview with. You need to be able to improvise to be successful and present yourself in a favorable manner. But this comes from experience and practice. Preparation helps you to have a few aces up your sleeve and meet interview questions with confidence.

Even if you are not successful in your interview - never take it personally. Ask the recruiter for reasons and feedback, and learn from your experiences. Get up and take your next opportunity. There probably was never a better time for jobs in the tech sector than now. You have valuable skills and that should give you the confidence to present yourself in your sales pitch.

I wish you good luck with your tech interview and landing the job that you want.