Experiences hunting for a software engineering job in 2023

At the beginning of May 2023, Shopify decided to lay off 20% of their workforce. That 20% unfortunately also included me, which meant it was time for me to look for another job.

So over the past ~6 weeks, I've been interviewing for senior/staff backend engineering roles almost full time. Here are some raw stats:

  1. In total I interviewed with about 30 companies.
  2. I received a rejection from 13 of them.
  3. About 10 companies I ended up declining myself.
  4. 5 of those were "archived". Some of them ended up ghosting me, or they filled up the position with someone else further along in the hiring process, or there were internal restructurings in the company and the nature of the position wasn't clear anymore (which is something I found somewhat interesting).
  5. Last but not least, I accepted one of those offers.

This blog post post is a collection of everything I observed and learned during this process.

1. There is less hiring overall.

The first thing that jumped out to me almost right away is that the current job market (at the time of this writing in June 2023) isn't ideal.

Yes, there are certainly jobs out there. But it feels like there are less jobs out there than, let's say, 2 years ago. At that time, if you would visit the careers page of almost any company, it was virtually guaranteed that they were hiring software developers. At the time of this writing, not so much.

And if you're like me and have specific criteria you're looking to fulfill (eg. in my case I was looking for fully remote or maximum one day in the office per week, hopefully having something to do with the Python ecosystem, reasonable salary, etc.) the list of potential companies reduces even further.

I'm hoping that the situation improves over the next few months. But at least as of this writing I feel that the market is somewhat reluctant.

2. Startups are more sober when it comes to hiring.

... and that's a good thing!

When interviewing with startups this time around, it's interesting to hear lines like "we're not in a rush to hire developers", which is in stark contrast to the hiring wave 2-3 years ago.

Personally speaking, I'm 100% on board with this way of hiring. Adding developers to the team just to prove to your investors that you're growing never felt sustainable in the first place. So now that the economic climate isn't as good, it seems like early-stage companies are focusing more on basic questions like "does our economic situation / business model allow for hiring X developers" or "how many developers do we actually need to build out X in to our product", which I find rather nice.

As someone who is hunting for a software job, it definitely makes my life harder. It's still good to know that the overhiring trend is reversing.

3. Unreasonably extensive take-home tests are normal.

This is something that bothered me the most.

One very common stage in interview processes is a "take-home test" or a "coding challenge". If you're not familiar, the idea is that the company gives you a programming problem to work on, a suggested timeframe, and a time limit, and you have to submit your solution within that time limit. In my experience, these problems are usually things like "build a JSON API that exposes some business logic over an endpoint" or "build a command line tool to solve X".

The idea seems appealing, and if done right, it can be a nice way to filter candidates out. Indeed, some of the companies I interviewed with had nice take-home tests which left a good impression at the end.

The problem is that a lot of the companies seem to do it awfully wrong.

3.1 The tests take way too long.

Most of these tests are way too long. And it's not always clear why. There were times when it felt like the company just wanted me to jump through a 1-2 days long hoop without a specific objective in mind.

There are certainly cases when they're upfront that they expect candidates to spend 1-2 days preparing the solution. And then there are cases where the instructions include something like "please don't spend more than a few hours working on this". In reality though you know that there's no way that that particular problem can be conceptualized and solved in less than 2 days (if not more) especially if you want to submit a solution that you personally would be happy with.

I was interviewing full-time so I was able to spend that kind of time. I honestly cannot imagine someone with a full-time job (and a life outside of that job) to allocate that kind of time on such take-home tests.

Hiring managers: if you're reading this, please please please make sure your coding challenges can be conceptualized and implemented within 2-3 hours. You want to assess whether the candidate can understand a problem and write good code, not whether they can clone Facebook in 1 day.

3.2 It's hard to predict how the submission will be evaluated.

Another thing I noticed is that there's a fair bit of likelihood for the reviewers and you to not be on the same page regarding how the submission will be evaluated.

Acceptance criteria is usually specified but either it's vague or the feedback that you receive (in case of a rejection) may make you feel that the reviewer was expecting something different, which wasn't clear in the original acceptance criteria.

As an example, I personally find it very vague when a task description says "the solution should be production ready". In my mind, this raises so many more follow-up questions. And even after clarifying those it may not be possible to implement something to the reviewer's liking. My take-away (after a few rejections) is that in a lot of cases the interviewers are expecting you to solve a problem the way they solve problems without explicitly communicating it to you. How would that work? Your guess is as good as mine.

In another one of the tests I worked on, the task description mentioned "please don't spend more than a few hours on this task". So I was honest and didn't spend more than a few hours working on the task. This meant I had to cut corners. But I was aware of which corners I cut and we talked about those corners in the follow-up interview.

After the follow-up interview I was given the feedback that the interviewers felt I didn't spend too much time on the task and hence thought I'm not very interested in the job.


4. LinkedIn is a good way to receive leads.

One of the first things I did after being laid off was to update my LinkedIn profile and set the status to "open to work". I chose not to apply the publicly visible (#opentowork) badge but instead make the status visible to only those in recruiting positions (dedicated recruitment companies or otherwise).

Just doing that got me quite a few inbound requests that I probably might not have run into otherwise.

In fact, the company I finally ended up signing with is one that reached out to me on LinkedIn.

5. There is more competition than normal.

As a consequence of multiple companies laying developers off one after the other, there are simply more (very skilled) developers on the market than there would normally be. This means that companies have too much of a choice. They're able to reject candidates knowing that there are plenty of other good ones in the pipeline.

How do I know this?

There were a few companies where my interviews went well. The discussions were productive. I was able to respond to their questions and tasks in a way that they were happy with. And I didn't notice any sign that would suggest that my performance would warrant a rejection.

At the end I still received a rejection with the message that they decided to go with another candidate who was better than me. 🤷🏻‍♂️

I'm not really sure how to conclude this blog post. Most of my learnings from interviewing in this climate have not been too positive. So I can only hope that this blog post didn't come across as too much of a rant. 😅

In any case, if you're a software developer currently in the middle of job interviews and are frustrated or are close to it, just know that it has much less to do with your skills as you might think. The job market is just not as good at the moment and I hope that it improves over the next few months. Also, acknowledging that job hunting and interviewing (particularly full-time) is stressful can help.

Good luck!