Skip to Content
  1. Home
  2. /
  3. Blog
  4. /
  5. Software Engineer Interview Optimisation Tips and Tricks
Tuesday, March 12, 2024

Software Engineer Interview Optimisation Tips and Tricks

Get expert tips on optimizing your resume for software engineer interviews. Learn LinkedIn strategies, interview etiquette, and coding practice recommendations.

This blog post was sent as part of the newsletter to all subscribers on February 14th, 2024. To receive the latest extra content, consider subscribing to the newsletter.

Hi! As I anticipated in last month's edition, the focus of this newsletter will be job seeking (focused on the software engineer interview process) and what you can do to improve your chances of success. Although the tips and insights come from the Software Engineering world, they can apply to other roles outside that domain.

Optimizing your Resume

Before even applying for jobs, you need to look at your resume. You can ask yourself these initial questions:

  • Do I have enough or too much detail on my experience?
  • Am I highlighting enough of my skills?
  • Do I have a summary?

Resume writing is the first thing you do during a job search. There are a few essential optimization rounds your resume needs to go through to be ready to be sent. A great resume format follows this structure:

  1. Contact information. No picture or age (unless the culture does so). Include relevant links to everything.
  2. Summary. It should be three lines or less. You can use this to highlight some points to the recruiters.
  3. Work experience. Each section should contain the company, full role name, and start and end month and year. Each role should have three to eight bullet points of no more than two lines each. As a rule of thumb, you should quantify at least 75% of the bullet points of each experience item. Each bullet point should begin with an Action Verb (read Harvard's Resume Guide). It conveys that you are proactive and take action. Focus on the impact you had on software development projects.
  4. Education. Highlight your education and any awards you might received when graduating (e.g., top of your class). If you haven't received a formal university education, skip this section or swap it with the Skills section.
  5. Skills. Group each skill by skill type (e.g., Programming Language, Frameworks, Tools), and within those, use proficiency levels (no progress bars, please!) such as proficient, advanced, and intermediate (don't include anything below intermediate). You should also include languages and certifications here.
  6. Volunteerism. This section is optional. This section points out that not everything you do is for money. Follow the same scheme as in the Experience section. The details on each work or experience should be three lines maximum, without bullet points.
  7. Awards and achievements. This section is optional. This section shows any relevant rewards you have received. Use this section to show off (briefly)!

If you are looking for an example of this structure, you can review mine (it's an outdated version, but it follows the scheme). Aim to have it under two pages, ideally one page, but this depends on your experience.

Pro Tip: Generally, recruiters recommend to tailor the interview resume to the role. Even though that's true, not everyone has the time to customize the interview resume for each position they apply. You can build other generalized variations to apply to different groups of job descriptions.

After you rewrite your resume, you should run it against a checker to ensure everything is ok. I like using Resume Worded to verify my resume and resume review. This tool gives you a score each time and actionable feedback (in its free version). This way, you can iterate over the curriculum vitae to try and make it as optimal as possible.

Pro Tip: An optimal resume is better than a good-looking resume (unless you are a creative or a designer). Optimal resumes can pass automated checks, which the others can't.

Try to avoid any visual tool like Figma to build the resume. A simple test you should run is highlighting text with your mouse. If you cannot, then you need to rewrite it somewhere else. Remember to keep a PDF and a DOCX version since the DOCX is more readable but not widely accepted.

Once you finish the CV, you'll have a professional resume and be ready for the next step in your job search. The next step is applying for jobs.

LinkedIn Optimisation

Congratulations if you just finished optimizing your resume. I know it might've taken a lot of time. Now, you need to do the same with your LinkedIn. Some of the most important aspects to take care of are:

  • Complete your profile as LinkedIn prompts you. It is an essential step.
  • Change your URL to be customized, and set it as your name only. For example, my URL is https://www.linkedin.com/in/gonzalo-hirsch/.
  • Add a professional profile picture (and maybe even a cover).
  • Add a more complex tagline. For example, mine is: "Full-Stack Software Engineer (BS, MEng) | AWS Solutions Architect Associate | Senior Software Engineer @ Croud."

If you complete your profile, LinkedIn will start pushing it to recruiters when they search for similar profiles. I understand it might feel like it's pointless to do this. For reference, I get at least five LinkedIn messages or emails from recruiters offering jobs per week. The optimization does work.

LinkedIn Searching

Although LinkedIn Jobs is not the best platform to apply for jobs, LinkedIn is. Using the following approach, I've seen people get the exact role at the company they wanted. It's a simple technique, albeit an effective one:

  1. Find the company that you are interested in on LinkedIn.
  2. Go to the People part of the LinkedIn page.
  3. Try to filter for people who went to your university to try and reach out to them. Otherwise, filter for the head of the department you are looking to work for. For example, you could go to the Engineering Manager for an Engineering role. Looking for the head of a team, HR, or Hiring Manager does also work.
  4. Once you have found the people you intend on targetting, prepare a cold message to connect. One example of that cold message is "Hi PERSON_NAME! I see COMPANY_NAME is hiring, and I'd be a great fit. I am a curiosity-driven full-stack engineer (BS, MEng). I worked at Meta and startups, praised for my high productivity without sacrificing detail. I find practical solutions while quickly adapting to complex systems. Let's connect!".
  5. Send that message when you connect to the person. It will ensure that you are likely to be called by more senior members, which is beneficial as they can invest more in your success.

After the person you target gets back to you, try to have them sign you up for the interview process. It can be faster than applying through the company website, but doesn't replace it.

Pro Tip: LinkedIn Premium can be expensive. If you can buy it, that's great. It will help you gain insights into positions you apply to there. Otherwise, try to sign up for a free trial to get those same features for a month.

Interview Etiquette

These are some simple points you should be aware of for EACH interview. They might seem like a lot of work, but trust me, they are worth it. Interview skills are essential for any job interview. You will stand out since not a lot of people do them. You can group them based on when you should do it.

  • Before the interview, you should:
    • Research the company, try to understand what they do and where you would cause impact. Learn more about your potential employer. Some companies even have a career center with career resources related to it (e.g., Google Career Center).
    • Research the person interviewing you. What's their role? Are they software engineers, data engineers, engineering managers, or something else?
    • Research the job title to learn more about the job offer and the responsibilities. Understand its job description and prepare questions around it. You can ask who you will be collaborating with, who are the stakeholders in your projects, or who will be your engineering manager.
    • Practice, if there's anything you should practice for. Try to anticipate any potential job interview questions. For jobs at a tech company such as software engineer (data engineer, data science roles, software developer, or others), you can anticipate system design, coding interview questions, and behavioral questions.
    • Review your application if you have that available.
    • Run a mock interview to prepare for any job interview questions the interviewer might ask. Mock interviews are a great way to help you get comfortable with the situation.
    • Prepare questions in advance since you don't want to be surprised by that interview question.
    • Ask any question you have to the recruiter or hiring manager to ensure you have all the necessary information for the job interview.
  • During the interview, you should:
    • Dress to impress, but accordingly. Don't go in your PJs. Show that you care about causing an impression.
    • Be honest. If you don't know something, don't lie. Be upfront, own mistakes, be honest.
    • Smile.
    • Answer questions providing relevant details when possible.
    • Treat any interview as a "big interview" since you never know what will happen after it or the opportunities it may bring.
    • Have the job description and job application handy if you need to reference them.
  • After the interview, you should:
    • After each interview, always send a "Thank You" note to the person on the other side. A concise email goes a long way. Look at the examples here.
    • Debrief yourself. Try to understand what went well and what didn't. It will help you improve in the long run.

If you follow all these guidelines and complement them with the actual knowledge for the job, you will pass any interview.

Software Engineering Interview Recommendations

These are some of my insights from going through tens of interviews at some big tech companies (Google, Meta, Yelp):

  • Most of the time, the person interviewing you will be another software engineer. Understand that the interviewer has been through the same interview process.
  • Practice coding challenges daily. Consistency is essential to buff up those coding skills. Get used to the pace and limits of software engineer interview questions.
  • Practice at least one system design interview question per day. Same as with daily coding challenges, build consistency. ByteByteGo is a fantastic YouTube channel that can help with interview preparation. It has example system design solutions to help you understand the questions and their answers.
  • Explain your thought process and practice mock interviews to prevent moments where you are overly quiet. If you are unsure, ask for help or more clarifying questions.
  • Read Cracking the Coding Interview. Even though I've never finished it (yet), I understand it's one of the best resources for practicing and understanding some of the basic concepts behind software engineering interviews.
  • In the case of Meta, accepting suggestions from the interviewer during a technical interview is a factor that adds up to your score. If you do, that's better for your score. That might be the case for other companies.
  • Talk to friends in companies (ideally big tech). You never know if they are running interviews for the company and might be able to offer some tips for technical interview questions.
  • If you have friends (e.g., software engineers or software developers) working in companies you like, ask for referrals. It increases candidate success significantly.

These are all tips from my experience in interviews. I have acquired them through time, and I can see the difference those make in job searching.

Weekend Projects: Docker Compose and Observability

Containerization isn't something new. It's been around for quite some time, but I never took the time to learn some of the tools around it from scratch. All of my use cases have always been around existing designs or architectures. I decided to learn Docker Compose by working on some small-scale use cases.

The idea of this project is to have producer and consumer processes. The consumer tries to get data to process from the producer via an HTTP API. Both container sets are instrumented using Prometheus and connected to Grafana for some visually appealing charts. It's a compelling set of tools to understand how it works since most of the observability tools in Amazon Web Services and Google Cloud work similarly to Prometheus and Grafana.

When writing this, I have everything up to the metrics working, but metrics are not showing the correct values, so that's something to debug for the future.

Expect a blog post about how to set up a complete instrumenting and observability example with FastAPI, Docker Compose, Grafana, and Prometheus, all self-hosted (locally). You can find the source code for that here.

What to look out for in the upcoming newsletter?

I haven't decided on the theme for the upcoming newsletter, so I'm open to hearing you out for ideas on topics you might want covered. One potential topic is Terraform and Workload Identity Federation for GitHub.

You will find the previous one as a blog post in the following days, so stay tuned!

Happy reading, and good luck with your job search and software engineer interview preparation!