Skip to main content


Cracking Eggs


The best way to crack eggs is the highlander method: beat two eggs against each other. This overly easy method preserves rarely makes a mess, and is tolerant to a lot of different levels of force.

But don't just look on the sunny side: the highlander method has a major flaw. What do you do with the last egg? If you haven't hatched a plan, you may scramble to one of the inferior methods: counter or bowl.

The counter method is the safe option: it consistently produces a small mess, even if your strike is eggsceptional. But if you're ready to leave your shell, the bowl is for gamblers and dreamers: it can produce a mess-free egg if you aim things perfectly, but you'll end up with shell everywhere unless you crack it eggsactly right.



One of the main questions I ask in interviews is basically "we have a data pipeline with goal X and constraints A, B, and C. How would you design it?" Depending on how they do, we'll discuss various tradeoffs, other possible goals/constraints, and so on.

This is based on a real system I designed and have been maintaining for ~5 years, and is also very similar to other systems I've run at previous jobs.

About half the candidates complain that it's not a realistic question.

in reply to Satvik

Is it possible that they mean some other kind of realism? Like, maybe they think it's unrealistic to design a system like this during the course of an interview, or something?
in reply to Ben Weinstein-Raun

I've asked for more specific feedback, and the complaints often come down to "nothing I've done has been like this" and "most of development is web development." That might be true, but we don't have a website/web app, and we're pretty specific about the work involved in both the job description and the phone interview.

(We have had other feedback that's helpful)

Generally, everyone who's done well on this question and joined has been a strong hire, though we've also hired some people who didn't do well that specific question. So I'm pretty sure it's a good question. I'm just a little amused/dismayed at how many people seem to think "realistic" means "web development."

This entry was edited (1 week ago)


in reply to Satvik

This seems cool; my current favorite workflow involves storing a snapshot with an LLM-generated commit message every time I save a file, and when I'm ready to submit, doing a git reset and manually doing a few rounds of "git add -p" on a new branch.
in reply to Satvik

Ideally: Keep working in the "wip" branch, and then go back and modify the PR branch commits. In practice: haven't been doing enough team coding recently to have much actual experience with that aspect
in reply to Satvik