Writing

Engineering Across Cultures: Lessons from Global Teams

Engineering culture is not universal. The code compiles the same way in every country; meetings, disagreement, escalation, ownership, and trust do not. I learned this in stages — at Uber working on internationalization, which taught me how deep the product differences run, and then at Coupang, working with colleagues split between Korea and the US, which taught me how much deeper the people differences run. Global teams fail when they treat these differences as cosmetic.

The quiet failure mode

The failures aren't dramatic. Nobody yells. What happens instead is quieter and more expensive: a "yes" in a meeting that meant "I heard you," not "I agree." Silence that one side reads as consent and the other as dissent. A deadline that one team treats as a hard commitment and another as an opening estimate. Each misread is small. Compounded across time zones and a couple of management layers, they become delayed launches, hidden blockers, and systems nobody feels empowered to own.

Operating system, not personalities

The mental model I'd offer is that these are operating-system problems, not personality problems. When a cross-cultural team struggles, the temptation is to diagnose individuals — that engineer is too passive, that lead is too pushy. Usually the real issue is that the team is running two different implicit protocols and nobody has noticed. The organization then misdiagnoses a coordination failure as a performance problem, which is how good people end up on improvement plans for following the rules of a culture nobody told them they'd left.

The fix is unglamorous: make the protocol explicit. How do we disagree here? Who is allowed to challenge a plan, and in what forum? What does silence mean? When is a date a commitment versus a target? These questions feel awkward to ask out loud, which is exactly why they go unasked until something breaks.

In my experience, a few mechanisms do most of the work. Written decision records with a named owner and the dissent captured, so deference can't quietly masquerade as alignment. Async pre-reads before meetings, so people working in their second or third language aren't forced to process and push back in real time. And escalation defined as a normal control path rather than a personal attack — in some cultures escalating feels like betrayal, and unless you explicitly normalize it, problems travel upward only after they've become emergencies.

None of this is a soft topic that sits outside the real work. The communication substrate is part of the system design, and it fails like any other unspecified interface: silently, and at the worst possible time.