Categories
Uncategorized

Tech Job Hunting

In late October of 2021 I completed a five month job search. At the start of this search I had a difficult time just getting the interview. After significant changes in approach, in the last two months the volume of companies I was late-stage interviewing with on a was nearly overwhelming (okay, it was four but it gets to be a lot balancing that many interviews). In this post I would like to outline and share what I discovered in this most recent bout of job hunting. I would like to stress that the audience for this is someone who has not worked in traditional software engineering environments, who is looking for work in startups, that has never worked at a recognizable company (FAANG and the sort) nor went to a top college or university that is a household name. This post will mainly be divided into three main parts, finding leads, what I found worked well on my resume, and then the interview prep process.

Finding Leads

I used HackerNews Who is Hiring threads as a primary source of jobs. This is a re-occurring thread at the beginning of every month on HackerNews and racks up hundreds of job listings in a matter of hours. You should to be armed and ready to apply to these, from anecdotal data relayed to me by recruiters of these posts I estimate that some of these postings can rack up dozens if not hundreds of applications in a matter of days. I’ve found that getting in early may be an important factor in landing an interview. Sometimes new jobs are posted on the thread as late as 10-15 days after it opens so check back on it and use one of the linked tools on the post to sort by posting date and domain.

Adjacent to HN is YC’s Work at a Startup I created a profile on there and had been reached out a few times on the site.

Word of mouth also goes a long way in job hunting. See what your college friends are up to. Just found a cool new tool or service? See if they’re hiring. Moving to a new city? Search “{CITY} best startups”.

More on timing. Your mileage may vary but I found the best time to start a search was at the beginning of a quarter. That’s the end of March, June, September, or December. I got my strongest results in the start of Q4 where I believe a lot of companies were raising their hiring quotas.

What doesn’t work:

  • Craigslist. This used to be a decent place to find different job postings but has become the bottom of the barrel in recent years. I have been able to find intermittent work in the gigs section sometimes if you’re looking for something immediate and shorter-term.
  • AngelList. My experience is that you only get responses if you have an exceptional background (FAANG or a university college). In one case I had even encountered a scam wherein the scammers made a profile for a real-life company and then reached out to me for an interview. After some vanilla interview questions they immediately “hired me” and asked for my bank information.

What I didn’t try:

  • LinkedIn. I don’t have one, I’ve aggressively maintained that I don’t need one. At my prior position two people got better roles via cold LinkedIn-messages, I think they were reached out to because they were both senior engineers not because they simply had software experience in their job history. Your mileage may vary but just adding this here to say don’t worry if you don’t have a LinkedIn or that if it’s not pristine.
  • Blind. I’ve heard good things about this network but didn’t try it. Referrals are always a sure-fire way to get one’s foot in the door.

Resume

A mistake I made early in the process was using the same resume for every listing. Every position has different requirements, the resume is a document to emphasize that you meet those requirements and are a good fit for that role. In this manner the resume should be somewhat a living documents and therefore you should curate a different resume for each job. Whether the change is modifying line-items or a single word, save every version that you send. Put it into git if that feels necessary, I just had a Word document that I would Save-As every time I made a change. When you find another job listing that is kinda similar to the one you just edited, update it to match the new listing and that becomes another version of your resume. What you’ll have in the end is a tree of resumes with the deepest node hopefully being the best version of your resume.

You might be asking how one would be changing the resume so much. If you have a “technologies/tools” section only list the bare minimum technologies that are relevant to the job. I used to list a wide gamut of these almost none of which were even close to relevant to the positions I was applying to. Adobe Premiere, MiniZinc, Swift, to name a few. I’m definitely competent in them but I wasn’t applying to iOS developer or video editor positions and I would be surprised if anyone who read the resume had even heard of MiniZinc. The resume is not meant to show off everything you know but rather what you can offer to the company with respect to the immediate goals of the company. If the job listing calls for experience in React, TypeScript, Redux, and GeoJSON only list those in addition to a few core, adjacent technologies that you also have experience with such as Python/JavaScript, WebPack, TurfJS, and PostGIS (if there is a need to demonstrate back-end experience).

Closing gaps on the resume. I had a two year gap where I went back to graduate school. I did do work during that time but it wasn’t full time, I didn’t think it was relevant, and assumed that recruiters would automatically fill that gap by connecting it with the time range presented in the education section. This was a bad assumption. Closing that gap on paper was an important demonstration that my work history is constant and the nature of that work (independent contracting) demonstrated seniority in the field that I was working in (mostly front-end and full-stack stuff).

Try to keep it to one page, I’ve read that it’s valid to add two pages after 10 years experience but keep in mind the volume you’re competing with, one page is something a hiring manager can read fast. Your resume should be a single column and maximally skimmable, as in a hiring manager should be able to look at your resume and determine if you’re a fit in 15 seconds, this is also why it’s important to only list the bare relevant tools and technologies. In addition it’s good to trim line items in previous positions to something immediately understandable and brief.

Interview

You will see this advice in many places but read “Cracking the Coding Interview.” Every company I’ve come across that’s worthwhile has used these practices. It seems contrived but it’s just the way things are. In the same vein, they can easily be gamed. Memorize your backstory, learn to pitch yourself with it, and the why and what you’re looking for in a new role. Most importantly be prepared to answer the question “tell me about a challenging problem you worked on” and be ready to talk about that for upwards of 60 minutes from a broad overview down to implementation details.

Besides behavior questions such as those above, you are likely to be expected to do practical problems and white-boarding. Practical problems range from leetcode/hackerrank problems (reverse a linked list, read a 2D array diagonally) to simpler practical problems where they want to see your coding style and problem solving methods (implement a plain text to markdown parser for two rules of your choice, write a library book management system in Python with a very basic prompt). It is essential to practice these in advance and be comfortable with data structures you don’t have much experience with. Often solving the problem or making an elegant solution is less important from being able to simultaneously verbalize what you’re thinking and doing while writing your solution. Long gaps of silence where you’re just writing code is not good, again practice this locally even if you’re just speaking to an empty room. If you’re uncertain about something say so or ask questions about it, even go as far as to ask if there is a better way to do it. At the very least it demonstrates willing to learn and grow.

Meta

Track your progress. I maintained a spreadsheet that recorded the company name, their careers page, industry type, pay range if provided, comments, and status (when I applied, last time I heard from them, interview stage). At the end of your process you can run some analytics on this and get some insights for next time. For example in this last job search I applied to 19 companies, 7 I never heard back from (ghosted), 7 rejected me at various stages, and I passed on 5 (again at various stages). This sounds bad but considering a prior job search of a longer time period with 8 ghosts, 18 rejections, and no chances to pass, I’m pleased with the outcome.

Know who you’re talking with. Before each interview lookup who they are what they’ve worked on. It sounds a little creepy on its own but they already know a lot about you. Another way to say this might be “know your audience” but of course never reveal that you know them either. With this you can anticipate questions or curate your responses to common questions more appropriately. The same can be said for the company as a whole, check GlassDoor reviews and interviews to get as much information as you can about what kind of beast you’re interested in working with and maybe for.

This might go without saying, being honest with yourself and where your strengths are goes a long way. Punching above your weight in a interview process is very difficult and ultimately demoralizing. You may be able to get past the phone screen but the rest of the process sniffs it out immediately wasting everyone’s time in the process. The difficulty in this is staying focused and confident on what you’re qualified for.

Conclusion

Job hunting in tech is hard. It’s exhausting and can feel like a second job in and of itself. It feels crazy-making that no other industry does this level of vetting. My brother is a good plumber and he got his most recent job by just walking into an office and simply asking for a position—and plumbing pays way more than you think!

It’s so much worse when you’ve put in a few weeks, or months, of time into the interview process with a company just to get rejected. The hardest part about this is to not have a chip on your shoulder about it. Rarely companies will give feedback, supposedly this is to legally protect themselves but it never hurts to ask for feedback the worst that happens is you get ghosted. If you’re really convicted about the company save them in the spreadsheet and try again in 6 months. Job hunting, like many things, is best taken with a growth mindset it means doing post-mortems on what did and did not work. It means doing some manual form of stochastic gradient descent until, after some period of time, you’ll find yourself at an optima that is like irresistible to companies and you’ll be overwhelmed with interview opportunities.


If you’re interested in any of the mentioned resources or in some of the leads I compiled feel free to email me through the form on this page.

Leave a Reply

Your email address will not be published.