By David Fekke
February 9th, 2024
I normally do not use my posts to rant about anything because I find that boring in most cases, but I have decided to speak up about something I have noticed about the way companies are treating applicants for technical roles.
I recently was laid off from the company I worked at for the last year and half. It is not my first rodeo, I have been through this before. I have the advantage of having a quarter century of work experience as a software engineer. I found another job, but it took longer than I thought it would, so I wanted to write about some of the things I noticed about tech hiring.
I had some runway from my old job, but I decided that I did not want to wait before starting to look for a new job. I live in North East Florida. While there are a lot of software engineering roles here in Jacksonville, there are not a lot of roles doing specifically what I had been doing, which was mobile development.
My previous company was based in Silicon Valley where I worked remotely. So I decided I was either going to pursue remote roles or local roles where I could work onsite.
One of the other things that became evident to me was despite having historically low unemployment in the United States, all of the tech layoffs has put a lot more potential candidates out into the marketplace competing for the same roles.
No one is hiring in December
I was notified about the
workforce reduction in December. The first thing I noticed was that no one is hiring in December. Most companies that have employees involved in the hiring process are on leave for the holidays. I was able to interview with two companies in December, but no offers came from those first two interviews.
In the second week of January is when I finally started hearing from companies that were looking to hire.
Hiring in the past
In the past when I interviewed for roles, the interview process has generally been very short. Usually two interviews. Generally the first interview would be an interview with a recruiter or hiring manager. The second was usually a technical interview where the company offering the role could pick my brain about how much I knew about whatever technologies I had experience using as a software engineer. Occasionally I would be asked to do a third interview.
In the past when a company asked to do a third interview, this was a sign to me that they did not know what they were doing when it came to hiring. It should never take more than two interviews for a company to know if they want to make an offer to a candidate.
In the last year and a half this process has changed. What used to be a relatively short process has become a real slog. On average with the companies that were serious about interviewing me for a role, it took five interviews. Five!
The Coding Assessment
I am assuming because there are so many applicants looking for fewer roles, many companies will have applicants for programming roles do a timed test where they have to perform a coding assignment. Brian Rinaldi just did a post on this on linkedin that I think everyone should read. These assessments are actually costing companies good candidates.
Most of the assessments I did had a timed test where the candidate was supposed to transform some sort of data structure to another structure, and modify the code so it would pass a series of unit tests. The first flaw I found with these tests is that they have the code in a pseudo IDE that is in a browser window. I typically use real IDEs when I am writing code so I can use break points. One of the things these assessments do is record your keystrokes so they can detect if you are cheating, i.e. going to Google or ChatGPT to lookup answers. One of the other problems is that these are not a real world tests. The data structures I typically use are nothing like the ones I used in these assessments.
Some companies are doing the assessments correctly. A couple of the companies provided me a template or an example of what they wanted, and then had me either go and fix their example or write a new program that accomplished what they were looking for in their assessment.
The best coding test I had was one where I was given a Xcode project with a bug. They asked me to fix the bug and add some new features, and write unit tests to test the new features. I think this is the best way to do an assessment, and it is more realistic than the timed based browser assessments.
The Technical Interview
One of the companies I interviewed with had me do two different technical interviews and then another one with the manager I would have been working for. At the end of the first technical interview at this company, the interviewer had one hour to interview me before I had to do another interview with another company. Towards the end of the interview, about five minutes before I had to go to my next interview, he asked me to do a coding assessment. The assessment was to transform a flat array of objects with a parent child relationship into a hierarchical structure in TypeScript. I told the interviewer that I only had five minutes before my next call, but I verbally described how I would transform the array into the structure using a Map.
This same company preceded to interview me another two times after this first technical interview. At the end of the process I tried to find out if they were going to make me an offer because I had another offer at this point after interviewing with for four weeks. They came back and told me that they were going to pass on making me an offer because I had not done the coding test. The same one that I verbally described how I would do five minutes before my next call.
One of the advantages that companies have right now is that there is are many great candidates to choose from because of all of the tech layoffs. One of the more perplexing things I noticed was the amount of time that companies are taking to get back to candidates, and once they do, how long the entire process takes. One of the Silicon Valley companies I did an interview with I asked how long they were planning on taking to do the entire process. The answer I got back was six to seven weeks. As bad as that sounds, there are companies that take longer. I interviewed one time with one of the big cloud companies, I asked them how long they were planning on taking before filling the role, and they told this time it would be around six months, which was much faster than the 18 months it usually takes them to fill a role.
The advice I would give to any company that is hiring is that when you have candidates that are currently unemployed, you should not have a long extended hiring process. It is not good for your organization, and it is extremely disrespectful for the people who want to work for your company. These candidates may or may not have a severance. Don't make someone wait who can start working for you tomorrow.
It took me less than two months to land a new role, so I can't complain how long it took me to land a new role. I have a friend where it took him seven months to land his next gig.
My advice to companies looking to fill roles is to not waste time on extra unneeded interviews, especially with candidates that are currently out work.
If you have multiple people that need to interview the same candidate, try to do a gang interview where everyone can do the interview on the same day. If you do have to split the interviews up, keep the time between interviews to minimum.