Up your game for interviews

Photo by Jack Sloop on Unsplash

Up your game for interviews

A general guide on interview preparations as a software developer

Overview

As a software developer (or working in the software industry) you get to see that the tech market is becoming very competitive and challenging, each software solution currently aims to be better, faster, and more reliable than its competitors. It is a critical part of growing and maturing in the area that the software is pursuing otherwise it will be left behind and forgotten. The same principle is applied to career development. In the article I’ll try to pinpoint some areas that I consider should be highly focused on to improve your personal growth in the software development field.

Areas to focus on

Based on my experience, I’ll be focusing more on the engineering software development track (closer to backend tracks and software engineers). Let’s define the areas and provide some resources that might be helpful :

Interviewing

Before joining any role, you will be required to represent yourself in some way relevant to the company. This process is a two-way communication between you and the recruiter to understand if this would be a good fit for both you and the company you’re joining.

Resources Suggestion:

  • Interviews.school helped me drastically at the start of getting back at the market again, it helped me realize the criteria the companies are actually trying to recruit and provide a quick overview of the process from checking the application to salary negotiations.

Technical interviews

This stage is the most critical one, this is where most of the applications fall under decline. This stage is built on one or more separate stages. Let’s try to categorize these steps:

Problem-solving

This stage requires a deep understanding of data structures and algorithms, usually the technical interview would require solving 1-2 problems with a time limit (usually 30-40 minutes per problem). In most cases, the problem’s difficulty is directly proportional to the seniority level of the role.

Resources Suggestion:

  • Neetcode: There are a lot of problem-solving platforms. Each will reach you to a decent level of understanding patterns of problems. Why suggest this one in specific? My main initial struggle in problem-solving is asking myself where to start and which solutions that I should focus on and why. Neetcode helped me as it provides a roadmap for understanding data structures and algorithms in a solid and non-step learning curve

Data Structures & Algorithms

You should be able to define and differentiate between the data structures and their strong and weak points. The same applies to the algorithms, you need to understand when it’s more useful to use a sliding-window technique over the two-pointers technique or another one

Resources Suggestion:

  • Beautiful and very rich articles provided by Coders Mojo (Written by Naina Chaturvedi): Through these articles here I learned an immense amount of knowledge and understanding of DSA and its 30 articles based on day-to-day writing. I was really glad when I found these resources. One major point here is that it required medium membership to view all of the articles

  • Guides provided by Programiz: It provides very neat guides of DSA with providing examples in small yet fruitful sections

System design

You should be able to have a better understanding of how systems work and how the application communicates, the tradeoffs between choices, and the reliability and consistency of your system.

Resources Suggestion:

  • System Design Primer on GitHub: This repository has a great explanation and a very deep understanding of system components and how they work relevant to the bigger picture.

  • Complete System Design on GitHub: I loved the articles that were shared using this repository. They were very clear and provided a very friendly example of designing a system

Staying in the loop

Congratulations, you’re getting up the ladder of maturing in your career role and having a better understanding of how and why technologies work .. where to now? at this point, you should try to be consistent in learning what is new in your field, and what better way to learn than from the engineering blogs provided by the top companies? The articles and blog posts that the engineers of these companies provide are gems as they provide real-world examples of highly scaled applications.

My recommendations here are:

  • GitHub blog posts

  • notion’s engineering blog posts

  • dev.to for day-to-day blog posts from engineers on their use cases and has a strong community

I hope this article would be helpful for developers searching for where and how to start as well as developers that understand these principles and are searching for more and better resources for upping their game. Best of luck to all!