Over the last three years, I was at a startup, a large company, and a smaller company inside a larger company. I’ve interviewed. I’ve been interviewed. I’ve been the deciding vote and I’ve watched great people get passed over. I’ve seen whiteboarding, pair programming, coderpad technical interviews, hacker rank challenges, take home assignments, written tests, and just about everything else you can imagine.
Here are the things I’ve learned during this time. This post should help you if you’re looking for new opportunities, if you were recently laid off, or if you’re fresh out of college or a coding school. Feel free to reach out to me (rcavezza@gmail.com) if you have questions aboutthis post or if you have interest in applying for an engineering role at Liberty Mutual (Here’s a post on why Liberty is awesome and why I joined).
Finding Opportunities
Make a list of companies you want to work for
This is probably my favorite part of looking for a new job. You have a blank canvas. You can work anywhere. Ever wanted to live in Hawaii? Hell – now’s the time. Ever wanted to work for a cool company like EA Sports, Google, or Facebook? Put it on your list. The world is your oyster. Don’t limit yourself to companies similar to where you’ve worked at in the past.
Also – ignore job postings. A lot of great positions are filled by internal referrals and never get posted to job sites. If you put in the time, you should be able to get a referral for almost any company you’re interested in applying to.
I would suggest making a list of at least 15 companies to give you a chance to sample many different types. You don’t want to limit your search to just a few companies, but rather, a larger pool. Some people you will email and will never respond. This can get disheartening if you’re only waiting for that one email, but if you’re looking at 15 different companies at once, you won’t fixate on one person not getting back to you. You should also view this like a conversion funnel. X% of the jobs you apply to will give you a phone call. A percentage of that number will get you on another call for a technical interview. A percentage of that number will bring you in for an in-person interview. A percentage of that number will give you an offer. In an ideal world, you will have multiple offers you can choose between.
This may be difficult to keep track of, so I highly recommend keeping a Google spreadsheet of all current opportunities. Also, you should add companies to the pipeline as opportunities don’t turn into offers.
Always look for a referral
You should always look for a referral for any opportunity.
A friend in HR once told me that hiring a friend is better than hiring a friend of a friend. Hiring a friend of a friend is is better than a referral from someone you work with. And a coworker’s referral is better than a random resume from a job board.
When it comes down to a decision to hire someone, it always makes hiring managers feel a little better if someone is vouching for that person – even if its subtle. Put yourself in the hiring manager’s shoes. Random people are risky. There’s no one vouching for them.
In an ideal scenario, your best friend works for the company you are applying to, but it’s more likely that you have a common LinkedIn connection. When you do, reach out to the common connection. Let them know you’re interested in working at their connection’s company and then ask for an introduction via email or on LinkedIn.
If your mutual friend sent the intro, you should thank your friend for the intro and then ask that other person for coffee. I would tell them that I’m an engineer and I’m interested in opportunities at their company. And I’d also mention that I’d like to learn more about the culture and what it’s like to work there.
If a mutual friend doesn’t send the intro, you can always email the person you wanted to get connected to directly (or send them a request on LinkedIn). If you want to email them directly, there’s a chrome extension called hunter.io that will make it easy to find their email address.
Be open to different opportunities
During the course of your job hunt, you will get random emails and LinkedIn messages about different job opportunities. When you get this type of email, give the company a shot. There’s really no downside. Even if you weren’t initially interested in the company, you might love the people and the culture there.
When I was job hunting, a friend mentioned opportunities at Liberty Mutual early in my job search. I didn’t give the opportunity a lot of consideration. I knew I wanted to work in a startup environment – not at a larger company. Boy, was I wrong! I’m really lucky I changed my mind and explored opportunities at Liberty because it ended up being the perfect fit for me. If I didn’t give it a chance, I would have never found out how great it was.
The Interview
Know the format before the technical interview
It’s okay to ask the format of a technical interview. Most of the time, companies will tell you what to expect. If you know the types of questions you should expect in an interview, you’ll be able to practice and prepare for the specific format. It’s a different mindset going in if you’re writing on the whiteboard vs. on a computer.
One of the mistakes I frequently made was that I would try to improve weaknesses from the last technical interview instead of work on what I needed to succeed on the next technical interview. While you need to make sure you’re fixing up your weaknesses, you also need to be prepared for the next interview.
Knowing if pseudo code is okay or if you need to know specific syntax is important. Whiteboarding is a different mindset than writing on a computer. A timed hacker rank challenge is different than exercises on coderpad vs. a take home technical assignment. Just like any mid-term, knowing the format of the test will help you prepare.
Don’t mention your weaknesses
I am a very firm believer that it is the company’s job in technical interviews to assess your technical competencies.
If you feel worse about your front-end experience versus your back-end experience, don’t let them know that. First of all, it’s their job to assess your skills. Second, developers are often harder on themselves than other people. Just because you don’t love your front-end skillsets doesn’t mean other people won’t be envious of what you can do.
Also, don’t make excuses as you code. I’ve seen it happen. I’ve done it in the past. I’ve also heard this mentioned in interview debriefings. If you mention you are not great at something, your interviewers will take your words and mention them later. Even if you are being humble, what you say often becomes “the truth” in technical interviews. Make it hard for them. Don’t speak about your faults. Put your best foot forward. Be confident. Let them know you are competent in all parts of your work, and put the work on them to be able to prove otherwise.
Make sure you are prepared
Research company interview reviews on GlassDoor. Don’t assume the questions will be the same, but you can expect similar questions based on available reviews.
Cracking the Coding Interview Book – This book is fantastic! I highly recommend it if you are interviewing. It has a lot of commonly asked behavioral and technical questions. It helps you brush up on CS fundamentals and commonly asked MVC and OOP questions. If you are interviewing, you must buy this book!
Go through HackerRank challenges – A lot of companies will use tools like HackerRank to decide if they should bring you into the office to give you an in-person interview. If companies are using this, you should use the platform in order to practice. They provide many different options for algorithm, data structure, and other types of challenges. They also have dozens of languages available for you to code in.
Check out InterviewCake. Interview Cake is one of the best kept secrets in programming interviews. If you aren’t great at technical interviews, check out this website. It’s the only resource online that recreates a technical algorithm interview (which you often see when an interviewer asks you to use coderpad). It will have you create an initial solution. It will ask you if you can do better. It will show you how you can do better and how the algorithmic efficiency of your solution can be increased. It will teach you how to ace algorithm interviews. It’s probably the best resource you will find online to help you solve these challenges. Don’t take my word for it, go try their demo and you will see why it’s so great!
Post Interview
Learn from every interview
I had an “interviewing notebook” during my job search. In it, I would write down every term I didn’t fully understand. If I was asked a question and I wasn’t happy with my response, I would write it down. Taking note of your mistakes is the first part in correcting them.
I suggest writing these things down in the middle of an interview. If you don’t feel okay doing that, make sure you open up your notebook as soon as your interview is over, and scribble everything you remember not being able to answer efficiently.
If you don’t know the answer to a question once, that’s okay – it happens. If you fail to answer the same question from multiple interviews, that’s your own fault. Make sure you go back in this notebook when you get home and look up what you didn’t fully understand. Software development is about continuous learning.
Go back to the fundamentals
Depending on the company you are interviewing with, they may want you to know a lot about Big O notation, data structures, and algorithms. This is something self taught developers often struggle with. You can take 2 online classes for free to level up your skills and fully understand these concepts. I highly recommend Steve Skiena’s Algorithms class and Brian Harvey’s Intro to Computer Science class.
Even if you never learned them, CS fundamentals aren’t too tough to learn. I recommend going over teachyourselfcs.com and following their recommendations to fill in knowledge gaps.
Ask for feedback explicitly from your interviewers
You should already be writing down what you think you did wrong in your interviews. However, this isn’t always good enough. You also need to find out what the interviewer’s reasons were for passing on you if you don’t get an offer.
I suggest explicitly asking interviewers why they passed on you. You should ask for feedback from your interviewer. You should mention that you’re always trying to improve, and you need to find out what to focus on. Ask them if they can provide any feedback on your interview or suggestions on what you should focus on as you continue your job search.
Companies don’t really have incentives to give you this feedback, but a few will provide it to you if you explicitly ask. Not all feedback is created equal, but any negative feedback you get from a company is a gift. It tells you exactly what you need to improve. It tells you why you didn’t get the offer. You won’t always get it, but make sure you follow-up and ask at least twice for feedback after an interview.
You should get in touch with me
If you are interested in exploring opportunities at Liberty, I’d love to speak to you. Connect with me on Linkedin (http://linkedin.com/in/cavezza) or send me an email (rcavezza@gmail.com)
If you’re interested in finding a new gig and have no interest in Liberty, I’d love to talk to you, too! There’s two reasons: (1) I learned a lot about job hunting over the last few months and can help you land the job you want and (2) your perception of Liberty probably isn’t accurate and I’d love to give you the lowdown – the good and the bad about software at Liberty. You should also connect with me on LinkedIn (http://linkedin.com/in/cavezza) or send me an email (rcavezza@gmail.com).