I’m fresh off the job market with a new career in hand — yay me! But what did the process look like? In the process of changing careers, I applied to a LOT of jobs. 398 to be exact. Below, I’m going to outline some of the things I learned from the transition and show some of the useful statistics I compiled along the way. This article isn’t meant to be advice on “how to land a job in ___ field”, just some of my thoughts and reflections from the process.
Nearly 12 years ago I made the “drastic” decision to ditch my career trajectory of accounting to study physics. I was nearly finished with my accounting degree and was already registered for classes to get my MS in Accounting in the next semester. Long story short, I didn’t pursue accounting and instead got a 2nd degree in physics.
From there I went on to get my Ph.D. in astrophysics with a focus on radio astronomy and star/planet formation and then had 2 postdoctoral research positions (in 2 different countries). Scientific research and academia were very intellectually satisfying, but there is a scary amount of downsides to this career path. For starters, I had no real supervision or mentorship after I received my BS (side note, my undergraduate research advisor was amazing and we still talk regularly). My Ph.D. advisor was a joke. At times it was difficult to tell if he actively wanted to hinder my success, or if he was just so incompetent that it had the same effect. He also massively failed in helping me establish a good collaborative network (it’s all about who you know, right?). As I moved on to different postdoc positions, the situation never really seemed to improve. Research fields and subfields are surprisingly cliquey and hard to break into from a collaborative standpoint. This really showed itself when it came time to submit proposals for telescope observing time and you realize many of your past collaborators have been working on similar research topics and you were completely unaware of it. No telescope data means it's harder to build that research profile which is imperative for success (see the old “publish or perish” adage).
Regardless of the above situation, the odds of landing a permanent position in academia are very low. One reason for this is the shocking amount of luck and bias in who succeeds in academia. Academia already is biased towards people who come from privileged backgrounds. When discrimination is factored in, you have an environment ripe with inequality. The primary reason for the lack of jobs though is that universities graduate many more PhDs in a year than professors who retire. About 90% of physics and astronomy PhDs in the US do not ever become tenured professors. There is an ever-increasing gap in the number of newly minted PhDs and permanent academic jobs available.
In my research career, I always felt like I was on my own with no real guidance. This coupled with the extremely low wages, short contracts, continuously moving countries (3 times for me), and the extremely low likelihood of finding a permanent job somewhere led me to consider other career choices.
There are a lot of transferable skills that one gets while earning a Ph.D. in a STEM field. Some of the key skills are the ability to program, do statistical analysis, and fit complicated models to data through various machine learning approaches. These are all very sought after in the fields of data science, software engineering, and machine learning.
Unfortunately, a very small amount of my time as a scientist was doing actual science. A good chunk of my research was just coding something up with no guidance. I also happened to enjoy coding and decided to look into jobs that would focus on that plus some aspect of problem-solving. Therefore I again decided to take the “drastic” decision of changing my career trajectory.
I wouldn’t say I did a lot to prepare for the transition, but I did do some preparation. I took the famous Machine Learning course by Andrew Ng on Coursera (which is free by the way), did an online course on algorithm design, a few small courses on using TensorFlow for deep learning, random online tutorials about machine learning and data science, a bunch of practice coding problems, and had discussions with a few people who also made the transition from astrophysics to industry.
I was lucky in that during my research career I used a lot of Python, built some custom machine learning pipelines, and of course did a lot of statistical analysis. These are 3 of the main things I saw listed as requirements. SQL, R, dashboarding, were also very frequently listed. Since it's not possible to learn ALL the potential tools necessary, it's usually best to focus on a few of them and then highlight things from your past work that can be considered data science or machine learning skills.
There are a lot of different ways to apply for jobs. I decided to focus on finding positions through LinkedIn, Indeed, ZipRecruiter, Referrals, and a recruiter (when possible). Most of the positions I found, from whatever avenue, lead me to apply directly on the company website. The applications directly through some other medium tended to be more useful as they often tell you when your application was viewed or the resume was downloaded. The pie chart below shows a breakdown of where I applied to jobs.
In addition, there were some jobs I applied for by directly going to the company’s website and applying (instead of being redirected from LinkedIn). I also used the Google Jobs search feature to find a few positions. These all linked back to a specific job board, so I applied didn’t make a new category for them.
I spoke with 3 recruiters while on the search as well. These people either reached out to me directly or were referred to me by someone else. One of them was a complete mess, said many inappropriate things during our conversation, and I chose not to work with him. Another one said he had some positions he wanted to send me but then never followed through. The third was very nice and helpful.
Getting referrals is very luck-based. If you don’t happen to have any connection at a company you want to apply to, then it can be pretty hard to get a referral unless you contact random employees that work there.
Overall I found LinkedIn to be the best way to search for new jobs. The number of positions listed is very thorough. My daily routine during the job hunt included going to LinkedIn every morning and searching for new jobs with specific keywords (such as “data science” or “physics”) and filtering the results by the last 24 hours. If you apply through LinkedIn’s “easy apply” feature they will tell you if a company looked at your application or downloaded your resume. Even if the posting just redirects to the company’s website (as most do) you can still keep track of the jobs you applied to by clicking the “I applied” button on the posting. This came in handy as all the job postings started running together in my mind and it was trickier to remember if I had applied to a position without looking it up first
Side Note: I kept a spreadsheet with all the jobs I applied to help compile the statistics in this article.
The response rate for my applications was 24.6%. The average time to hear back from a company, either a rejection or a request for an interview, was 14 days.
Response Rate — 24.6%
Average Response Time — 14 days
Looking at the histogram of response times below, you can see that many of the companies that did respond, responded pretty quickly. The longest response time was 88 days (spoiler alert: it was a rejection).
The breakdown of whether I was rejected by a company, received a request for an interview, or was ghosted (meaning I never heard back from them at all) is in the pie chart below.
An overwhelming majority of places ended up ghosting me. I never received a response from 75.4% of the applications I submitted. The nature of online applications, potentially 100s of applicants, and companies not respecting applicants’ time means that one should expect to not hear back from a given application.
Ghost Rate — 75.4%
I find this incredibly frustrating. If a company can send an automated email that an application has been received, they can send an automated email that the position has been filled. If they look at an application and decide they’re not interested, they can send a generic rejection. Many applications require a non-negligible time investment. Especially the ones that have you re-enter everything from your resume into online forms, ask you a lot of screening questions, require a cover letter, and then make you take some online quiz or coding test. A company not having the courtesy to reply to you after all this is rude, but I suppose shouldn’t be surprising given how many companies don’t value their employees.
What did the job application timeline look like? I think this is best visualized by looking at the continuous distribution function (CDF) of the applications submitted, the rejections received, and the offers for interviews. These CDFs are shown below. For the interviews, only the first notification of an interview is recorded, not the actual interview date or any of the follow-up interviews.
As is clear in the CDF, I started out applying to jobs a lot more slowly. My last job ran through the start of October 2021, so I suppose I had less motivation while still employed. I was also in the process of moving countries (and getting a new visa), so that was both a contributing factor in the number of applications and likely the response rate. I think you’re probably less likely to hear back from a job if you are both not in the city where the job is and don’t currently have a valid work permit. My work permit came in around September 1st and I relocated on October 1st. You can see in the CDF when I was moving my looking at the flat part of the black curve at the end of September (similarly there is another flat point around Christmas because very few jobs were posted).
A total of 267 days elapsed between my first application and my last one meaning I was officially on the job market for just under 9 months. A total of 216 days between my first one and the one I ended up taking. If you consider that it was a lot harder to get a job in a country I wasn’t living in, and also didn’t have a visa for, then you could say my application process started in October. This means the application timeline lasted 126 days from start to finish or just over 4 months.
For the job I ended up taking, there were 43 days from when I submitted my application to when I was contacted for an interview. From contact to contract, 19 days had elapsed.
The interview process was interesting. For all my 398 applications, I interviewed with 15 companies. Most interviews started with some sort of initial screening with a recruiter. These were usually pretty straightforward and largely just asked me to expand upon the details in my resume. At this point the next steps were either 1) an interview with the hiring manager, 2) a technical interview, or 3) some sort of coding assessment.
The coding assessments varied WILDY. Some of them were short multiple-choice quizzes about statistics or basic programming, some were leetcode style questions, and some were take-home assignments. Also worth noting is that some places had you do one of these as either a part of the initial application (without telling you about it) or you received an invitation to do it immediately after submitting the application. I don’t think it is really possible to prepare for a take-home assignment, but I did log quite a few hours doing practice coding problems that I’ve read are common for these interviews. I would say those may not have directly benefited me, but they did indirectly benefit me in helping me hone my programming skills a bit.
With all my interviews, a few things stood out as particularly noteworthy:
- I made it through multiple rounds for one place and was sure I had one job secured. They contacted all my references and a week later told me the position “no longer existed”. Not much follow-up. Frustrating to say the least.
- One person cut an interview short because I didn’t have significant experience with a specific software package that wasn’t listed in the job description.
- Multiple places didn’t know where I was currently living or what my background is in (astrophysics) even though these things are very clearly on my resume and listed in multiple places that they made me fill in on the resume.
- One interviewer was puzzled on how I could claim to know statistics even though I don’t have experience with the R programming language. As if the only way to do any sort of statistical analysis is with R???
- One company emailed me at approximately 4:00 AM informing me I had an interview at 8:15 AM later that morning. There was no prior correspondence other than the automated email I received when applying about a month earlier. I received a follow-up email at about 6:00 AM informing me my phone number was not valid. I woke up at about 6:30 and replied with my phone number (which of course was correctly listed on my resume). 8:15 AM comes and goes and I received no call. I sent a follow-up email later that morning, I never heard back.
- One company contacted me to schedule an interview and asked me a few basic questions in the email like start date, etc. I replied and then didn’t hear anything. To be fair, this was 2 days before Christmas. After following up 2 weeks later I was told the hiring managers were just coming back from holiday and they would schedule the interview soon. I followed up 2 more times weeks later and was effectively told the same thing. I received a generic “thank you for taking the time to interview with us” rejection 2 months after they contacted me to schedule the interview.
I was also ghosted by 3 companies after doing at least 1 interview. In all 3 of these scenarios, they told me I was guaranteed to receive either information about the next steps or a link to an online coding assessment within a short period of time. I followed up multiple times and never heard anything.
There was also 1 place I interviewed with that required relocation for the job. This wasn’t clear from the job posting so I had to turn down the offer to move further in the interview process.
274 days after submitting my first application I received my first offer. I ended up getting 2 more within a few days. Given the whole process of applying to jobs, this seems highly unusual. I don’t know if my experience is just a statistical anomaly or not, but the first offer could have helped get the others. Since I was in the late stages of interviewing with the other companies, I let them know that I had a competing offer and asked about the expected timeline to hear back or move on to the next stage. This accelerated thing both times and very possibly led to offer.
I’m very happy with the position I took. While most of the positions I applied to were either Data Scientist or Machine Learning Engineer roles, I ended up taking a software developer role with a satellite imaging company. The role combines remote sensing and atmospheric calibration. It almost feels like “reverse astronomy” because the telescope is pointed back at the Earth :P This position uses a lot of the same tools/skills I developed over my research career, which helps me feel like it won’t be too big of a shift. The goal of the company is to image the entire Earth with a daily cadence and provide science-ready images within hours. The benefits of such a product have wide-reaching applications from studying the effects of climate change, to forest and wildfire monitoring, to agricultural development. It’s a good job with a good salary that I can also feel good doing. The latter of which isn’t necessarily a given in industry positions. There are a lot of data science jobs out there that effectively serve to make X company more money from marketing and I really just don’t find myself enjoying such as position.
How did I “do” overall? This is a hard question to answer. I do think that being ghosted is the expected outcome for any given job for the majority of job seekers at the moment, given the anecdotal evidence I’ve seen. This seems to be one of the more common complaints on social media threads about jobs.
I had an interview rate of 3.8%, a rejection rate of 20.9%, and a ghosting rate of 75.4%.
Going into the process I was thinking that an interview rate of 5% would probably be pretty good. Therefore at 3.8%, I think I actually did alright. I’m not sure how much of this is based on my resume, application strategy, or just blind luck though. Probably all 3 played some sort of role. Given my interview rate though, how many jobs should I have expected to apply to before receiving an offer? If we look at the probabilities:
P is the probability of getting at least 1 offer, i is the probability of getting an interview, a is the probability of an interview turning into an offer, and n is the number of jobs applied to. You can’t get a job unless you interview (unless you’re very well connected) so I’ll assume the probability of an interview is equal to my interview rate of 3.8%. From there we need to know how many people are interviewed. This will vary a lot between companies but 20 people seems like a good estimate. To make things simple, let’s just assume that the job is randomly awarded to one of the interviewees (sometimes it does feel like that). Reworking the equation above,
I needed to apply to 364 jobs to have a 50% chance of getting at least 1 offer. To have a high level of confidence in getting at least 1 offer (95% or about 2-sigma), I needed to apply to 1575 jobs. Looking at it from this perspective, and considering I applied to 398 jobs, I think I did alright.
It is also worth considering how well I did in regards to my application strategy. To visualize this, I made a Sankey style flow chart of all my applications
In here you can see just how many places I got ghosted by. A couple of other interesting things to note are that I was ghosted by all of the places I applied to via Ziprecruiter and through company referrals. As I mentioned earlier, Ziprecruiter was not a useful tool at all. Most of the jobs suggested for me were part-time high school tutoring positions that wanted someone bilingual in either French or Mandarin. I tried to interact with these posts by flagging them as “not relevant” or “not my field” or “overqualified” to improve how the algorithm send me jobs. Unfortunately, I was not successful. Also worth noting is that many of the relevant jobs that Ziprecruiter suggested were very old. Sometimes I had already applied to them weeks ago through a different avenue and sometimes the links were broken and the posting was taken down from the company’s website. I’m not sure if my experience is because of the types of job I was interested in or the location, but overall I think Ziprecruiter was a waste of my time.
I was also ghosted by all the companies I applied to with an employee referral. I honestly found this quite surprising as I had always heard the best way to guarantee an interview is by employee referral. I’m not sure if I was very unlucky here or if that piece of information just isn’t true — but I didn’t have any luck.
From this whole process, I learned a few things.
Brush up on your coding
Even if you’ve been coding for years, the environment of a live coding challenge is different. It’s a good idea to run through some practice coding problems to get a sense of what it is like.
Expect to be ghosted
75.4% of places ghosted me. I don’t think I’m unusual in this sense.
It’s a numbers game
I applied to 398 jobs and received 3 offers. I could have easily applied to 2–3x that many if I changed what type of field I wanted to work in or if relocation was an option I was interested in.
I did of course end up getting a job. It is a job that I am excited about and am confident I will enjoy. Persistence does pay off but luck is unfortunately still a significant factor.