How to ACE a Software Engineering Interview
How to ACE a Software Engineering Interview
I’ve recently joined X and signed up for the Software Engineering community.
There have been a lot of posts from newer engineers who are nervous or unprepared for interviews they’ve got coming up.
I thought rather than answer them each independently, I’d write a post about how to prepare for a software engineering interview.
What are my credentials?
I’ve read thousands of CVs/Resumes and interviewed probably a thousand people in various companies for which I’ve worked.
I ran the interviewing cohort of about 30 interviewers in my current company for about 4 years in which I helped set the standards of what is expected for an interview, ensured the same process was adhered to and set the expectations of what a good candidate looked like.
I’ll outline here how to prep in a non technical manner for anyone with less than five years of commercial experience. So people I would still include in the Junior bucket.
Disclaimer
Every company has a different interview process. I’ve interviewed people when I worked at start ups, software houses and large multi national companies.
Each process will be different.
Here I will just talk about the common traits between all interviews, whether they be for small companies or large multi nationals.
Before the interview
Know the company
This may sound obvious, but many people overlook this crucial step.
Research the company. Who are they? How long have they been in business? Who is their primary customer? What service do they offer?
All of the information you need to do this will be available on their website.
Bonus points to those who find out something interesting about the company through their social media profiles or some obscure method.
Interviewers will be impressed if you’ve done your homework.
Ask HR / the recruiter what to expect
They won’t tell you specifics, but you need to know how long you’ll be there (is it an hour or a day long interview) and the rough overview of what to expect.
In larger companies it will look something like this:
- Initial tech interview with one or two engineers
- Second tech interview with one or two engineers.
- Interview with Tech Manager
- Interview with HR.
This can last up to about 6 hours.
In smaller companies I’d expect you’ll only be in the interview up to two hours.
Ask if there will be a test. If so, should you prepare something to take (the answer will more than likely be no, but this will get their HR talking and they’ll hopefully give you some more information than they normally would if you don’t ask).
You should expect one or all of the following from a technical perspective:
- Multiple choice test with just you in the room (run away if this is how they interview)
- Pen and Paper / Whiteboard pseudo code to solve a problem with an engineer.
- Actually writing code solve a problem. They may or may not require the code to be working at the end.
- Review an existing piece of code.
- A game of “find the bug”
All of these will be put in place to show how you solve problems.
They may also want proof of excellence in a particular field/language if that is what you are claiming.
Some companies are looking for people who have an in depth knowledge of the language(s) they use. Others are looking for smart people who can solve problem regardless of language. Find out which you are applying for.
Prepare at least three questions about the company
If you are planning on attending an interview and have not thought about what you will ask the interviewer(s), don’t.
Not only is an interview a two way process, but the interviewer will not look kindly on someone who has absolutely no questions about the role and company to which they are applying.
Come up with three non generic questions, memorise them and if possible have follow up questions to the answers. Something like:
Candidate: “I see your main clients are people in the X industry. Do you have any plans to grow in to Y industry.”
Interviewer: “Great question. We’ve nearly saturated industry X, but we don’t feel industry Y is the right fit for our product”.
Candidate: “Out of interest, why do you not think your product would work in industry Y”?
You see. This isn’t a fire and forget question. It shows you listened, took in what the interviewer said and had a follow up question.
It’s engaging and shows you are able to properly converse.
Jobs are just as much about quality information exchange through conversations as they are about technical ability.
If you have multiple stages to your interview (one with an Engineer, another with a Manager, another with HR), don’t hesitate to ask your questions more than once.
Each person you ask will give you a different perspective and I encourage people I interview to ask my colleagues the same questions as they asked me. It gives them so much more information.
Prepare your introduction speech
You will want to have about a two to three minute introduction committed to memory word by word.
Do not try and wing it. You get a limited amount of time with an interviewer and every second counts.
As the cliche goes, you only get one chance at a first impression.
Tell the interviewer:
- Who you are
- How long you’ve worked in the industry
- Any relevant experience to the role you are applying to
- [Optional] Why you are looking to move jobs and why you chose to apply to them.
Keep it brief but full of pertinent information. No one cares if you like to watch movies on the weekend or go hiking with your friends.
Practice this speech out loud in front of the mirror until you have the cadence and speech pattern figured out.
Having this level of preparation should help with any nerves you have going in to the interview.
This will almost be the first thing you say in the interview, so if you can get it nailed and delivered perfectly, it should give you confidence for the rest of the interview.
Ensure that you know everything on your CV/Resume in detail
Don’t write something on your CV that you have not done or cannot talk about in detail.
If you say you can ride a horse. Make damn sure you can ride a horse.
It’s no enough to say “yes, I worked on project X”.
You need to be able to say:
Yes, project X was great. It was initially brought about to solve [enter client problem here]. We initially decided to use [language / framework] as it was best for the problem because [enter reason].
Throughout the project we found problems [X, Y, Z] and decided to pivot to using [something else] as the [performance, scalability, extensibility] wasn’t good enough.
If I had to do the project again I think I’d change [enter lessons learned here]
You need to be able to impress upon the interviewer that you learned along the way and truly understood all of the decisions that were made along the way, even if you did not make them.
No one makes the correct decisions first time around, but if you don’t learn from your mistakes you’re doomed to make them again.
I see questions a lot about “how many projects” do I need to have done before I go to an interview.
I’d say it’s less about how many projects and more about the variety of the projects you worked on, and in how much detail can you talk about them.
The day of the interview
If you’ve done all of the above, you’re prepared.
Take a deep breath, stay calm, go to the toilet before you get in to the interview and stay hydrated.
To paraphrase a quote the navy seals:
You don’t rise to the occasion, you sink to the level of your preparation
Be courteous, kind and interested.
I’m assuming by this point you’ve also got enough knowledge of your chosen language and prepared for the technical side.
After the interview
You’ll likely hear nothing for days if not weeks.
If you don’t get the job, ask for feedback.
In the UK, the company is required by law to give you any notes that were taken during the interview.
If they wrote it down, they have to show you.
Every interview you do is preparation for the next interview.
It is not wasted time or effort if you don’t get the job, it’s experience to take to the next interview.
Write down the questions that the interviewer asked you so you have a bank of interviewer questions somewhere.
Go through them, rehearse new answers and be ready for next time.
If you did get the job, amazing, well done!
Conclusion
The biggest thing you can do is prepare.
If you prepare, the nerves will sort themselves out.
Be confident. Know everything you’ve claimed on your CV. Understand the company to which you are applying.
If you feel that I’ve missed anything out, please feel free to email me at ben@justanothertechlead.com or contact me on my Contact page.
Sign up to my News Letter for regular updates about my musings and the tech / software engineering industry.
The post How to ACE a Software Engineering Interview appeared first on Just Another Tech Lead.
Subscribe to my newsletter
Read articles from Ben directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Ben
Ben
Software Engineering Manager. 20+ years in software and leading people.