I started my software engineer career in a big corporation as a backend developer. Then I moved on to the startup ecosystem building many projects from scratch, joining existing dev teams as a contractor, and building dev teams on my own. In the six years that I’ve been involved in software development, being part of different environments taught me great lessons where I succeeded in gaining broad experience and various skills throughout my career.
Throughout the years, I've taken many technical interviews and introductory conversations for different positions both as an interviewee and interviewer.
Let's talk about how you can introduce yourself to the finest and achieve the best results.
It is crucial to do it well once!
- Choose a simple design that emphasizes the important topics
- Use a professional-looking email
- It's recommended that you add a LinkedIn profile and a GitHub profile (but only if you have something good to show)
- Don't neglect soft skills. They are as important as hard skills. List them in an easily visible place.
It would help if you did not put a picture on a resume in the US, UK, or Canada. Do not submit a resume with a picture, as these countries are bias-conscious. Employers are worried about discrimination lawsuits and often discard resumes with pictures out of policy. A resume with a picture isn't a wrong thought, however. It lets employers connect the sheet of paper with a living, breathing human being. It ensures they won't forget you or confuse you with another applicant.
Unless you know for sure that the company won't do that, don't add a resume photo.
Education is not always a key point for clients to focus on while analyzing a CV. However, having specialized education or relevant training for the project will be an advantage.
Don't list the technologies you have barely worked with or are irrelevant for the position. Place the technologies mentioned in the job description first. This way, you ensure that the interviews won't miss the information that it's crucial for them. It's a good idea to separate the technologies by categories (Front-end, Backend, DBs, Services, etc.).
Sort the work experience by descending order - list the most recent work experience/projects first. If there is a sizable missing period, be prepared to share the reason. Putting 3-4 sentences/bullet points for each work experience is essential. Try to think about how you can stand out. Mention the things that show your most significant achievements, your contribution to the specific project/topic, and sound attractive to newcomers.
It will be a plus to add a link to your projects. This way, the interviewer gets an excellent opportunity to see your work's results.
An interview is a dialog intended for the parties to get to know each other. There is a misconception among many people that the interview is like an interrogation.
No. While a client wants to ensure the developer has the necessary technical skills and fits the client's team, the developer learns more about the client's product, team, and current state of affairs.
I recommend preparing for the interview minimum of 2-3 weeks. It would help if you started revising essential topics connected to the job position during this time.
Ex. Let's say you apply for a Senior Front-end position. It'll be a significant red flag if you don't know what a DOM is, what an attribute is in HTML, or if you can't name the difference between synchronous and asynchronous code.
It would be beneficial if you continued revising specific questions depending on the job position. There are tons of articles that list interview questions for different programming languages and positions.
Simultaneously please start researching the right company choice.
I highly recommend scheduling at least 3-4 interviews (the more, the better) even if you have a favorite company. During the interviews, it may turn out that this company is not the perfect choice for you. Often job descriptions are vague and don't include essential information like your responsibilities.
Right before the interview:
- Turn off the sound and vibration mode on the phone during a call
- Turn off the sound of notifications on the computer
- Check if you have a link to join the call (min. 10 minutes before the call)
- Check if your headphones and camera are working properly
- Find a light and monochromatic background so that there are as few household details on the background as possible.
The client usually understands perfectly well in case you are not a native speaker, so there is no need to stress out about imperfect English or minor grammar mistakes. However, it's essential to make sure you pronounce professional terminology correctly.
If what the customer is saying or asking is not clear, please do not be shy and ask them to repeat it.
At the interview's beginning, the other side usually introduces the company and the opening position briefly. After that, you are welcome to introduce yourself.
You should mention:
- Your name and main specialization highlight your areas of the most profound expertise (1-2 sentences)
- How many years of development experience in total
- Preferred technology stack.
Then you can add more details:
- What industries/domains have you worked in (marketplaces, healthcare, e-commerce, fintech, etc.)
- What projects are you most proud of and why?
Discussing what you've prepared rather than just answering the interviewer's questions is better. At the same time, try to organize your thoughts and avoid being chaotic.
You should emphasize if you have relevant experience with the client's project/domain/technologies. This way, you will stand out among other candidates.
- Try to give complete answers rather than answering with Yes and No
- You should pay attention to how the interviewers react to what you are saying
- You should round up your monologue if they don't look curious or bored.
Some questions that interviewers have asked me:
- The biggest professional challenge I've faced?
- Share my achievements.
- Share compelling examples where my coaching to other developers has led to outstanding team achievements.
- Have I worked remotely before? Have I worked in fully distributed teams? How do I feel about it?
- What are the best communication practices for remote work?
- Why I've chosen specific technology over another?
- Have I been a part/taken care of product deployment?
- What challenges have I faced during deployment?
- Have I taken the leadership role in any project?
- How I would solve specific technical challenges (depending on the role)?
- Why am I considering walking away from my current/previous job?
- How do I deal with disagreements with a colleague?
- What infrastructure am I using (Mac, Windows, Linux, etc.)
- In what situations I'll it be ok to work with legacy code rather than refactor it.
- The most exciting project I have worked on. Be ready to explain what was so special about it. If it's hard to think of something, you may recall a complex feature you had to accomplish and explain why it was challenging to build and how you overcame it.
- What are my favorite software books/articles/videos/podcast episodes/open-source projects?
- Have I ever contributed to open source projects?
- What channels do I use to stay up-to-date with the newest technologies?
- Do I do any testing?
- Do I write unit tests?
- When will I be ready to start working on?
If you cannot understand the answer or need a tiny hint to remind you of the solution, don't be afraid to ask for details. If you still can't answer it, it's ok to say: "I can't think of it right now," for example.
Prepare your questions for the client.
It would help if you prepared questions for the client. This way, you show that you're highly interested in the position. You're not willing to work in whatever the company is; instead, the company should meet your standards.
You can ask about:
- Their product and business model
- Their plans for the future
- Their processes (schedule, communication channels, task/bug tracking, release management systems)
- Team structure; who is going to be your immediate manager or the main person of contact
- Their expectations and deadlines
- Specific questions about the range of your responsibilities
- Does the company/team comply with specific code standards.
It's crucial to take time and prepare to present yourself as the best. I've noticed that it's hard to answer specific trivial questions in case I haven't taken technical interviews for some time. This is because, in your day-to-day work, you're either working with a specific set of tools or just using the tools/paradigms without thinking about how exactly they work.