Jeeps, Ferraris, and Other Engineers
“It used to be said there were two kinds of chairs to go with two kinds of Ministers: one sort that folds up instantly, the other sort goes round and round in circles.”
— Bernard Woolley, Yes Minister [when the minister asks for a new chair]
I’ve been inflicting this particular analogy in private conversations for a few years now; Murat encouraged me to write it up.
I posit two extreme points on the spectrum of engineering archetypes:
- Jeeps make non-zero progress under any circumstance. You can throw them on the rockiest terrain – full of interpersonal conflicts, business risks, vague / shifting product requirements, complex codebases, flaky dependencies – and they will somehow move the world to a better state.
- Ferraris break down immediately – with zero, maybe even negative progress – on rocky terrain. They can’t tolerate even slight imperfections on the road. But if you give them a paved circuit – air cover, space for clean-slate design, carefully staged production goals – they are blazingly fast.
Note that both Jeeps and Ferraris are extreme archetypes: unnecessary at best (and liabilities at worst) for the vast majority of software engineering projects, where all you need is reasonable progress under reasonable circumstances without drama. Most environments are the equivalent of suburbia and the typical engineering org is a diverse mix of Corollas, Civics, BMWs, Subarus, Beetles, Minivans, DeLoreans, Ford Pintos…
However, a smaller set of engineering organizations has to operate in exceptionally uncertain environments (because of unprecedented scale, new hardware, new product shapes, or intrinsically high-risk/high-reward setups). This is where you need your Jeeps and Ferraris.
It’s obvious why a Jeep would be a good fit. You can throw your Jeep at the problem and forget about it. The best Jeeps have an unbelievable ability to absorb and master accidental complexity; and somehow punch through it to good outcomes. Difficult codebase? No problem, we’ll just fork it and keep going. Dependency not showing up on time? No problem, we’ll just hack something up to make it work anyway.
However, once in a while there’s an opportunity to zoom past all the complexity if you somehow create a paved path and rev up a Ferrari. Usually these opportunities relate to some hypothesis around systems architecture or abstraction: if we built the system in a particular way, it’d make hard problems trivial (e.g., GFS, to use a well-known example from Google). Often a step function in simplicity or performance is made possible via design ideas that create massive leverage (e.g., global clocks in Google’s Spanner). Sometimes there’s deep theoretical knowledge required for a breakthrough system (e.g., Google’s Chubby).
One way to view Jeeps vs. Ferraris is that they represent the dichotomy between robustness and speed. Jeeps exemplify robustness (but do not go very fast); Ferraris exemplify speed (but are fragile). Another lens is that Jeeps can handle 10x breadth while Ferraris can handle 10x depth.
Ferraris need Bulldozers. Someone – typically a manager, maybe a senior engineer – has to level the path in front of the Ferrari and create the racetrack. This can be a difficult adjustment if you are used to Jeeps: even a tiny pothole that would barely register for a Jeep can be fatal for a Ferrari. It’s easy to mistakenly assume that there’s a linear trade-off: that a tiny pothole (unaligned line manager / difficult team member / messy dependency / disorganized codebase) will simply make the Ferrari go slightly slower, much as it might for a Jeep; but in reality it’s the difference between a wipeout and a podium finish.
Ferraris have to be extremely fast. A terrible outcome is if you build an extremely expensive racetrack and then watch your Ferrari limp across at 40 MPH. Part of the contract is that if you build the track, the Ferrari will hit top speed on it.
There’s a nature-vs-nurture argument for Jeeps and Ferraris. I’d like to think that most people can fit any archetype with enough focus and effort: often it can be a function of which stage of life you are in (e.g., Jeeps usually don’t have good work-life balance) and what value system you choose (e.g., Ferraris often prize novelty and innovation above impact). Every engineer has a bit of a Jeep and a bit of a Ferrari in them, waiting to emerge.
It is unwise to negotiate with Jeeps and Ferraris. An anti-pattern if you find yourself with a Jeep or Ferrari in your team is to negotiate the terms of engagement / mode of operation / road conditions. If you are negotiating road conditions with a Jeep, something is wrong: they may not be a Jeep after all. If you are negotiating road conditions with a Ferrari, that’s expensive time you are wasting in the pitstop.
Zero tolerance is a feature for a Ferrari. It ensures that the Ferrari spends all its time either fully stopped or going very fast. A little bit of tolerance can be a dangerous thing for a race car: for example, you might be an AWD BMW that can actually tolerate a bit of broken road; but then you end up an ersatz Jeep, never realizing your potential on the racetrack and eventually losing your fast-driving instincts. (A corollary is that there’s vastly more demand for Jeeps than Ferraris: most of the world is broken terrain).
Fearlessness (either calculated or naive) is a requirement for a Ferrari. You can only go extremely fast if you don’t know (or wilfully ignore) how much damage a pothole can inflict. Often Jeeps will dissuade a Ferrari in good faith by pointing out all the things they have experienced that can go wrong (in production, in the real world, etc.). A corollary is that Ferraris are often (but not always) ex-researchers from universities and labs: used to zooming about at top speed in a perfect vacuum.
Ferraris don’t like road-maps. Weird things happen when you let a Ferrari go at top speed. Wormholes open, trade-offs change, the laws of system design buckle and warp. Accordingly, it’s difficult to know where a Ferrari will end up or when it’ll get there. (Heisenberg’s uncertainty principle as applied to Ferraris: you can either go very fast or know exactly where you are going!)
If it sounds like a Ferrari, it may not be one. Because Ferraris are somewhat rare and limited-run, it can be difficult to have a baseline for what to expect. Kicking the tires and peering under the hood doesn’t help. Ultimately the best way is to let the Ferrari go at top speed for a short amount of time, clock how fast it’s going, and cut your losses if you are not getting your money’s worth.
A final note of warning: Jeeps and Ferraris are cool; but they can be inconvenient, awkward, and inefficient in many if not most practical settings. (My own spirit car is the stick shift Honda Civic I drove in grad school that would unexpectedly pop out of second gear for no good reason).
But it’s always great fun to encounter a Jeep or Ferrari in the wild, and I hope this document helps you interact with them!