jm.dev
j@jm.dev · @jmq_en
linkedin.com/in/jqq · github.com/jmqd
Tokyo, Japan 🇯🇵
What makes a job good?

Hiring is hard. Deciding whom to let hire you is at least as hard.

I think the complexity class of deciding whom to let hire you is a superset of the complexity class of deciding whom to hire. It has the same hardness properties of hiring: deciding what kind of people you want to work with, and then selecting a set of people that are those kind of people. Then it adds more complexity: deciding what kind of leadership chain you want to work with, what kind of domain you're interested in working in, what level of compensation you're willing to accept, what kind of workplace culture you find appealing, and so on and so forth.

Just knowing what you want is hard enough

But we also have the (difficult!) task of evaluating if a given opportunity matches our criteria. Both of these tasks are superbly difficult.

A simple framework for evaluating jobs

Maybe a lightweight framework for evaluating jobs using simple multiple linear regression will help us develop a pattern of thinking for better evaluating job offers.

Factors

Factors are attributes or qualities that a job can have. Try to rank your factors and assign a weight to each of them.

Lots of people go job seeking without even knowing what their factors are, let alone their weights. Most people end up defaulting to a revealed preference of factors={compensation=1.0}. I think this is a false revealed preference, not a true one, born from a lack of deliberateness. At the least, it is certainly true for me that in the past, I over-indexed on compensation as a factor due to under-deliberating my job-seeking process.

It is important that this step comes early in the process, because your factors and their weights are an input to:

Some examples of factors

Interview and evaluate

I wish I had a robust framework on how to evaluate your factors. This is one of the hardest parts. From your factors and their weights, try to derive a strategy for reverse interviewing during your loop. Try to find good questions and ask them to get data points. Try to find other means of gathering data on your factors, out-of-band of the interviews. Contact employees that recently left the company, read forums, ask friends. Read their launch posts and blogs.

After calculating your weighted scores (sum of each factor's score times its weight), each role should have a score, modulo some epsilon error bounds.

Don't get too caught up in false rigor. This process isn't meant to be the decision process. It's just a framework to help you gather better data and ask yourself the right questions. If you end up disagreeing with the scores, you can try to feed this back into your factors and weights.

What are my weights?

My weights are always a work in progress, and I learn new things about my preferences every year. Right now, this is what seems right to me.

    people          = 1.00
    culture         = 1.00
    location        = 1.00
    mission         = 1.00
    technology      = 1.00
    learning        = 1.00
    growth          = 1.00
    scope           = 0.80
    remote          = 0.10
    compensation    = 0.10

Deriving from these numbers I just scribbled down, for me to consider a job with a 50% score on people, all other things being equal, it should pay 5x the job with a 100% people score to be in the running. Put differently, I'm willing to take at least a 1/5th pay cut to work with excellent people as opposed to people that I can merely tolerate. This feels ~order-of-magnitude correct.

Feedback loop

When you're in a job that you like, try to figure out if there were unidentified factors that make it great. Add them to your list. When you're quitting a job that didn't work out for you, try to identify the testable factors that capture why you didn't like the job. Weight them, and add them to your list. If something is worth quitting a job over, it's probably worth a highly-weighted spot in your factors ranking.

Questions to ask prospective teams

How are engineers asked to track work? #culture

How do you deploy your software? #tech

How do you build your software? #tech

Does your software also build and test locally on dev machines? #tech

Can I run native linux on my laptop? #culture

How many source repos do you have? #tech

Do you have sprints? #culture

What is the process to expense something? How long does it take? Do you do it often? #culture

My experience here is that overly frugal (frupid) organizations are often more wasteful. Especially when the mechanism to "keep frugal" is to add tons of friction for expensing things. This costs me patience and my time (which is also your time).

Anecdotally, companies that have a low friction means for expensing things and do it more regularly are less wasteful (Stripe, Google). If you can't trust your employees within basic expensing bounds, you have a hiring problem, not an expensing system problem.

Do engineers change code on repos owned by other teams? #culture

Do teams share common infra/practices for build systems, deployment, and monitoring? #tech

Do teams share common infra for tickets, design documents, chat/email, etc? #culture

What's are the most important qualities in a leader? #people #culture

Good

🚩

The best managers I've had shared some things in common:

What did you find surprising when you first joined, that wasn't obvious externally? #culture #tech #people

Here, I'm interested in surprising-good and surprising-bad things. These surprising little facts sometimes become the most important thing.

Companies with a good culture will generally have employees that openly mention bad things. The interviewer having nothing negative to say isn't evidence of bad signal, it's just absence of good signal.

What kind of window dressing does your company do? #culture #people

This is an explicit "tell me a bad thing please", but honed in on the concept of window dressing. I want an answer for both "to customers" and "to prospective employees / the industry at large".

What are the best three reasons to join this company?

Pretty self-explanatory. It can be really useful to hear from an engineer what they think are the unique reasons to join their company.

What are the best three reasons to decline to join this company?

This question catches folks off-guard, but it's worded in a clever way to trick an engineer into playing a game that engineers like to play. Assuming that you were to decline to join, which set of reasons make that decision most rational and true?

How many external nouns are directly referenced in your systems? #tech

I have a hypothesis that systems with more edges to external nodes are worse. One way to interpret this question is "are you glue or are you paper?", but there are other interpretations.

Questions for startups

  1. What's the most distilled, essentialist mission statement that captures the ethos of what you want to build?
  2. What does your cap table look like?
  3. What's your capitalization and runway?
  4. Are you raising? How much? Why?
  5. Do you have a concrete plan to become cash-flow positive or profitable?
  6. Do you offer options or RSUs? (Greatly prefer RSUs here.)
  7. Is there a timeline or expectation I can hold about future liquidity?
  8. Is your cap table structured such that investors and founders are made whole before employees get liquidity, in the event of a liquidity event?
  9. (In the event of hypergrowth) Can I ask for a guarantee that I won't get layered for at least $X years? (I like to continue working for someone I've vetted.)

Best reasons to not hire me

I believe in the importance of toolmaking.

Tools have unseen, unknowable payoffs. This is hardest when the deadlines are tight and opportunity costs seem high, but it's not a distraction. It's an investment in future velocity. (Sharpening the Axe: The Primacy of Toolmaking)

I have a low tolerance for bull.

I don't like scurrying about the organization and playing back-room politics, playing visibility games, or being asked or expected to spew bull. I just want to build the right stuff the right way and have fun doing so.

I said "low tolerance" on purpose. My tolerance is not zero; I know the world is not perfect. I've been in those rooms and navigated those sensitive situations where finesse and restraint and choosing one's words were important. I just don't want it to be my every day job. I know how to play that game, but I've chosen to play a different game called "building stuff that matters".

I'm skeptical of many common management practices.

I think a lot of common engineering management practices are bull.

Some things I'm skeptical of:

Further reading