I quit my job in December and took a couple of months off to recharge and spend time with loved ones. Unfortunately, we can't really live off of love and fresh water (as the French expression goes: "vivre d'amour et d'eau fraiche"). As such, I started looking for the next step in my career.
Chapter 1: Outlook of a Job Hunt
Some context about myself before looking further into my experience in this job search. I've worked as a fullstack / frontend software engineer for over 7 years. I have had the privilege to work in France, the United States, Spain, Singapore, and Germany, in different industries (SaaS, ride-sharing, HR), and in different company sizes (from a 8-people bootstrapped company to a decacorn, passing by a construction conglomerate).
After such an eclectic career, I felt like I had a better grasp of what I was looking for in a job. In particular, I felt most motivated when I was given a problem to solve rather than a solution to implement, and I was able to see the positive impact of my work. I thrived in cultures with strong ownership, trust, and transparency. Diversity and empathy were also elements I was looking for in my future company. Ultimately, I felt like it was time for me to start thinking about my legacy, and what better place to do that than at a mission-driven company!
In my quest to landing a job at a mission-driven company, I wanted to be as location-agnostic as possible. As a Spanish citizen, the easiest was to work fully remote in Europe. Luckily, remote jobs are not as difficult to come by as they once were. Besides, the market for senior engineers was (and still is) relatively hot! Another market I was looking into was Singapore, even though the rise in unemployment due to the pandemic meant that work visas were scarce, and only a handful of companies were ready to sponsor them (this has changed recently, with Singapore lifting some of their restrictions).
Numbers, and some more!
With that in mind, let's look at some numbers (I love numbers!).
I searched and listed 212 potential jobs that would be of interest to me. I ranked them based on skill match, industry, product, tech, and location. Out of those 212 jobs, I decided to discard 46 of them. I applied to 83 jobs, and 15 job offers expired before I could apply to them. The main reason I decided not to apply or discard some job offers was lack of time, as you'll see in the following paragraph.
Out of the 83 jobs I applied for, 19 rejected my application at the CV screening stage (one even doing so less than an hour after I applied ... new record!) and 38 never got back to me (that number was going to be 39, but a company did finally reach out to me 6 weeks after I initially applied!). That means that I was in the interview process with 26 different companies, so about 30% success rate from application to first interview. That was clearly above my expectations, and that meant that I had to stop sending applications after the first initial batches for my own sanity.
Out of the 26 interview processes I was taking part in, I completed 10 of them and received 9 offers. I was rejected by one company, and I decided to pause the other 15 at different stages, as I had enough offers to choose from, and I was getting quite exhausted at that point in my job search! That means that I had about a 10% success rate from application to offer. That was again clearly above my expectations, even more so considering that I didn't specifically prepare for interviewing.
In terms of timing, I started searching and listing jobs in early February, updated my resume mid-February (thanks again to my dear friends who gave me valuable feedback and helped me refine it!), and started applying the week after. I had my first interview calls on February 28th, which kick-started 6 weeks of interviewing! During those 6 weeks, I was putting 20 hours per week exclusively on interviews, with one week clocking up to 34 hours. More than preparation, you need time!
During those 6 weeks, I interacted with over 90 people, making interviewing the best networking exercise I have done so far. Some of those interactions were very nice, and I wish there were other ways to get to know fellow engineers and have interesting discussions outside of an interview setup ...
Looking back at the offers, they ranged from €68k/year to €120k/year base salary in Europe (I'm not counting the company who told me they could only pay me up to €50k/year in the first call), with most offers being around €80-90k/year base salary. This shows that the tech market in Europe has gone up tremendously, and also gives some anecdotal evidence to the now famous trimodal nature of salaries in Europe. I have less data points in Singapore, but the offers ranged from S$102k/year to S$145k/year base salary.
Of course, comparing offers solely on base salary might not always make sense, as bonuses, stocks, and benefits do heavily influence the compensation package (and those were wildly different in the offers I've received). Besides, even though compensation is an important deciding factor, I personally try to put some weight as well on the culture, the mission, and the values of the companies.
The interesting, the huh?, and the WTF!?
Alright, numbers are cool, but let's look a bit closer at some trends and anecdotes I experienced in this job search.
Something that surprised me from the get-go, even though I kind of knew about it, was how hot the market for senior software engineers is! I've got positive replies inviting me to a first interview call within one hour of sending my application (and also one rejection, so I guess that was just luck?)! The amount of recruiter outreach was quite overwhelming, and after the first week I just stopped interacting (sorry for ghosting y'all). Half a year after this blog post about the insane tech hiring market we found ourselves in, it is still insane!
Another interesting trend that I wish more companies would implement (and I believe, in Colorado and Europe, companies already need to, or will need to in the near future), is displaying salary ranges in their job descriptions. I am a strong believer of transparency, and having transparent salary ranges is one tool to reduce pay gap for underrepresented people in tech. Also, it removes the awkward "what is your salary expectation" question in the first call, which I'm sure nobody enjoys! Going one step further, some companies I've talked to implemented the same salary for every given level. That means that the offer you receive is non-negotiable and that everyone at the company at a given level are earning the same. This is great, more of this please!
It has been fascinating as well to experience some very unique cultures, and some very thoughtful and thorough interview processes. Writing communication skills are slowly becoming a staple in interview processes, usually done asynchronously via answering a series of questions. I also went through some of the most thorough behavioral interviews I've had. Some companies have put an insane amount of work in their processes, and in figuring out which signals to look for and how to best assess them, and that translates in some interesting interview processes and ultimately, in some great and unique cultures. More of this as well please!
On the less glamorous side of things, some companies still ask candidates to do some sort of work before even talking to them. That is something that bothered me particularly, as I was already investing a lot of time in other interview processes, and having that first call also allows me as a candidate to see if a given company looks interesting to me. It is a bit of a pity, because I think there could have been some great matches among some of those companies, but I couldn't justify putting some work upfront (on top of sending the application in the first place!). If your issue is that you have too many candidates, then sure, this is probably a scalable way to filter down the field, but if that's not an issue (which most likely isn't, given the current market), then you risk losing great candidates by not talking to them first.
Following on the current market situation, I've had companies reverting back to my application 5-6 weeks after. Again, those were great companies I was excited about, but in the current market you can't go radio-silent for more than a month and expect great candidates to still be available. Act swiftly and improve your resume screening process if that becomes a bottleneck. On that note, way too many companies still ghost candidates (about 45% of companies in my job search). To me, that speaks of a broken hiring process where you don't value your candidates' time, as setting up an automatic rejection email is now trivial in any application tracking system. Hearing bad news is usually better than not hearing any news at all.
Out of the 120 hours I have spent interviewing, I was not compensated for any single one of them, and only a couple of companies had a compensation scheme in their hiring process. That wasn't so much of an issue for me, as I didn't have to take time off of work to interview (I was in a mini-sabbatical), but if you are going to ask for a consequent amount of time from candidates to work on your take-home assignments, it is only fair to compensate them for that. Also an interesting twist, most companies now have "pair programming" rounds, which, for the most part, just happen to be re-branded tech interviews ... if the interviewer is going to ask the candidate a question and then observe in silence while the candidate struggles to implement a solution, that is not pair programming.
Something I had never fully understood though, is recruiters reaching out to you, you answering them that you'd be interested to learn more, and then them vanishing into thin air never to be heard from again. That experience wasn't a one-off, and it has been consistent enough that I've decided not to answer to recruiters unless they are from a company I have a strong interest in joining. I really don't understand what's the goal here, other than wasting everyone's time, and alienating a potential candidate.
Something I also fail to understand: do people really think that a candidate will accept an offer that is below what they were making previously, in this market? I particularly dislike negotiating offers. I think it is a waste of time, and it tarnishes the relationship by staging a fight over scraps. The way I think about compensation is that I'll transparently tell companies how much I was making in my previous job (which is against "best practices" I guess) and then when I get the offer, I'll either accept it or reject it. I'm not interested in negotiating. Better still, if the company has transparent salaries, we can move on to more interesting discussions! Something that I found surprising during my recent job search is companies sending me offers that were up to 20% below my previous salary, knowing what my previous salary was. I appreciate the offer, but what am I supposed to do with that?
For the longest time, I didn't care much about titles. I thought years of experience and my performance during the interviews will show my level of seniority when applying for jobs. The truth is that titles do matter, but mostly when applying to companies that have a poor hiring process. In most companies where they had a thoughtful and thorough interview process where they were able to gather high-quality signals, I was offered a position at a senior level. On the other hand, because my latest job experience was just "Fullstack Engineer" (even though the salary and the impact I was having were clearly "senior"), I've had some companies claim that I "wasn't senior yet", when nowhere in their hiring process were they testing for leadership skills or drilling deeper into past projects.
In the same vein, some interviews felt more like interrogations (for example, "you claim to be a fullstack engineer", when that was literally my job title at my previous 2 jobs), and if that's how our interactions are going to be, based on suspicion rather than trust, then maybe this is not a great match.
Interviewing with so many companies definitely filled in the troves of anecdotes, but let's stop here and look at some learnings for both candidates and companies.
Tips & Tricks (but mostly just tips, there ain't no tricks!)
Some of the topics hereafter will be expanded into their own blog post, but I wanted to quickly share some learnings from my job search, both for candidates and companies.
Hello, reader! Are you a software engineer? Are you currently thinking about exploring the job market? If so, here are a few tips:
The market is (still) hot
If you are afraid you missed the train on the hottest market in history, fear not as it is still crispy hot! Some companies in Europe still haven't caught up with the market and are still offering less than €50k/year for senior engineers. There are better options out there!
If you have more than 5 years of experience and are currently making less than €75k/year in Europe, either have discussion with your manager, or look for a better job (unless you are extremely comfortable where you are, in which case, enjoy, there are more important things in life than money!).
I have less data points in Singapore, but from what I experienced and what I've read, the market is also heating up there. That is even more true after 2 years of heavy restrictions that are now being lifted over, meaning that companies can finally satiate their appetite and their need for foreign talent.
I don't have a lot less visibility into how companies are internally reacting to the market, but unfortunately it is probably still the case that the best way to get a raise is to change jobs. Doing so when the market is still favorable makes a lot of sense!
... and the landscape is evolving
Some good additions, from my perspective, to the job market in Europe: more companies are open to full remote, and more companies are also displaying salary ranges. I also feel like benefits have been ramped up to attract the best talent in a squeezed market.
Other good news, in my opinion, is that take-home assignments are becoming rarer, and I haven't experienced the infamous whiteboard interviews (albeit now technical rounds are sometimes called "pair programming", maybe in an attempt to re-brand the practice following some backlash?).
Because of the remote nature of work (either hybrid or full remote), written communication has become a skill most hiring processes will be testing you on.
Practice, practice, practice
As I didn't apply to companies that are well-known for their incredibly difficult technical interviews, I didn't spend time preparing for how to reverse a binary tree at all.
That being said, because interviewing is a skill in itself, and it is quite removed from our day to day jobs, I found that I got better at it with time. That means that maybe it would have been a good idea to practice first with mock interviews (or interviewing with companies I was less interested in) before going all in.
In terms of difficulty of the interviews, I found that most technical rounds revolved around the same topics: using a hash map instead of a list for performance, or using some sort of recursion to navigate a tree-like data structure. Regardless of the problem and its difficulty, always talk through your thought process when taking tech interviews.
And don't forget to also put some practice into your answers to behavioral questions!
Job hunting is (almost) a full-time job!
More than preparation, you need time!
To maximize your changes of finding a better job, you will probably need to go through a fair number of interview processes. And that takes time. With each company requiring anywhere from 3 to 7 rounds of interviews, it sometimes feels like a full-time job.
I would advise to invest in a way to keep track of your interview processes. In my case, I used a spreadsheet to list and keep track of my processes, and I used a note taking app to keep track of what was discussed (and with whom) during each round.
Finally, if possible, try to go all the way with your open interview processes. Don't rush. Some of the best offers I have received came on week 6 of my job search!
I will go more in depth in a subsequent blog post, laying down what I believe is the ideal interview process for hiring software engineers, but for now, here are a few tips:
The market is (still) hot
The market has become quite insane in Europe over the last half a year. If you are still paying below the market, don't be surprised if your engineers leave. Without having that Damocles sword over your head, just pay your employees what they are worth, it's the right thing to do.
When looking for new hires, keep in mind that it is still a candidates' market (at least for senior positions). Try not to make the process unnecessarily complex, as candidates have a lot of choices, and will prioritize opportunities based on that (or at least, I did). Also, don't expect to hire anyone if you are paying below market.
And €50k/year in Europe for a senior software engineer is definitely below market, no matter what a salary report tells you.
... and the landscape is evolving
More companies are hiring remotely, or at least offering flexibility there. If your company does not, be ready to miss on some good candidates. I personally believe in flexibility, and in remote, as it (eventually) creates a healthier culture where you need transparency and good communication to succeed, but where employees can thrive and live their best lives as well!
We've talked a lot about compensation in this article, but a competitive advantage that I believe is stronger than paying top of the market (which you should still do!), is building a mission-driven company where employees can see the positive impact their work is having.
Another trend that I think is worth stressing on, is transparent salaries (or salary grids). About a third of the companies I got an offer from have transparent salaries, and that is again a competitive advantage in my opinion, as it equalizes pay across an organization.
Put more thoughts into your hiring processes
Something that I will write a lot more about in the coming weeks, is hiring processes. I've seen quite a diversity of approaches, some great, some normal, and some quite terrible.
There are a lot of ways to improve your hiring process, but ultimately, putting some thought into which signals are important for the role, and deliberately designing your hiring process to gather high-quality signals should already put you in the top tier.
Be thorough, but also flexible. Allow candidates to chose between a take-home assignment or a live-coding round (and please don't call it "pair programming" unless the interviewers are actually going to pair with the candidates).
Antoine de Saint-Exupéry famously wrote that "perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away". Use that quote to guide your iterations of your hiring processes.
Those were some of the numbers, anecdotes, and learnings from my experience interviewing for senior software engineering positions in 2022. I will follow up with more in-depth articles about what my ideal interviewing process looks like (revisited!), and with tips on how to succeed in your own interviews.