When I was informed that about 85% of my department would be laid off at the end of this year, myself included, I was shocked but also partially relieved.

I was shocked because things came too sudden, with so many employees laid off without any hint. There was a company-wide layoff this past February. While all of us were quite worried, it turned out only two employees were laid off while the rest were told to do business as usual. So for quite a while, we all felt relieved that we survived one big layoff and the next one should not come too soon. On June 22, starting from our Hamburg office, all employees impacted were called to a meeting with their manager or skip-level manager notifying the decision and serverance package, right after we finished our morning standup team meeting. The serverance package was not bad, plus we still have six months left before the ship sinks. From this perspective, I felt quite grateful. On the other hand, I foresee it could be quite hard to find an ideal next role amid such a worldwide pandemic and economic recession, especially when you were bombarded with hiring-freeze or layoff news since March. Every time I checked on layoffs.fyi, my heart simply sank deeper.

Another part of me felt relieved because I was suffering from having to work full-time and taking care of a three-year-old who couldn’t go to daycare because of the pandemic at the same time. I have already adjusted my schedule to waking up at 4 am and start working at 4:30 am until 12 pm, spent all my afternoon with my little one Luna, try to finish any leftover work after putting her to bed at around 8 pm. However, it’s still quite a struggle, especially sometimes she stayed up until 10 pm, or I have a deadline at work. Besides, working at tech means you have to learn new things at your spare time, which I barely have time to do. From that perspective, no longer have to work full-time is a bless. That means I will have time to learn new things and my schedule can be a bit more flexible so that I can sleep more. Still, I keep reminding myself that there is a hard journey ahead.

How does the market look like?

Without much time to think, I started job hunting. By then, I have been a data scientist at my current role for 14 months, building end-to-end machine learning pipelines, finished some major and impactful projects. However, I was still far from a senior data scientist and need time to grow in many areas, including domain knowledge and technical expertise. At the same time, the data science field has evolved quite rapidly, with many automation tools to make data scientists’ job easier, or put it in another words, to replace data scientists. I spent a couple of days analyzing job postings and realized most data scientist jobs fall into the following categories: 1) analysts who build business reports and do experimentation, i.e., A/B test 2) applied scientists who focus on building models and put them into production using tools developed by engineers 3) software engineers who build machine learning models and tools to put them into production 4) machine learning specialists focus in computer vision or natural language processing, usually a Ph.D. in such field is needed.

What I do now is close to 2). I know I don’t want to do 1) and I can’t do 4). So my options is 2) and 3). I am in Seattle and don’t want to relocate, which further narrowed my choices. In Seattle major companies are hiring are:

  • Amazon, where applied scientists are in high demand
  • Facebook, where software engineers, machine learning are in high demand. Most openings are for senior though (IC5).
  • Microsoft, where both applied scientists/data scientists and software engineers are needed.

There are also a couple of hot startups actively hiring:

  • Convoy, a freight delivery startup
  • Wyze, a security camera startup

Other companies such as Expedia Group, T-mobile, Snowflake, SAP, Snap, Twitter, Pinterest are also hiring here and there.

In general, there are more senior positions than junior positions. For companies that are still hiring, the competition is more severe and the bar is higher than normal times. No need for visa sponsorship is a big bonus.

Where to look for jobs?

I mainly use LinkedIn and Indeed to check out new openings. If I find a role I am interested in, I will first go to the company’s website to check for the most updated information about that role and other similar roles, as LinkedIn or Indeed posts may not be the most updated. The next step is to look for direct or indirect connections who can give me a referral. If I cannot find any, then I will apply online directly. For companies like Amazon, Facebook or Microsoft, referral won’t make a big difference. The best way is to find recruiters directly on LinkedIn and ask them to schedule interviews for you directly if they see a fit. Most recruiters will be happy to do so as you are making their life easier. Alternatively, you can search for hiring managers who are looking to hire on LinkedIn and chat with them directly. This is even more efficient than chatting with recruiters.

I did many things simutaneously to get interviews, many of them turned out to be a waste of time. Below are a couple of important lessions I have learned through the process and will follow if I need to look for jobs in the future:

Spend the time to polish your resume

A resume is your first impression to the hiring manager, so we all know it is important. However, we may still don’t know exactly how to write a good resume. Hiring someone else to edit your resume is usually not as effectively as expected, because quite often professional resume editors focus more on the format and syntax than the real content, which is the real gold. You are the best person to write your resume.

  • Keywords. Nowadays most HRs use automated tools to scan for keywords in resumes and rank them accordingly. So make sure you have most if not all the keywords mentioned in the job description. Your understanding of what are the keywords and what are not is also a key differentiator here. For example, if ‘expertise in big data’ is mentioned in the job description, you should probably include Spark in your resume for sure.
  • Select past experience to emphasize. Not all past experience are equal. You have to be selective of what to present to your potential employer. For the experience you believe is critical to your career, try to elaborate on the impact, the methods and tools you use, and the people/project management experience you developed along the way. For irrelevant experience, you can chose not to put in your resume.
  • Impact. Use key business KPIs such as revenue increase in dollar amount, customer conversion or rentention rate, marketing efficiency etc. Tools are important, and state-of-the-art tools are even better. But in the core, we are hired to make profit for the company. So don’t be humble to show off your value!
  • LinkedIn profile. It’s worth the money to get access to LinkedIn Premium, so that you can see how you compare to other job applicants, email an interested recruiter or hiring manager directly, know if a recruiter or hiring manager has visited your profile or not, as well as extended network access. Building up a good LinkedIn profile is also important. Start with a professional picture and follow instructions here
  • Personal Website. A good personal website is an effective marketing tool to your personal brand and career in the long run. It is also a good way to force yourself to learn and make progress all the time. However, maintaining a good personal website requires consistent devotion out of regular working hours. If you don’t have one yet, start one now and add content gradually, so that it maybe useful in your next job hunt.

Network Network Network

I realized I got a majority of opportunities through my network. Some are from undergraduate alumini whose hiring manager happened to be hiring, some are from former colleagues who jumped to other companies and is hiring for his new team. My current manager also helped me circulate my resume around internally to anyone who might be hiring. The response rate for roles I simply apply online is much lower.

Network is something you have to do all the time, not only when you are looking for a job. Effective networking starts with offering value to others. When you are still on the job, try to know your peers outside of your own department, schedule a coffee or chit-chat with them, ask if there is anything you can help. Network online is becoming more and more important nowadays. Go to conferences or webinars, ask good questions and have conversations afterwards. Read articles on LinkedIn or Medium or other blogs, and try to exchange ideas with the authors.

Figure out what you are looking for in your next role

Figuring out what you want can help you filter out un-fitted roles in the early stage, and thus saves you tons of time in the job hunting process. Do you want to work for a big corp or a small startup? How do you rank career growth, work-life balance and compenstation presently? What teams are you looking for, small and agile ones or big and mature ones? What skills do you want to polish in your next role? Are you open to fully remote roles or not?

Don’t let recruiters waste your time

Recruiters from third-party agencies can be quite annoying nowadays. With LinkedIn making accessing the talents pool easier than ever, many recruiters understand little about whether it’s a good fit before sending out messages to potential candidates. For a while, I had been very patient in replying their messages and setting up phone calls with them. Up to a certain point, I realized that was not as efficient as I thought and I needed to use my time better. Below are my updated steps to interact with third-party recruiters:

  • Ask for JD, company name, and role type (contractor or full-time) upfront. That will filter out most professional recruiters. Some don’t even have a JD before asking you to send them your resume, some will tell you company name is confidential at this stage, some will tell you it’s a contractor position while you are only looking for full-time role.
  • Look at the JD carefully and make your own judgement. If you see Python and Java are required for the job, while you only know Python, you will likely to get a Yes answer from the recruiter if you ask if it’s a good fit. However, you are quite likely to filtered by the hiring manager in the later stage because you won’t be able to do your job if you are not a Java expert. Recruiters largely have conflict of interest with you in answering such questions, with them trying to get as many resumes as possible while you try to get interviews most efficiently.
  • Build good relationship with good recruiters. If you are lucky enough to interact with some good/professional recruiters, try to build a good relationship with them so that you may have doors open to you in the future! Be professional, say thank you and show your appreciation regardless of whether your resume get in or not in the end.

Prepare for the interview really hard

Tech interviews are hard and even harder amid the pandemic because of an overflow of job seekers in the market. So do spend a lot of time to study and study really hard.

  • Leetcode For quite a while, I don’t know why we need to do Leetcode questions in technical interviews since it’s something we don’t use in daily jobs. Now after spending a couple of months practicing leetcode and also worked in the industry for a couple of years, I have an answer for it. First, many Leetcode problems mimics scenarios we encounter in our daily job, for example, string processing, friendship graph, breadth-first search or depth-first search. Second, practicing Leetcode can make your code more concise and efficient. It modify your coding mindset so that you become aware of parameter/function names, time and space complexity, as well as how to make your code run faster. Plan to practice 300 problems with a mixture of easy (~20%), medium (~60%) and hard (~20%) at least three times so that you get a grasp of the core algorithms and data structures. By the time you finish, coding while considering time and space complexity will become your natural habit. I have practiced part-timely for about six months and full-timely for about three months before I got confident cracking technical screenings. I have to admit it’s quite a painful journey and my coding skills is at the next level after I finish.

  • System Design There are two types of system designs: machine learning system design focus in end-to-end implementation of machine learning solutions, and software engineering system design focus on designing distributed backend systems. Both requires real-world experience and extensive reading. The most important lesson I have learned in preparing this part is try to learn it from your job. Have a system mindset and try to understand how different parts are glued together in every single project you participated. Follow and read technical blogs from big companies such as Uber, Facebook, Pinterest, Instagram, Square, ask yourself questions why each piece should be used and what are the replacements. Accumulate knowledge, review and digest regularly. It takes time and experience to pass those interviews.

I applied ~ 20 jobs, got 14 technical screens, 5 onsites, and 3 offers. The whole process took approximatly four months, from early July to the end of October. It’s a stressful four months, and one important lesson I have learned is that never stretch the job hunting process too long. I do have continued interview invitations after accepting an offer, but I politely declined them. On one hand, I am exhausted and don’t want to interview anymore (although I may get a better offer at some point); on the other hand, I have already had a pretty good understanding of areas I need to catch up with before advancing to the next level of my career, so it becomes a waste of time to do interviews before I am ready for a next jump. (Yes, for the past three years, I tried my best to interview at different companies, so that I get to know the industry and the job market. Now I am at a better position than before, so such exhaustive search is no longer needed. Instead, I should be more aimful in my next job search.)

What to do after accepting an offer?

For the coming year or so, I will focus on clearing up technical debt for a senior machine learning practitioner during after-hours, mainly by doing side projects and writting technical blogs. Below are some key areas to focus on:

  • Spark: Spark is a must for big data analysis. For data scientist, Spark Python API is required.
  • Distributed systems: This is not necessarily required for data scientists, however, modellers and engineers are becoming merged nowadays, so getting well understanding on distributed systems is becoming more and more important.
  • Machine learning systems: especially large scale systems such as Facebook, Uber, Twitter. How to make the algorithms run fast and efficient enough? How to improve model over time? How to retrain the model and compare with previous versions? How to monitor model performance?
  • Deep learning: deep learning is getting more and more popular in e-Commerce nowadays, thus be familiar with deep learning algorithms and framework such as PyTorch is critical.
  • Read one research paper per day about machine learning to stay up with the state-of-art advancement. This is a major sign of a senior.