Source: https://dzone.com/articles/dos-and-donts-for-your-next-software-engineer-job
See some tips you need to put your best foot forward and succeed in your next technical interview.
In my estimation, I have given over 2,500 interviews in my career, the bulk of them for Software Engineer positions. I have been interviewing Software Engineers for over 25 years and in my current role as CEO of Solution Street, I conduct, on average, two interviews a week. Solution Street has been evolving its interview process for over 18 years, and we feel like we offer a pretty robust and fair process. In this article, I will give you the tips you need to put your best foot forward and succeed in your next technical interview.
Do’s for a Software Engineer Job Interview
First, let’s talk about interview Do’s. Based on my experience, here is my list of the top seven things you should absolutely Do!
Research the company and people you are interviewing with. Spend some time looking at the company website, the interviewer’s background information (if available), and see if they have written any articles/blog posts. Make sure you know what the company does (what do they build/make/sell?) as well as the interviewer (what is their role?).
Prepare key questions you would like to ask. Your questions should be specific to the company and interviewer(s). Typical questions here are: What type of work do you do? How are the teams made up (cross functional or by function)? What technologies do they use? How is the work-life balance? What are the company's core values and are they real? What are the company’s goals?
Show up 15 minutes early! Don’t be late; if you get there more than 15 minutes early, wait in your car, or in the nearest cafe. If you are going to be late, let them know (but don’t be late!).
Dress to impress. Even if the company is casual, you should dress nicely. You don't need to overdress based on the company's dress code (you should ask about this before your interview), but you should present your best!
Smile. Smile, smile, and smile some more!
Listen carefully. Repeat the question back if you are not sure. I can’t tell you how often we have eliminated a candidate from consideration because they just refuse to listen during the interview. Answer the questions simply and don’t go on and on unless prompted. How well you listen in the interview is a good indicator of how well you will listen in the job!
Be honest. If asked something you don’t know, say, “I don’t know that.” If, however, you know something close, offer details of that if they are interested. For example, if asked if you know Angular, but you only know React, you should say, “I haven't used Angular before, but I have used React and I have done some reading and I feel like I could come up to speed on Angular very quickly.” Express how you are a hard worker and willing to put in extra time on your own time to learn the technology. Don’t cheat; you may be tempted in an online interview to Google the answer - don’t do it!
Don’ts for a Software Engineer Job Interview
Now that we have covered the Do’s, let’s cover the Do NOTs! Here are 10 things that you should never do during an interview (yes, I have actually seen all of these!).
Chew gum. Chewing gum in an interview is never professional!
Bring your phone. Unless you have a sick family member or a spouse about ready to give birth, leave your phone in the car. If you need to bring your phone, explain why ahead of time and make sure you block out all other callers.
Wear jeans. Even in a casual environment, you should wear slacks or a dress to an interview!
Mumble. Some of us talk louder than others. If you are a soft talker, practice with a friend to appropriately increase your volume. You need to be able to speak clearly and concisely. Silence is perfectly okay; don’t feel the need to fill the void with ums and hmms and whatnots…
Be stoic. Be passionate, animated, energetic...drink a cup of coffee before the interview if you need to, but don’t go overboard!
Badmouth anyone or any company (or any technology). Be Switzerland. If you’re asked why you left a company, you can say you weren't being challenged, or it wasn't a fit, but don't say “that company sucks,” or “those guys are jerks” (even if they are).
Ever rate yourself 10 out of 10 for anything (unless you invented it). Let's say you consider yourself a really great Java developer. In an interview, if you're asked to rate your Java programming skills and you say they are a 10 out of 10 but you miss one or more questions about Java, the interviewer will feel that you overrated yourself. But if you rate yourself as an 8 out of 10 and you miss one or none of the Java questions, the interviewer will think...wow, this person is great and humble! When asked to rate yourself, be honest and fair, err on the side of “under-rating” yourself.
Wear dangling/large bracelets or fidget with your pen. Clunky bracelets can be a noisy distraction if you are asked to code as part of the interview and your jewelry continually clunks against the computer keyboard or table. Similarly, fidgeting can be a big distraction. For instance, I interviewed someone who clicked their pen open and shut about 50 times during a 1-hour interview...all I could think of was the pen!
Lie on your resume. Don't even exaggerate, be humble and honest.
Tell the interviewer that you don’t like this kind of work. The interview is not the place to say that your real passion is something completely different and you just do this to pay the bills. Even if this is true, it is not something you should bring up in an interview.
10 Steps to Succeed in a Live Coding Exercise
Now that we have covered the key Do’s and Don’ts of interviewing, many Software Engineer interviews include a live coding exercise. When doing a live coding session, here are my 10 steps to success!
The first step is to repeat the question back to the interviewer(s). Make sure you understand the directions. If the interviewer(s) shares the program problem on the screen or paper, try to resist going directly to reading it. First, listen to the person describe the problem; once they pause, then you can read the problem yourself and repeat it back to them in your own words. Take a deep breath and try to relax!
Make sure you understand the time restrictions. Know how long you have to do the exercise. If you're not sure, ask how long you have to complete it.
Write the signature first. Outline the function calls and parameters passed. If you prefer solving on paper, that is okay, just make sure you ask the interviewer.
Talk through the problem. As you are solving it, ask questions.
Start with pseudocode as comments. Then build as you go.
Code what you know first. The rest will come.
Test the solution. Test out the solution in front of the interviewer(s).
Refactor the code. Do this if given time.
Use good variable names from the start.
Add comment documentation to methods/classes/functions.
I am often asked how to prepare for questions that might be asked during an interview. Software Engineer interview questions vary tremendously from company to company, so it is very hard to know exactly what will be asked. I recommend you start by taking a close look at the job description. Here is a sample job description from my company’s website:
Preparation Process for an Actual Job Description
Solution Street has a great opportunity for C#/ASP.NET developers with a strong background in software design and development having worked on multiple projects over their career with the following experience: 5+years .NET development experience Oracle PL SQL Ability to work with minimal supervision Excellent communication skills *This position is currently remote, but candidates should be local to the Northern VA, DC area.
From reading this, the interviewee should be prepared to be asked about the following in an interview for this position:
C# - What are the fundamentals of the language, and what are typical mistakes folks make using the language? If interviewing for a junior position, you should know the basics of syntax, variable scoping, iterators/loops, assignments, basic Object Oriented constructs. For a mid-level position, possible questions might include namespaces, overloading, more advanced Object Oriented concepts (inheritance, polymorphism, abstraction). For an advanced position, topics might include more architectural concepts, memory leaks, garbage collection, performance, threading and lambdas.
ASP.NET - Here you probably need to know more about the version they are looking for (good question to ask in the initial screen); once you know that, you can get a better idea if this is legacy code base asp/spaghetti, webforms, MVC or .NET core. For each of these, you should know how they work, be able to do an implementation in front of someone, understand the framework, the lifecycle, conventions and configurations. Ideally, you would be able to compare these; what can you do with .NET core that you can’t with .NET MVC? (Core is cross platform.)
Oracle PL SQL - Again, it’s probably a good idea to know what they are looking for here before the interview; do you need to be able to design tables and relationships? Or do you just need to be able to write SQL? How about stored procedures, do you need to be an expert at these?
Minimal supervision - This says they are looking for a self-starter, someone who can troubleshoot problems on their own, someone who can ask the right questions to solve the problems presented. Be prepared for questions like “What would you do if you didn’t have any work assigned to you?” and “What would you do if you hit a blocker?”
Excellent communication skills - This says they want you to be able to communicate well with the team both verbally and in writing. Can you articulate something complex in a way that is easy to understand? You may get a question about how you would explain big endian byte order to your grandmother.
So reviewing the job description can usually help you prepare for the types of questions in the interview, but there are sometimes when the job description is just plain wrong, or the interviewer is not as familiar with the job description as they should be, or they are just “winging it.” So you may get some random questions out of left field that you are totally not expecting. The best way to deal with an unexpected question is to try to understand why they are asking it. For example, if you were interviewing for the position advertised in the job description above and you were asked how well you know Angular (which is not mentioned in the job description), you might reply with the best answer you can...which could be "I really haven't had a chance to use Angular, but I would love the opportunity to!” This sounds way better than “I don’t.” But after you answer, you can say, “I didn't notice Angular in the position description. Are you considering moving to Angular for the front end of this system?” This can trigger a good dialog.
Some interviewers don’t have a ton of experience so they just Google “top interview questions for Java developers” or “top interview questions for React developers” depending on the job position, and use the first few questions they find. So it’s not a bad idea for you to do this since you'll be prepared if they happen to do this!
Some interviewers use a probing technique; they ask a question and if you answer it well, or seem knowledgeable in a specific area, they continue to ask more and more detailed questions until they either run out of questions or you run out of answers. For this style, a great option for the interviewee is to not just answer, but give examples of how/when they used the technology or technique they are asking about.
Lastly, some interviewers like to ask brain teasers or math questions, or big idea/thought questions. Big tech companies are famous for questions like “How would you move Mt Fuji?” or “How many gas stations are in the USA?” The important thing here is not to get flustered and to take up the challenge and show your analytical thinking and problem-solving skills. Clarify the probing questions and come up with ideas and the pros and cons of those ideas.
3 Tips for an Online Interview
During this COVID-19 time, most interviews are being done online, so I have a few hints for online interviews that will help you out:
Make sure you have a good set of headphones with a microphone. Using your laptop mic has a good chance of not sounding well and having feedback from your speaker.
Make sure you have solid bandwidth for the interview and test the tools you will be using ahead of time. In a recent interview, the interviewee had very bad audio and video and the connection kept dropping. At the end of the interview, I asked the individual to run a speed test that showed a throughput of less than 1 MB/second which was a surprise to this person who didn't know why it was so bad.
Find a quiet place free of distractions and interruptions. We have all had our kids or our pets interrupt us during these times which is fine for normal business, but for an interview, you really need to find a quiet place.
I hope my recommendations for a smooth interview process, including my list of do's and don'ts, suggestions for a successful live coding session and how to prepare for interview questions, and tips for online interviews have been helpful. If you have other suggestions, drop a comment, we are always trying to improve!