πŸ”­ Job Hunting

Jermaine Cheng /

There is one thing I wished I learnt a lot earlier in my career. How do you know if your current opportunity is the best place for you; given there are so many jobs out there?

A job will just be a job if you let it while it erodes your skills. Apoorva Govind did a great job summarizing when you should be looking for another role in this blog post.

The best way to find the optimal (what you want to optimize for in a job) is by experience and trial and error. My personal take is similar to the multi-armed bandit problem; explore all options and gather data for a better formed opinion. This follows two steps:

  1. πŸ”­ Finding opportunities
  2. 🧠 Evaluating offers

πŸ”­ Finding opportunities#

In this step, we're planning to randomly explore different areas in the field. But before looking for opportunities, start narrowing the quantitative and qualitative team / company criteria you want to work in. The process of interviewing is expensive and this list of wants will help you bail a process as soon as possible. It also helps with the search for initial opportunities. Personally, my criteria includes:

  1. Type of role β€” Are you thinking of continuing / exploring work in iOS, android, frontend, backend, full-stack, devops or infrastructure? What languages and frameworks (technical stack) are you interested in?
  2. Quality of company culture β€” Does the company have a low turn over rate (validate via Linkedin) and good employee reviews on Glassdoor / Blind (filtered by team and position)? It is useful to do an additional generalized search (via google) around the company to find negative press.
  3. Quality of interview process β€” be sure to check the interview reviews and filter all reviews by job title.
  4. Quality of leadership β€” Look up your potential manager, VP of engineering / product and CEO / CTO on Linkedin and Google to validate their working history. If they have any talks at conferences, it’s a good way of evaluating their thought process.
  5. Headcount size β€”The smaller the company the more impact and work you have (same amount of work divided by a smaller number of people).
  6. Funding stage β€” The earlier the funding stage a company is at, the more risk and ambiguity will be involved (sometimes comes with rewards). It also helps to compare the VCs behind each funding round and board members via VCGuide. Joining an early stage company provides a closer look at how initial sales pipelines are built and how companies transition from one funding round to another (without risking your reputation if you were a founder). It’s important to note the sometimes the funding stage does not exactly define where the growth stage of a company. This is useful list to identify where a company is in terms of growth.

With a better idea of what you are looking for, there are four main ways of finding opportunities to build a curated list of job postings:

  1. Reach out to former colleagues / friends to ask if they are hiring (mostly to ensure people are not assholes)
  2. Check out software engineering job boards like AngelList, Hackernews, LinkedIn and Glassdoor.
  3. Find companies that recently raised a round via Crunchbase and peek at their careers / jobs page (they will usually be hiring and scaling up the number of employees)
  4. Start attend conferences. This benefits you two folds here by providing the opportunity to network and introduce you to great companies (via fantastic speakers) to keep note of.

While building the list, start pacing yourself and apply for about 10 job postings each weekend that qualify your initial job goals. If the company fit seems unclear from any available publicity, be sure to ask clarify on the initial call with the recruiter before agreeing to move forward (to save time on interviews you know will not work out). This filters out more red herrings before committing to spending 5-8 hours proving your technical ability (via the technical phone screen, onsite and/or take-home assignment) with any company. These are the typical questions I personally ask:

  1. What is the company and team size? β€” This tells me the where the company piorities are based on resource / labor allocation.
  2. What is the engineering technical stack? β€” Mostly to validate any caveats in the technical stack.
  3. How many engineering teams are there and what are their responsibilities? β€” This tells me how the company structures / thinks about engineering.
  4. What is the distributions of junior, mid and senior level engineers? β€” Extremes here are not great; too many senior engineers on a team will feel like too many captains on a ship, too many junior and mid level engineers on a team is like a ship with no direction.
  5. When will I be able to speak to the hiring manager? β€” Chances are you won't work much with the recruiter, it is important to get to talk to the hiring manager before the technical screen (this is where the most deal breakers are revealed).
  6. What is the estimated compensation and level for the position? β€” This question is legally required to be answered in California (please verify if it exists in your state / country) and avoid all questions about your pay history. It is rarely wise to take a pay cut (in terms of total compensation).
  7. What is the interview process? How is the onsite structured and what should be expected? β€” It is always important to set up our interviewing expection so the relevant prep work can be done in advance.
  8. What is the culture? What are some concrete example that shows off <company value>? β€” Make sure the company pitch isn't all talk, the recruiter should be able to tie the company values to tangible actions by the csuite staff.

🧠 Evaluating offers#

This comes my favorite part in the interviewing process; understanding the opportunity by collecting metrics (associated with your career goals). Usually this starts after the recruiter screen; it’s important to plan your evaluation criteria and identify questions that directly address issues you care about. This is an important part in interview preparation because it increases your leverage.

For me, there are 9 important factors (each with different weights corresponding for what I’m optimizing for at that point in time):

  1. Company Leadership β€” This involves understanding how management thinks about building a company, their motivation and what they are optimizing for. The ability to read body language and tone is important to understand true intentions (when do they talk over you, cut you off, appear disinterested).

    • How do they build teams?
    • Are they accomplished or capable of building a department / company?
    • How do they think about company growth?
    • What is the plan to move to the next series of funding?
    • What is the goal of the company (to be acquired, IPO or some higher purpose)?
  2. Direct Manager β€” This involves what motivates your manager into the current role and how they think about management. This is usually my most weighted factor since they directly control your mentorship and sponsorship at the company.

    • Why is your manager a manager?
    • What do they think about mentorship and sponsorship? A lack of understanding of these two terminology is worrying, it shows that your manager hasn’t deeply though about their role in employee growth.
    • How well does your manager deals with employee conflict (do they snub you out or try and listen)?
    • What is your management style?
  3. Mentorship β€” This appears in two categories, technical and soft skills / leadership. Technical mentoring usually involves another engineer teaching, providing guidance whereas soft skills mentoring is lead by the manager which involves direct feedback to improve how an engineer works. There are platforms like Plato and soft skills engineering podcast which are making soft skills / leadership mentorship more accessible.

    • How do they think about mentorship?
  4. Sponsorship β€” Equivalent to the possibility of career growth / promotions. Negotiations are a good way of gauging whether your manager is on your side by pushing your requests through to upper management (or deny you directly without trying). In addition, bait and switch offers show that your manager will not only not sponsor you but actively exploit your work / accomplishments to benefit company / themselves.

    • How do they see employee success and how have they helped that process?
    • How do they execute promotions?
    • What technical areas will you be able to lead / prove yourself?
    • What is required to get to the next level?
    • What is the impact and visbility of the role?
    • How do you ensure all engineers are recognized?
    • How are engineers promoted in the company?
  5. Travel β€” Time and money will be spent on traveling. This is a straight forward metric that can be compared quantitatively.

    • How many days are you required to be in the office?
  1. Personal growth (areas to learn and explore) β€” What new experiences you can learn from if you were to join. This is a good point to ensure the opportunity cooresponds to the areas you are also interested in growing and exploring.

  2. Compensation β€” This helps you eat, send kids to school, live life. It is the basis of exchanging your time for money. It also shows how much a company and manager values you. If is important not to under prioritize this.

    • What is the grant amount of shares / options, fair market value per share, share percentage of company and company valuation.
    • What is the coverage of medical benefits?
    • What is the annual salary?
  3. Company / Engineering Health β€” This helps you predict if the company is growing sustainabily and if the job will still exist in a year. It is also important to validate the sustainability of the job by questioning the engineering quality and culture around crunch time.

    • Is the company profitable?
    • What is the startup series? (Series D onwards will likely IPO)
    • What is the valuation, how many contracts have they signed?
    • What is the product road map?
    • What is the competitive landscape and competitive advantage?
    • For every year operating, what is the main objective and learnings?
    • What is the test coverage for the code bases?
    • What are the main tech debt problems?
    • How do you balance shipping features and tech debt?
    • How are product/engineering decisions made?
    • What is involved in a product/technical design processes?
  4. Culture β€” This is a catch all for red flags that are not captured in the above list. This is very relevant to measuring the company's quality of communication during the interview process. Karen Eber did a great job with curating this list for inspiration.

With a curated set of questions, be consistent in what you ask to every person in the interview process (ensure the questions are consistent accross companies). If possible, start a template you could use to summarize your experience and findings at each company and interviewer.

This will provide a source of data to look back to when drawing up a decision matrix based on the identified criteria (only works when there are multiple options). Each company should be scored from a range of 0-10 for each critera.

If you are currently employed, use your job as a control group (you can set all it's scores to 5 and evaluate other options from there). After filling up scores:

  1. Multiply the score for each criteria with it's weight (if you care twice as much about sponsorship, the final value for sponsorship should be sponsorship score * 2).
  2. Sum up all scores after the weights have been applied.

From there you should have a conclusion to the question (should you stay or hop to another company) that is based on data! πŸŽ‰ As a software engineer, our skills are valuable and this industry has an abundance of opportunities. It’s important to remember we have the agency to change our journey.

Onward to your goals πŸ’š

Subscribe to the newsletter

Get early access to new articles.

Discuss on Twitter β€’ Edit on GitHub

Made with ❀️ by Jermaine; Inspired by Lee Robinson