10 Powerful Tips for Software Interviews
- Website review. Of course you’re going to look over the company’s website, but make sure you go through it thoroughly, creatively looking for any information that will help you stand out. Hiring managers are going to be turned off if it’s clear you really don’t know much about what the company does, the problems they’re trying to solve, who the players are, important news, product releases. The quality of questions you ask, which can be a big determining factor, can be improved by probing the website. Many times, you can download trial versions of the product and/or white papers, and these can be extremely helpful to review in advance: you’ll make a much stronger impression if you’ve taken the initiative to download the product, have already been playing with it, and can discuss your experiences with it. Another good place to check is the “news” section … what are other people writing about the place you’re interviewing. Other sites such as Crunchbase and Glassdoor can also give insights.
- Use LinkedIn. Make sure to check out LinkedIn profiles for anyone that you know will be interviewing you, as well as for employees that you didn’t realize you already knew. Look for common connections: people that you both know, places you’ve worked, schools you’ve attended – even similar hobbies. Be careful not to overdo mentioning this stuff, because too much can appear somewhat creepy, especially when it comes to outside-work interests. Also, if you do call attention to common acquaintances, make sure you’re confident that person will endorse in a positive way if asked for a back-door reference about you.
- Phone screens. They’re a bit of a special case. Probably 90%+ of companies prefer to start the process with one or more phone screens before deciding to invite a candidate onsite. Realize that the main purpose of the phone screen is to establish whether there’s enough mutual fit to justify everyone’s taking a few hours for an onsite. What the phone screen is not about is to get every single one of your questions answered. If you spend too much time on questions, you may find that you didn’t allow enough time for the interviewer to understand your experiences. You should use the phone screen solely to decide on a “macro level” whether this is an opportunity you want to invest time interviewing for. Don’t expect the phone screen to determine if you ultimately will want to work there. That’s the purpose of the onsite interview(s). Instead, for the phone screen, just focus on a goal of getting the interviewer positive about bringing you onsite, where you’ll have a much better opportunity to make a strong impression and get your questions answered. A little tip I discovered long ago about phone screens is: do them standing up if at all possible. There’s something about standing (and maybe even a little gentle pacing!) that gives your voice an extra energy boost that’s hard to duplicate while seated. Also, it’s crucial to find out in advance whether the phone screen is going to be more of a initial discussion of your background and overview of company culture, or whether it’ll involve technical questions, or maybe even writing code together online.
- Review your resume ahead of time. I can hear you saying now, “what, review my own resume?” Yes, definitely! If it’s on your resume, it’s fair game for the interviewer to ask about. One of the most common reasons that candidates fail interviews is that they just couldn’t talk about what they did in enough depth to satisfy the interviewer. By “depth” I don’t mean bogging down in microscopic details and going off on tangents. What I mean is that, for any project that’s on your resume, you have to be prepared to discuss it thoroughly: what the goals of the project were, what your specific role and contributions were, what the various design, architecture and implementation decisions and tradeoffs were, what mistakes were made, what you learned. Naturally, more insight into these areas will be expected the more senior the candidate, but even a junior software engineer should not come across as a “code monkey” that only implements what they’re assigned, with no understanding of the bigger picture. If you’ve got a “skills summary” section on your resume, be prepared for the interviewer to ask you for more details about your work with any of those. Walk yourself through your own resume in advance, taking the time to remember the significant issues on each project. You don’t want to be caught in the interview making statements like, “I don’t remember the details on that; it was a long time ago.” Especially important is to be confident in discussing what you consider to be your most significant career accomplishments! Review what you’ve put on your resume before the interviewer, and be more confident.
- Tell a story. Everyone loves a good story, and an interviewer is no exception. Again, I’m not talking about unrelated, off-in-the-weeds stories that have nothing to do with the interview and are merely distractions from the business at hand. I’m talking about making the description of your career arc and the reasons you made the job changes you made, your accomplishments, your overcoming of setbacks, your insights and lessons learned, and all this good stuff into a compelling narrative. You don’t have to be a charismatic storyteller to pull this off. Just be yourself, and approach the interview as a human, not a resume personified. Remember that if interviewers feel like you’re a multi-dimensional person with depth and breadth to your career- and world-views, who has met with challenges and grown intelligently as a result, they’ll be more likely to recommend you.
- Review Computer Science fundamentals. This will be especially critical for back-end jobs such as Python Developer, Java Developer, Ruby Developer, etc., at companies that build high-performance web applications where scalability is key, but making sure you’re refreshed on the basic concepts of computer science, and the “right” way to develop software, is important for any type of technical interview in the software field. Did you get a CS degree? If so, make sure to review these topics. If your degree is in something else, it would be a great idea to at least skim through these concepts in advance. In particular, as great as technical bootcamp programs are, they just don’t have the time to prepare graduates thoroughly in many fundamental areas of computer science. My personal experience has been that the most important areas to emphasize are: 1) data structures 2) algorithms and 3) Big O notation. More candidates get tripped up on these technical areas than any other. Additionally, according to the book “Cracking the Coding Interview, 6th ed.” by Gayle Laakmann McDowell, here is a more detailed suggestion for the key areas to review: Data Structures (Linked Lists; Trees, Tries & Graphs; Stacks & Queues; Heaps; Vectors / ArrayLists; Hash Tables); Algorithms (Breadth-First Search; Depth-First Search; Binary Search; Merge Sort; Quick Sort); Bit Manipulation; Memory (Stack vs. Heap) ;Recursion ;Dynamic Programming; Big O Time & Space. Also make sure to review the concepts of object-oriented design & development, and Agile methods.
- Ask questions. Interviewers are expecting you to ask questions, so if you don’t, that’s a red flag for them. The questions you ask should reflect thought, insight and preparation on your part. Certainly you want to ask questions that occur to you in the interview, but you can also have some questions lined up ahead of time that might show off that you did your homework on the company and product. However, make sure that you’re able to ask these questions either from memory, or on-the-fly. What’s NOT impressive is to be reading your questions from a prepared list during the interview.
- Avoid negativity and complaining. It’s perfectly natural to talk about the reasons you want to leave your current company. Just be careful that you phrase them in a way that can’t be construed as overly negative, or that appear to paint your job as ridiculously awful, with a company that’s failing without a clue. You need to present this information in a mature, well-considered way. If interviewers perceive you to be a risky hire in any way (such as being too much of a complainer), they won’t spend the effort to dig; they’ll simply pass on your candidacy.
- Address resume gaps, skills shortcomings, etc. If there’s a problem with your experience that’s small, just let it go and don’t bring it up yourself (of course, if the interviewer brings it up, then you’ll have to talk about it.) You’re under no obligation to point out every last one of your shortcomings. But if there’s a significant issue that could impact your ability to get the job, then you’re probably better off proactively bringing it up yourself. When you do, make sure you’ve thought ahead of time about how to you plan to compensate for the deficiency, overcome it, or at least why it’s not going to be a problem or risk for the company that hires you. Hopefully it goes without saying, but don’t lie about or exaggerate your experience, education, or work history. Are you one class shy of actually obtaining your degree? Then don’t claim to have it (you can say something like “95% complete”.) I’ve seen candidates have offers rescinded because it was discovered they didn’t tell the truth. And the saddest part is that it wasn’t even the thing they were covering up that presented any problem to the hiring company; instead, it was that the candidate chose not to tell the truth.
- How to talk about money. Not knowing how to address the issue of compensation properly can either cost you money by drawing a lower offer than you might have obtained, or even cost you an offer if you price yourself out of contention unnecessarily. Usually it’s best not to be the first one to state a specific number. If you’re asked about money, here’s the ideal way to respond: “Compensation is only one of the factors in my decision to take a new job. Most of all, I’m looking for the right opportunity where I can learn, grow, and contribute to an exciting company, working with a good team doing interesting and challenging work. However, since you asked, my current compensation is X (say what your base salary is, and then also say the amount of any bonuses, stock options, upcoming retention bonuses, etc. that you get), and knowing that, I hope you would make me the most competitive offer you can.” A couple of special cases exist: if you’re making a lot less, or a lot more, than could reasonably be expected for someone with your background. If you’re trying to make up for a very low current salary, you may or may not be able to make it all up in one offer, but you should let the employer know roughly what your expectations are for desired compensation. If you’re making a great deal more than the position you’re applying to warrants, again you should express your expectations to the hiring manager or HR, but realize that many companies are not eager to bring someone in for a dramatically lower amount of money than they’ve been earning. Most of the time, companies will need some time after your last interview to decide if they want to make an offer. Occasionally, however, a company may extend an offer to you right on the spot, while you’re still there for the interview. If you know you want to work there, and you like the offer, it’s fine to accept immediately, and send a clear message of interest. However, if you’re not sure, want to discuss it with family members, etc., then it’s perfectly fine to ask for a day or two to consider it. These days, many companies won’t want to go to all the work of generating a paper offer until they know you’re going to accept it, so you should be prepared to consider the details as they’re presented to you orally. Also, realize that most of the time, companies will expect a decision from you within roughly a 24-72 hour window. It’s more unusual to be given a week or two to decide.
Use these tips, and you’re sure to give yourself an extra edge the next time you take a software interview.
Phil Hurd has been a leading software recruiter in the Greater Boston and New York City high tech communities since 1987. Originally a computer engineer, he became a top performer at a major recruiting agency, then co-founded and ran a boutique software recruiting firm, and now operates as a solo recruiting company called Oculus Search Partners LLC. Contact Phil at firstname.lastname@example.org. Learn more at www.oculussearch.com, and follow the Oculus Search Partners LLC company page on LinkedIn. Contact Phil at email@example.com.