Job Search Retrospective (2022 edition)
I finished up my job search, so it's time for the last step of my process. Looking back at what I did, evaluating what I learned, and writing it down for future me. In the spirit of my very public process, I am also sharing those learnings with you!
I am not going to spend much time explaining how I approached the job search because I wrote a lot about that in the Anatomy of Julie's Job Search series. I will focus more on personal learnings, data analysis, and trends I noticed during the process.
This is a pretty long post, so feel free to take a look at the table of contents and jump around to the bits that interest you. I recommend reading this post on a larger screen, if you can. It would be a lot to take in on mobile.
Table of contents
The disclaimers from my anatomy of a job search post also apply here. TLDR: this information is provided "as is." Use at your own risk.
I anonymized organization and role names to avoid calling out any specific companies while still providing relatively granular data about my search. The numbering of organizations is not alphabetical, and I will not be commenting on which companies are which, so please do not ask.
I am not sharing what my next job is until I start in mid-October. Even when I do, I will not be posting about it here. It is important to me to keep my personal content separated from my employer.
Stages of the job search
My mental model of the job search has seven stages. In past searches, I went through them informally. This time around, I was significantly more intentional because I was working on the job search series. That intentionality included a lot more data, which you will see throughout this post.
Reflecting was the first step of the process. I used this time to reflect on what I wanted out of my next job and what I brought to the table. In this job search, I was so thoughtful that I reflected twice.
My first reflection happened a few weeks into my summer break. It can take significant time to get headcount and funding for experienced engineers, so I hoped that communicating my plans ahead of time might improve my odds. A post with a clear "I'm not looking until August" was a helpful place to redirect people during my time off. The result was published in Available for work in late summer 2022. It included an airtable form where prospective employers could sign up to be contacted when I started my search.
My second reflection happened at the beginning of my official job search in early August. I did a lot of work the first time, and my feelings hadn't changed much over the summer, so this was more like a final draft than a brand new reflection. The result was published in Looking for Work (2022 edition) with an FAQ explaining what had changed since April. It included a new airtable form and an email alias as the recommended methods to contact me.
I did a lot of preparation to set myself up for the complexity of my job search. I didn't start completely from scratch because I've done this a few times before. However, I struggled with the limitations of my tools last time and wanted to set up something more complex and aligned with my mental model.
I ended up doing something pretty complicated with Notion, a tool that provides a hybrid of spreadsheets, databases, and documents. I'm working on a template I can reuse in the future and potentially share. This may be too much overhead for people with simpler job searches, but it might be interesting to look at or remix for your needs.
I also spent some of my preparation time migrating my personal site from an old, creaky, hard-to-maintain version of Gatsby to a currently new version of Next.js that inevitably will become old, creaky, and hard-to-maintain when I don't spend enough time updating it.
Next up is sourcing, the actual searching part of the job search. This is where I start to have some interesting data for you! I sourced a total of 35 potential roles during this process that I tracked in Notion and spent some time researching. This number does not include every potential role that was sent to me during this time.
I did not do any significant tracking, analysis, or research for opportunities from LinkedIn messages and recruiter spam (unsolicited recruiting emails that seemed blissfully unaware of my public job search) because it was almost entirely noise. I did a quick analysis of the LinkedIn messages and email I tagged "recruiter spam" between August 1st and September 13th to get some rough counts for the purposes of analysis. Those numbers bring me up to 89 potential roles.
Sources and the number of opportunities
The table below provides a summary of the sources for job opportunities, what they are, and how many roles were sourced from them.
|32||36.0%||Recruiting messages on LinkedIn.|
|22||24.7%||Unsolicited recruiting emails that seemed blissfully unaware of my public job search.|
|11||12.4%||The form linked in "Available for work in late summer 2022".|
|8||9.0%||The form linked in "Looking for Work (2022 edition)"|
prev job search
|4||4.5%||Companies I interviewed with previously.|
jobs email alias
|4||4.5%||The +jobs email alias provided in "Looking for Work (2022 edition)"|
|3||3.4%||People I know from previous jobs, conferences, or other professional capacities.|
|2||2.2%||Email that referenced my job search post, but did not use the recommended email alias.|
|1||1.1%||Friends and close acquaintances.|
|1||1.1%||Google search for job postings.|
|1||1.1%||Social slacks for ex-employees of my previous employers.|
|TOTAL SIGNAL||35||39.3%||Total number of roles I tracked in detail.|
|TOTAL NOISE||54||60.7%||Total number of low-value roles sourced from LinkedIn and recruiter spam that were not tracked in detail.|
|OVERALL TOTAL||89||Total number of roles, including low-value roles.|
Below is a pie chart representation of the data above to help visualize the scale of the sources.
Sources and market conditions
I know it looks like there were a lot of opportunities based on the raw numbers, but the market felt significantly leaner this time around. Many of these opportunities weren't aligned with what I was looking for. I saw significantly fewer companies posting roles for staff level frontend developers or hiring engineers of any kind. In many cases, I saw the opposite — layoffs and hiring freezes.
Pay ranges in job postings
I saw more pay ranges in job postings this time around. That's not surprising because more localities are passing laws that require disclosing salary information. However, I still saw plenty of job postings that did not include meaningful information about compensation. I'm not sure how effective these laws are when companies face little-to-no consequences for ignoring them, but I'm happy to see things slowly moving in a helpful direction.
Sources through stages of the job search
The table and heatmap below show how many roles from each source made it through the stages of my job search. The previous data gave you a sense of the quantity provided by each of the sources. This helps provide a better sense of the quality.
|jobs email alias||4||1||1||0||0|
|prev job search||4||3||2||1||0|
A rant about low-value sources
It is notable that zero roles from LinkedIn and recruiter spam made it past the sourcing stage. That means they were so low value they weren't even worth an introductory call with a recruiter to learn more. These sources accounted for roughly 60% of the opportunities and 0% of the value. That's a horrible hit rate considering I was an experienced candidate actively looking for a job.
I did not judge these opportunities solely based on their sources. I read through the emails and messages. They did not progress because none of them were even sort of a fit for me. Many of them weren't even in the right ballpark — it still surprises me how many people will send me backend roles when the word "frontend" is right there at the top of my profile. A worrying number of them were for crypto companies. The rest were low value for reasons like low pay, office/travel/relocation requirements, products that aren't aligned with my values, and various red flags. Some of the other sources had similar issues, but none of them were 100% a bad fit at scale.
I feel a little bad complaining about recruiter spam because recruiters have a hard job and need to eat too. However, I'm getting really sick of having to sift through unsolicited, low-value opportunities in my inbox when I'm trying to get things done. LinkedIn messaging is nigh unusable for me if I allow InMail (messages from people I'm not connected to). I disabled it after this job search and do not plan on re-enabling it in the future.
I'm especially sick of the scale introduced by recruiting platforms and data brokers. Every piece of recruiter spam tends to have at least 2-3 automated follow-ups. I've even gotten a few bits of recruiter spam via text message, which I find incredibly invasive. At this point, these contacts are functionally indistinguishable from telemarketing. I feel bad that the telemarketers have to pay their bills too, but that doesn't make it ok that they are wasting some of the little precious time I have on this earth to send me unsolicited requests that are of little-to-no value to me.
I filtered the many potential opportunities down to ten that seemed like they might be a good fit. The screening stage helped me and those companies learn more about each other before investing additional time in the interview process.
The recruiter screen is usually a shorter, introductory call with a recruiter to learn more about the role and see if it's a good fit.
The table and chart below provide information about the number of recruiter screens completed during my job search and how long they took. The "planned" timing is based on the amount of calendar time scheduled for the call. The "total" timing is the actual amount of time I spent, including preparing beforehand and debriefing afterwards.
|Role||Count||Planned (hours)||Total (hours)|
Working with in-house recruiters
I worked exclusively with in-house recruiters during this search, and they were all great. I wanted to call this out because I spent a lot of time earlier in the post complaining about recruiter spam.
I really like working with in-house recruiters, especially ones that have been there for a while. They tend to have significant familiarity with the company and solid relationships with the people and teams I'll be interviewing with. I also love working with them as an employee involved in hiring because they are solid partners in helping build and grow teams. I've been really disappointed seeing companies laying off a ton of recruiters this year. It's shortsighted, and they will regret it when they want to hire again.
As a candidate, a good recruiter feels like someone on your team helping you through the process to find a good fit. A bad recruiter can feel more like the stereotype of a sleazy used car salesman. I've had great experiences with external recruiters that match the former (I'm going to continue shouting out Jill Wohlner here!). I've also had terrible experiences with internal recruiters that match the latter (see my 2015 job search retrospective). However, I've generally had better experiences with internal recruiters, so that is who I prefer to work with unless the external recruiter has a really solid reputation.
More discussion of pay ranges
I mentioned earlier that I saw more pay ranges in job postings. I noticed a stronger trend in my conversations with recruiters. Almost every recruiter brought up compensation in early discussions. Many of them proactively shared salary ranges, and the rest did so without a struggle when I gently pushed back on sharing a number first. This felt like a big shift after years of guesstimating using anonymous salary sites and playing a game of "don't say a number first" chicken with recruiters.
I suspect this is an area where pay transparency laws are having a stronger effect. For example, California, a state where a lot of tech companies and software engineers are based, has required disclosure of pay scales during interviewing since 2018 (CA Labor Code Section 432.3). California just passed a law requiring pay scales in job postings (SB 1162), so I wouldn't be surprised if we see more movement there in the near future.
In a couple cases the salary numbers shared by the recruiter did not match the numbers included in job postings. The numbers from the recruiter were usually a little higher. I don't have enough information to speculate about why the numbers did not match.
The manager screen is usually an earlier interview with a hiring manager or someone else in leadership to evaluate if you are a good fit and worth moving on to the more time-consuming parts of the interview process.
The table and chart below provide information about the number of manager screens completed during my job search and how long they took. The "planned" timing is based on the amount of calendar time scheduled for the call. The "total" timing is the actual amount of time I spent, including preparing beforehand and debriefing afterwards.
|Role||Count||Planned (hours)||Total (hours)|
Interviewing is a two-way street
I don't have any new takeaways here. However, I think it's worth reinforcing the fact that interviewing is a two-way street. A lot of people care about their relationship with their manager because it can have a huge impact on their quality-of-life at work. I like manager screens because they help me get a sense of how I vibe with someone I'm potentially going to spend a lot of time with who will have a degree of power over me.
Most people in management understand this is part of their job. I got along really well with the majority of managers and skip levels I talked to. The outliers seemed less aware that they needed to help me understand the role and why I should be interested in it. It also was really apparent when someone didn't read the notes from the recruiter or the TLDR from my job post. I understand that managers are busy and can't spend a ton of time on every candidate (I added the TLDR with them in mind), but a little effort goes a long way. A gold star to the managers who skimmed my post and came ready to discuss the trickier areas (e.g. travel, on call).
Take-home technical screening
The take-home technical screen is basically homework companies give you to prove that you can code. I don't like them, but had previously thought of them as a lesser evil compared to the stressful live coding technical screen. I think I dislike both of them equally after this job search.
The table and chart below provide information about the number of take-homes I completed during my job search and how long they took. The "expected" timing is based on the suggested timing provided with the instructions. The "total" timing is the actual amount of time I spent on the exercise.
Two companies allowed me to skip this step because I interviewed with them in 2020 and strongly communicated that I did not want to complete the take-home again. One company offered to let me re-use another take-home, but their exercise was sufficiently distinct that I was worried doing so would not give them adequate signal, so I completed the provided exercise.
|Role||Count||Expected (hours)||Total (hours)|
Why I don't like technical take-homes any more
In my post about screening, I noted that take-home interviews should:
- Take no longer than 2 hours, including any learning time to work with the tools and technology.
- Be as close as possible to the kind of work you are being hired for.
All of the technical screens in this job search fulfilled the second requirement. Only one of them fulfilled the first. In fact, most of them were not even completed in the time recommended by the instructions for the exercise.
It's possible that these exercises took longer than expected because I am a very slow programmer who is bad at my job. At a low point, I briefly entertained that possibility, but I know it's not true. I did not code a lot over the summer, so I was a little slower than usual, but not enough to account for these differences. I lost some time to multitasking, but that's not a good justification for the extra time. Most people doing these exercises will need to multitask because they have jobs and lives outside of the interview process.
A large contributor to the time is language asking for a result similar to a pull request you would submit at work. For me, that includes a lot of things that can add up like: writing tests, ensuring code is readable and maintainable, and explaining my work and choices. It would be really helpful if companies would be explicit about how much or little they want of those things and plan accordingly for the time needed. For example, if you only care about seeing a couple unit tests, tell me that, so that I don't provide the level of coverage I would for real production code.
A contributor in several exercises was expectations around accessibility. Doing accessibility correctly can be time-consuming for certain kinds of UIs, especially for someone who is not an expert and often needs to do a little research and testing to get things right. Accessibility is important, and I think it's valid to test for it in interviews, but that time needs to be accounted for. I wonder if people less experienced with accessibility assumed this would be quicker stuff like checking for alt text on images and using semantic HTML tags.
Another likely contributor is that engineers aren't great at estimating how long things take. I don't think anyone is maliciously underestimating the expected time for these exercises. They're just being a little too optimistic. Unfortunately, messages like "we want to respect your time, so only take a few hours on this" start to feel frustrating when the exercise actually takes a day to complete. Most candidates won't provide feedback about this because they don't want to be perceived negatively for complaining or being slow at the task.
The only company that stayed within my recommended timing parameters was very explicit about the exercise being completed within the time allotted, and actually provided an exercise that was feasible to complete within that time span. A gold star to that company for being thoughtful about my time.
Technical take-homes were the most time consuming part of this job search. They took longer than the virtual onsites (although not by much). This is not a good use of my time as a candidate. I think I'd rather go back to the live coding because at least it takes less time. Mostly, I'm really sick of having to spend a lot of time and energy proving I can code over and over again after 15+ years of working professionally as a software engineer.
This stage of the job search is focused on the heavier set of core interviews that are often referred to as an "onsite" because historically they involved coming into the office for a single, grueling day of interviewing. Nowadays, these are more often given remotely, spread across multiple days, and sometimes referred to as "virtual onsites."
The table and chart below provide information about the number of virtual onsites completed during my job search and how long they took. The "count" indicates the number of interviews. The "planned" timing is based on the amount of calendar time scheduled for the onsite. The "total" timing is the actual amount of time I spent on the onsite, including preparing beforehand and debriefing afterwards.
The two roles with one hour onsites were companies I did a full interview panel with in 2020 and only required an abbreviated interview this time around based on my past performance. I listed seven roles as reaching the interviewing stage, but only six onsites are listed below because one of them was canceled after taking a job offer.
|Role||Count||Planned (hours)||Total (hours)|
Some bullet points about onsites
I don't have any new takeaways from the onsite interviews. A lot of my feelings are already covered in my posts about preparing for interviews and interviewing. Below are some bullet points to reinforce the bits I hit this time around.
- Please stop asking trivia questions. They suck for candidates and aren't a good signal of job performance. Only a couple companies did this, so maybe it's going out of style. I really hope so.
- I love that interviewing remotely allowed me to spread interviews over a couple days. The full day onslaught was always way too much.
- I wish consecutive interviews had a little more breathing room. More than a few times, I had to cannibalize my question time at the end, so I could go to the bathroom before my next interview.
- I thought it was cool to see several of the companies including shadow interviewers, so that other team members could learn how to interview. This is refreshing because too many companies just throw interviewers into the deep end, which sucks for them and for candidates.
Occasionally, myself or the company will request follow-up discussions to get information that was not covered in the onsite. In this case, these discussions were focused on learning more about potential teams with companies that did bundled hiring.
The table and chart below provide information about the number of post-onsite follow-ups completed during my job search and how long they took. The "planned" timing is based on the amount of calendar time scheduled. The "total" timing is the actual amount of time I spent, including preparing beforehand and debriefing afterwards.
|Role||Count||Planned (hours)||Total (hours)|
The penultimate stage of the job search was really stressful for me this time around. I put a lot of those feelings into the post about this stage because I wrote it after accepting an offer, but I have more to share here.
Two of the companies I thought would lead to offers early on declined to move forward, which made me really nervous. One liked me but couldn't afford a staff engineer, which made me even more anxious about the already scary job market. Another didn't provide an explanation, but I think it was because I interviewed poorly, which made me anxious about my ability to perform in interviews.
I was tired of the job search by the time I got to more virtual onsites. I was trying to juggle screening calls and interviews during the day. Then I had to balance take-homes, interview preparation, and personal responsibilities on nights and weekends. In my last job search, I finished all of my scheduled onsites and waited for offers before making a decision. I intended to do the same thing this time, but by the time I got two good offers, I really wanted to be done.
My decision-making process was different this time around because I was in a really different place. In 2020, I was looking for new work only a couple weeks after leaving a very stressful job that burned me out and then piled on an expectation to work nights and weekends during the early pandemic. Some of my core motivators as a software engineer are solving interesting problems and learning, but growth was scary when I was burned out. I was looking for a safer, more relaxed job where I could weather the storm. This time around, I'm not burned out. Taking the summer off was incredibly restorative. It put me in a place where I felt excited about taking on challenges again.
I noted that my gut is usually the least important factor in decision-making, but I think it played a bigger part this time around. I'd been in various stages of burnout mode for so long that the analytical part of my brain tried to optimize for that early in the process. As I got to job offers, something changed. I was talking to my partner about the various roles and surprised myself when I realized how excited I sounded about one of them. It wasn't the original frontrunner. My gut was reminding me that I could pick something challenging that sparked joy.
That level of excitement combined with liking everyone at the company I'd met, a helpful follow-up with my prospective skip level, and a very competitive offer made it easier for me to make a decision early and stop exhausting myself with the job search. I was really bummed about declining with the other company because they also had great people and interesting opportunities, but I could only take one job, and one of them was ultimately the better fit for right now.
This is the part of the process where I write the post you are reading right now! It's really long, but I hope you're finding it helpful.
I added some lightweight time tracking to my tooling for this job search, so I could get a better sense of how I was using my time. I focused on tracking the timing associated with the many activities that companies required me go through as part of the interviewing process. The tracked activities accounted for about 92 hours of work. The core job search (from start to signing an offer) lasted roughly 6 weeks. If you include the retrospective, it took two months.
You can play around with the visualization below to get a sense of the date ranges associated with the stages of my job search and the time commitments associated with various tracked activities.
The table below provides a summary of the tracked activities, what they are, and how much time I invested in them.
tech take home
|27.58||30.0%||Homework assignments to prove you can code that are completed on your own and then submitted for review.|
|24.60||26.8%||Remote equivalent of the full day of interviews that used to happen on site.|
hiring manager screen
|10.50||11.4%||Interview with a hiring manager that is part of screening earlier in the interview process.|
|7.33||8.0%||Time I spent learning about a company to prepare for interviews.|
|6.13||6.7%||Follow-up calls with recruiters as I progressed through the interview process.|
|5.25||5.7%||First call with a recruiter early in the interview process.|
|2.75||3.0%||Additional interviews or discussions after completing the onsite.|
|1.75||1.9%||Filling out an application for a role.|
|1.50||1.6%||Writing a cover letter, usually done as part of filling out an application.|
|1.25||1.4%||Time reviewing job offers, negotiations, etc.|
|1.08||1.2%||Miscellaneous technical interviews that happen as part of the screening before moving on to an onsite (e.g. take home follow-up, technical discussions).|
|0.83||0.9%||Time involved in providing references.|
|0.53||0.6%||Reading and signing non-disclosure agreements (NDAs) that are often required for interviewing.|
|0.33||0.4%||Filling out surveys with my demographic information, presumably to help companies get diversity numbers for their candidate pool.|
|0.25||0.3%||Filling out feedback surveys after completing interviewing to help companies improve their process.|
|0.25||0.3%||Time involved providing information needed for background checks.|
|TOTAL||91.93||Overall time I spent on activities that I tracked. This does not cover all the time I spent on the job search.|
Below is a pie chart representation of the data above to help visualize the scale of the activities.
Time per role
The table below provides a summary of how much time I spent on tracked activities for roles and the stage of the job search those roles ended in. Some of these companies took less time because I completed a full interview process with them in 2020 and was able to do a shorter process this time around based on past performance.
The percentages and totals don't quite add up because a couple activities counted against multiple roles at the same organization.
|Role||Tracked time (hours)||%||End stage|
I regret not tracking all of the time associated with my job search to get a full sense of the time investment. I estimated the amount of time I spent on additional activities to get that data.
|60.00||Writing blog posts. First drafts of most of the "anatomy of a job search" series were written in Scrivener during my summer break, so a lot of this work happened before the official job search started, but it is still relevant for my time tracking.|
|24.00||Migrating my personal site from Gatsby to Next.js so I could write new blog posts. Who doesn't want to shave a yak instead of starting their job search?|
|24.00||Initial Notion setup. This was my first time using Notion, so this included a bunch of learning.|
|14.00||Triaging emails, forms, LinkedIn, slack, and other sources where people sent me potential job opportunities. This usually included reading their messages and doing a little research about the company and role.|
|12.00||Reading and responding to emails related to the job search.|
|10.00||Entering data into Notion and keeping it up-to-date throughout the job search.|
|8.00||Setting up templates for things like emails, interviewing, and offer discussions to speed up other parts of the process.|
|8.00||Preparing for interviews by practicing. See my "preparing for interviews" post for details about what this entails.|
|8.00||Updating my resume and the associated content on LinkedIn.|
reverse job posting
|8.00||Reviewing my post from earlier in the summer and updating it when I kicked off my job search. This also included setting up a new airtable form and some email filters.|
searching for jobs
|8.00||Checking a variety of sources for open roles to apply for.|
|2.00||Promoting my job search to get people interested in hiring me.|
|1.00||Setting up Calendly and keeping my availability up-to-date.|
|1.00||Handling scheduling that could not be done with Calendly (mostly onsites).|
|TOTAL||188.00||Overall estimated time I spent on activities that I did not track. Several of these activities started before my official job search kicked off in August.|
Is it a full time job?
I often refer to looking for work as a full-time job. It certainly feels like one with all of the stress, effort, and multitasking. I was curious if the numbers supported my assertion. The table below shows some rough math based on a combination of the tracked and estimated activities minus the site migration and writing, which were more tangential to the job search.
|Tracked hours||91.93||Total time for activities that were tracked in detail during my job search.|
|Estimated hours||104.00||Estimated total time for activities I did not track in detail. This excludes estimated time for writing blog posts and migrating my site, which were tangential to the job search.|
|Total hours||195.93||Overall time spent on the job search based on the combination of tracked and estimated time.|
|Weeks of core job search||6||The approximate number of weeks I spent on the core job search from start to signing a job offer.|
|Hours per week||32.66||The average hours spent per week based on the above.|
This data suggests I was working a full four-day week during my job search. I did try to take Fridays off, so that's not inaccurate. However, this data doesn't account for everything. Looking for work, like many jobs, requires multitasking and smaller tasks that add overhead, but don't necessarily show up in time tracking. If you've ever worked a job with billable hours, you know what I'm talking about.
The "hours per week" in this table averages the time over six weeks, but that's not how it actually played out. In practice, I tended to have easier weeks at the beginning and then some really long weeks near the end when I was doing take homes and onsites.
Several of the tools I used in my job search had costs associated with them, so I wanted to be transparent about that. A breakdown of the costs can be found below.
|Calendly Essentials||$20.00||Two months of Calendly Essentials to assist with scheduling.|
|LinkedIn Premium Career||$39.99||Two months of LinkedIn Premium Career to get additional insight for my job search. The first month was a free trial.|
|Notion Premium Pro||$0.00||Three months of Notion Premium Pro to get version history. This was free because I had $15 in credits on my Notion account.|
Both Notion and Calendly provided a lot of value for a reasonable monthly price. I will likely pay for them again in the future. LinkedIn Premium provided little value for a lot of cost, and I regretted forgetting to cancel before the free trial ended.
I wanted this section to make sense in isolation for people who skipped around, so you may find a little repetition. I go into more depth, so it's totally worth continuing even if you read everything else.
Challenging tech job market
The tech job market right now is challenging. The last time I looked for work was in the summer of 2020, which was difficult because it was early in the pandemic. The market feels worse now. In 2020, companies were being cautious, but seemed willing to spend money on critical hires. In 2022, more companies are on austerity measures with layoffs, hiring freezes, and really tight budgets. Even the companies that are still growing are doing so really carefully. I didn't analyze any data, but it seemed like significantly fewer companies were posting roles for staff frontend developers.
In 2020, there were several cases where companies created headcount for me because I was an advantageous hire who is rarely on the market. I shared my availability in late April hoping something like that might happen again. Unfortunately, the market took a pretty sharp turn in May and hasn't really recovered yet. As far as I know, nobody was creating headcount for me this time around. At least one company tried, but couldn't make it happen, so I think this is more a reflection on the market conditions than on me.
I can't tell if the current market was harder or easier for me because I'm an expensive hire in a specialist role. I suspect it's a little of both. I could have applied to a larger number of roles if I was more open to fullstack work, but those roles likely had more competition. I've heard rough things about the job market in tech from people in a wide range of roles and levels of experience, so I don't think anyone is having a good time right now.
Pay ranges discussed more openly, but values all over the place
I noticed a lot more early discussions and transparency about pay ranges from companies this time around. Historically, it's been much harder. Recruiters often insisted that you give a number first, which puts you in a worse negotiating position. This time, recruiters offered numbers without me asking or in response to a gentle "what range are you targeting for this role?"
I can only speculate about why this has shifted. I might just have gotten lucky, but there is increased pressure on the industry to be more transparent. The growing amount of state legislation requiring pay scale transparency combined with increased remote hiring is a likely contributor. The market conditions and my level of experience may also have been factors.
While companies were transparent, the numbers were all over the place. Some of the individual companies shared numbers with wide ranges. The overall range across all the companies was over $100k. That was just base salary without even accounting for the messiness of equity.
The numbers were also less predictable than I expected. Many of the smaller, private companies mentioned significantly more competitive numbers than the larger, public companies, which is not what I experienced in my last job search. I know the job market was weird in a "competitive hiring" way before the market got weird in a "mass layoffs" way, so maybe that accounts for some of this. I'm really not sure what to make of it.
Exhausted by technical take-homes
In my last job search, the screening process had a mix of live coding and technical take-homes. This time, there was no live coding until I got to the onsites, and even those had very little. I suspect this is a reaction to people complaining about the stress of live coding interviews. Unfortunately, they've exchanged shorter, more stressful technical screens for much longer, moderately stressful ones.
This part of the job process feels fundamentally broken. Companies keep trying to find better ways to validate that people really know how to code, but the end result isn't noticeably better. It's mostly just different flavors of bad. More companies need to put together exercises that balance getting signal on a candidate's skills with respect for their time.
I don't have a great solution to this problem, but I have seen an approach a couple times (once in this search, once in the last one) that felt like a reasonable balance. This approach involved a coding exercise:
- Relevant to the work the candidate is being hired for.
- Timeboxed to two hours or less during a time of the candidate's choosing.
- That was actually feasible to complete in that amount of time.
- With a short (30-45 minutes) follow-up call to discuss the solution a day or so later.
- Gets signal on the candidate's coding abilities in the exercise.
- Gets signal on the candidate's communication skills in the follow-up discussion.
- Is respectful of the candidate's time by taking a maximum of 2-3 hours.
- Is respectful of the interviewer's time by keeping the exercise to a relatively small problem and a short follow-up.
More time zone mismatches
Historically, I've found more companies to be heavy on Pacific time because there was such a large contingent of employees on the US West Coast. This worked great for me as someone who lives in Portland and is absolutely not a morning person, but I recognize it creates problems for people in other time zones. I ran into the occasional job that required early mornings because of collaboration with employees in Western Europe, but it wasn't common.
This job search, I ran into a lot more companies that were heavy on Eastern time, which is better for people closer to that time zone, but a drag for my night owl brain. I did not talk to enough companies for this to be a strong indicator of a shift, but I found it interesting. I wonder if the increase in remote work during the pandemic has evened out the distribution of employees.
The hardest part of these mismatches is when remote companies rely heavily on synchronous meetings. A company I was relatively interested in dropped to the bottom of the list when someone mentioned 8am daily standups. That's rough for me as a night owl. It would also be really challenging for people who need to drop kids off at school. It's been awesome to see a lot more companies shift to remote in the last few years, but there's still a lot of work to do around making it effective.
Frustrations with hiring into staff/principal level
My official job title has been "principal" for roughly the last 4.5 years. I was hoping to find a similarly leveled role to reflect my expertise and the value I deliver. I found this a lot more difficult than I anticipated. I suspect it's partly because of the challenges in the market right now, but it's probably more than that. I think some companies are struggling to figure out how to leverage very experienced individual contributor engineers, and that extends to hiring.
I decided to move this topic to a
separate post after hitting over a thousand
words. This retrospective is long enough already.
Stay tuned for more on this
topic soon! It's now available.
Unsurprisingly, searching for a new job continues to be stressful and time consuming. It gets a little easier with experience, but it is still unpleasant, and the current market conditions really aren't helping. Hopefully, my new job will be awesome, and I won't have to do this again any time soon.
Despite it adding overhead to my job search, I'm really glad I spent the time writing all of these posts about my process. It gave me a chance to get back into writing again, which is something I really missed. All of that introspection led to a more organized and effective job search. Hopefully, it will also be helpful to other people struggling to make their way through the labyrinthine interviewing process for software engineers.
- Several of the visualizations in this post were created using the nivo component library.
- The icons used in this post are from Font Awesome.