I was thinking about switching jobs since about the beginning of the year. But as we had our dream vacation planned for 3 weeks in April, I didn't really want to look for a new job before coming back. You might say that it makes little sense and I should have been already on my notice period by that time (which is 3(!!!) months in France)), but I also wanted to see how a couple of things might or might not change.
My main reason to leave was mostly financial. I was not particularly dissatisfied with my salary compared to others', but this article made me realize that there are significant differences on the market. This meant a near-future change for me. By the time we came back from vacation, I was sure what to do.
I entered the job market confidently
I entered the job search with great confidence and a bit of anger that I had to do this. I didn't understand why there are so big differences between companies, why some don't follow up with salaries and let their seniors go. That's about it for the anger part.
My confidence was fed from 3 sources
- Though I know many better engineers in the company, I consider myself not outstanding, but above average
- I have a publicly available track record of talks and blog posts showing dedication, and communication skills.
- In most cases, I'm confident anyway.
This confidence was cracked in less than 2 months as I started to apply for positions.
My confidence quickly vanished
First of all, I found only a few positions suiting what I was looking for. A senior++ position with a C++ tech stack which is also full remote and we haven't even talked about the salary at this point. Most C++ positions looked for some speciality, like experience in:
- embedded
- 3D
- kernel development
- performance optimization
After all, I'm just a business application developer of some highly distributed systems supporting thousands of transactions per second.
I could get some referrals and managed to proceed almost immediately to the phone screenings. In most cases, screenings were not an issue. Though I'm an introvert, I have good communication skills and I can sell myself.
But some technical interviews were shocking. I realized that all I thought about the needed skills were far from being correct, I had big gaps and little time to bridge those. I say little time because I obviously wanted to nail the upcoming interviews I had in front of me, despite the failed ones.
Of course, if I had failed all the upcoming interviews, I would have had all the time I wanted to get better and practice. Getting more time obviously would have meant more rejections.
Getting rejected feels bad
It can feel difficult to continue after a rejection.
Even though that's the key. You must continue even after rejections and don't take them personally.
Think about them as a mismatch between company needs and your skills.
Being disqualified for a job after a technical interview doesn't necessarily mean that you're a subpar developer. Okay, it might actually mean that. But with a greater chance, it will be that your experience doesn't match their needs. If you see it this way, it's easier not to feel so bad about it.
Or it just might mean that you are not yet in shape for technical interviews. Many of them require a slightly different skill set than your daily job. You need a different way of preparation.
So if you fail one, stop agonizing over it. If you paid attention, you should know where it went wrong. I knew from all my failed attempts in which parts I didn't perform well enough. I even knew for the successful ones which parts could have been better.
Sit down and work on those gaps.
Just learn and practice.
The market is very competitive
Getting into a good company is competitive. It's very difficult. After a final on-site round, a week before the final decision was made, the recruiter shared with me that they opened another role just the previous working day and they already had 500 applicants. 500 CVs came in just in a weekend.
Sometimes I have a feeling that getting an offer is as difficult as qualifying for the Olympics. Except that here the second doesn't get a medal. The second is simply disqualified.
So, yes. It's hard. And you don't have control over all the aspects. Therefore you shouldn't feel bad if you're rejected. On the contrary, each round you passed should reassure you, should motivate you that you're good, just maybe not ready yet.
Sit down and learn.
But learn what?
There are all the guides out there on how to get prepared for a coding interview, a system design interview, a behavioural interview...
Most probably you're already familiar with those.
Here I mean that focus on what you already failed. When you don't qualify for the next round, ask for feedback on where you didn't meet the expectations. Probably you already feel it, but if you ask for it, you will also know it. That's better.
In fact, you can even ask for such feedback if you passed to the next round.
We should not feel bad about what we don't know, but we should seek out more feedback and learn based on that to get better for the next challenge.
Conclusion
We are often overconfident when we enter a job search. At least I was. After 9 years of not-interviewing, after having understood the internal dynamics I thought it'd be easier. But after grokking the job descriptions for real, after entering some technical interviews, I realised that what I offer mismatched the needs of more companies than I thought originally.
This mindset was the key to success. I didn't take a "no" as a personal rejection, just a mismatch between what and how I supply and what is demand. I used the feedback to finetune how I present what I offer and get better at interviewing.
Even though the job market is not only generous but also very competitive, with the right mindset and preparation, we can get a dream offer.
Good luck!