Preparing for new opportunities as a Senior Developer.
Tags: interview, career, jobs, seniorengineer
Published: 2022-03-27 18:13:35

I recently joined Amazon after spending about 4 years at Microsoft with a total experience of 13+ years. While I was preparing for interviews and going through interview process, I had a lot of learnings because I was appearing for interviews after a long time. Also, there are more than enough resources for junior developers but for senior developers, I see a void. As a result, I thought I should share my experiences and what I learnt along the way while preparing for a job change in the last few months.

The interview process faced by senior developers is a bit different from what profiles like SD1/2 might have to face. In addition to the interview itself, you have to take care of your current work as well as family and a lot of people depend on you both at work and at home.

> This is NOT about how to prepare for a FAANG interview or how to crack DSA. No youtube video coming after this.

**This post might be relevant for you if:**
1. You have 10+ years of experience
1. Are planning to switch jobs but are confused about what/how to prepare.
1. Have been in coding/tech and still want to be an IC role.
1. Are wondering how to prepare for interviews while taking care of family and work.
1. You have not done DSA for some time or are not into coding 100% of the time..

First of all, there is no lack of openings and opportunities for senior developers. Obviously, in my case, having worked at Microsoft meant that getting interview calls was the easy part. There is a huge demand for senior developers across product based companies, both large and small. Below is what I learnt after appearing for a number of interviews with various companies and successfully converting a few of those into offers.

## Getting Interview Calls
This one is easy if you are working in any good company. One thing I have always done is to respond to all the talent acquisition professionals who reach out to me. I always respond with a message saying I am not looking for a change right now but let’s stay connected and I will reach out to you if things change.
Now was the time. I reached out to a lot of people and most of them responded with opportunities or connected me to others who were hiring.

> 
Be nice to people, even if you don’t need them.

## Opportunities and Career Direction
At 10+ years of experience, you need to decide in which direction you want to take your career. You need to decide and pick companies and interviews accordingly.
You can continue to be a senior engineer and be a hands on developer.

> You can be an architect and have a broader impact across teams.
> You can be an Engineering Manager.
> It's your career. You need to have clarity on what you want to do in future.

## Time Management - Along with work and family
Interview preparation is time consuming. Usually senior developers are not very hands on with DSA type of questions. Same was the case with me. As a result I had to spend about 3 months preparing for interviews. Last interview that I had appeared for was more than 4 years ago and a lot has changed since then.
Managing your work along with preparation will require you to optimise and prioritise work related things as much as possible. You will need to draw a line and give up the urge to pick up office work after a certain time. It also helps if you can keep a fixed and dedicated time for interview preparation.
Time management becomes difficult if you have kids or extended family living with you but it's extremely important to give time to them as well. Make sure you give them the time they deserve. Also, along the way, there will be interviews where you will do bad and feel things are not working out. Your family will help you recover and get back on track.

> There will be days when you will feel the pressure and your family will be your biggest support.

## Interview Process - DSA, Code Design, System Design, Hiring Manager, Behaviour Rounds
### DSA
There is no running away from this one. Every company that I interacted with had at least 1-2 rounds for DSA. Good news is that other than the occasional difficult question, all the questions you will get will be of a medium difficulty. In most cases they just want to check if you can analyse a problem, write code and articulate the solution. As all interviews are virtual, most of the time you will be expected to write full working code. Depending on the complexity, you might get 1 or 2 questions during an hour long interview. Using an online IDE is not easy so make sure that you practice a few times before interviews. I struggled with array initialisation syntax a few times, especially 2D arrays.
At a minimum, make sure that you are able to understand and do the leetcode “Top Interview Questions”. There are about 150 questions and if you successfully done these on your own, you will do well in most interviews. 

> Practice. Be Hands on. Watching youtube videos is not going to help you in interviews.

### Code Design
Having OOP background helps here. The questions are still related to things like chess game design, bank account management etc. Key here is to make sensible design choices, follow SOLID, be open to criticism and feedback, and be firm about design choices you think are right.

> 
SOLID, extendable and testable code is critical.

### System Design
Most system design questions that I faced were related to doing data processing and distributed systems. Some rounds were about doing transactional actions in a microservices architecture. Luckily I had been working on large scale data processing for last few years so this was not very difficult. No one asks to design twitter, facebook feed or Uber now. Those questions do not check your design skills. At senior levels you need to have a much deeper level knowledge.
Initially I spent some time watching videos on youtube. Unfortunately, most of the popular system design videos the people post are either wrong or just half baked. In most cases, people are explaining knowledge collected from various blogs without going deep into system design concepts.
 
> Handling failures and designing a system that can be scaled and extended is the key here.

## Hiring Manager Round
This one can make or break your hiring decision. My observation is that most managers want to hire you after the technical rounds. It's really easy to mess this round if you are arrogant, rigid and do not learn from your mistakes in previous interviews. In most cases, you will get questions related to how you solved some technical or organisational challenge, or you will need to show examples of how you innovated and solved a problem, how you helped your team, helped your juniors and how you mentor them. Sometimes questions related to project planning and stakeholder management can also be asked. Also, for senior engineers, it's important to have examples of how you influenced your team or had an impact across teams. Spend some time thinking about examples and instances for each of these.

> If you have not done it, think about what you could have done differently in your current job. Learn from previous interviews and be ready with examples for questions where you struggled in other interviews.

## Behaviour Rounds
Very few companies have these rounds but the ones that have it treat it as a critical part of the hiring process. As a result, you need to prepare well for these interviews. Conflict management is a big part of these interviews. Be prepared and have examples ready.

> It's ok to say that you made a mistake as long as you can also tell what you learned from it.

## HR Discussions
If you have made it this far, there is a good chance that you have been hired and the only part left is salary negotiation. Be wise, don’t be influenced by what others are getting in the market.
> You need to know what amount will make you happy, ask for it and stick to it.

## Pro Tips :)

- You can decide the time and sequence of companies that you are interviewing with. Ask for extra time if you have a company that you want to target. Appear for as many interviews as possible before the target company.
- Most TA/recruiters will try to help you in getting hired. Collaborate with them and talk to them. In a lot of cases, then will provide you tips for next rounds specially related to what type of questions can be asked, they might tell you about who the interviewer is and what does he look for in candidates. All this helps in being mentally prepared for the interview. 
- Most interviewers know how to interview senior developers but sometimes you will find interviewers who will treat you like a junior developer. They might ask illogical DSA questions and will look for the exact code and solution that they have in mind. It's ok, ignore and move on, see if you can somehow sail through to the next round.
- No matter how much you prepare, you will get rejected, A LOT. Especially in the initial few interviews. Sometimes in the first round or the online screening itself. This will demotivate you, make you feel like an imposter and will make you doubt yourself. That's ok, it happened to me as well and probably happens to everyone. Take a break, recharge and move to the next interview.
- Time management becomes super critical. Try and have fixed times for interview preparation. Also, try and find dead time like early morning, evening tea time etc when you are not working on office related stuff. 
- Your family should know that you are appearing for interviews, some days it will be stressful and you will need support in managing stuff at home,
- Family support is crucial in handling rejections and when you are demotivated or feeling down.
- If you have any question or tips that you would like to share, please feel free to connect and drop me a message or comment.

Best of luck :)