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:
- who you accept interviews with
- how you conduct your reverse interviews, and
- what data points you're looking for
Some examples of factors
people
: Do you like your co-workers? Are they kind? Do they make you better?culture
: Is the culture inspiring? Do its values align with yours?mission
: Is the mission doing good? Is it interesting? Will it change the world?technology
: Is the technology robust, scalable, "boring", efficient, simple?compensation
: Does the compensation allow you the lifestyle you want? Can you buy a house?location
: Do you like the office location? Do you have to relocate?scope
: Does the role have the breadth you want? The impact you want?learning
: Will you be learning in the role? Understanding new domains or systems?growth
: How much will this role grow your career? Is there upward mobility?remote
: Does the role allow for remote working? 0→zero tolerance, 0.5→hybrid, 1.0→full remote. This measure is interesting because full remote is not necessarily better than hybrid for me. I prefer a hybrid arrangement, with flexibility.
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
- JIRA→bad
- weekly status updates→bad
- burndown charts→bad
- kanban→good
- we don't→good
How do you deploy your software? #tech
- not deployment pipelines→bad (modulo company size and what they deploy)
How do you build your software? #tech
- standard build system→good
- random→bad
Does your software also build and test locally on dev machines? #tech
- no→bad
Can I run native linux on my laptop? #culture
- no→makes me sad but I understand IT constraints
How many source repos do you have? #tech
- monorepo→best
- less→better
- microrepo koolaid→not great
Do you have sprints? #culture
- yes→kinda bad
- qualified yes→better
- no→good
- why would we do that→best
- kanban→best
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
- sometimes→good
- never→mild concern
- cannot→dealbreaker
Do teams share common infra/practices for build systems, deployment, and monitoring? #tech
- no→bad
Do teams share common infra for tickets, design documents, chat/email, etc? #culture
- no→bad
What's are the most important qualities in a leader? #people #culture
Good
- works in service of autonomy mastery, and purpose
- sets vision
- humanist, empathetic
- thinks big
- servant leadership
- builds culture (over managing work)
- removes wasteful process
- deeply understands that ICs do the real work
- says no a lot
- asks questions, especially "dumb" questions
- opinionated but approachable
- individuals matter
🚩
- manages work instead of creating culture
- sees ICs as fungible assets
- anything that's basically a dogwhistle for "good at politics"
- sees reports as something to extract value from
- over-indexes on OKRs
- "pay for performance"
- process > people
- takes agency away from reports
- "alignment"
- indexes on "performance management" (that doesn't work)
The best managers I've had shared some things in common:
- Asked lots of questions, even "dumb questions".
- Unbounded willingness to look stupid.
- Understands the importance of data and metrics, but knows when a decision should not be data-driven.
- Focused on the bigger picture, almost always.
- Work backwards from customer
- How does this tie into our strategy
- Found out what intrinsically motivated me and funneled those opportunities towards me
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
- What's the most distilled, essentialist mission statement that captures the ethos of what you want to build?
- What does your cap table look like?
- What's your capitalization and runway?
- Are you raising? How much? Why?
- Do you have a concrete plan to become cash-flow positive or profitable?
- Do you offer options or RSUs? (Greatly prefer RSUs here.)
- Is there a timeline or expectation I can hold about future liquidity?
- Is your cap table structured such that investors and founders are made whole before employees get liquidity, in the event of a liquidity event?
- (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:
- Having "alignment meetings" that happen too regularly
- Weekly status reports
- Self-preservation over honesty and communication
- Pay for performance, and more generally performance management
- Daily standups (can be useful, but often cargo culted)
- Making everything transactional and incentive based
Further reading
- I recently read the book Alfie Kohn's Punished by Rewards and found it to be a convincing critique of how society tries to motivate people.