All writing

Multilingual Codebases: Engineering Culture in MENA Teams

The hidden cost of cultural misalignment in a Dubai engineering team isn't a morale problem — it's a throughput problem. A ten-person team that can't resolve disagreement laterally or transfer knowledge reliably operates at the throughput of a five-person team, and nobody flags it in the sprint metrics because it looks like normal friction.

In MENA, especially in Dubai, a team of ten engineers routinely spans five nationalities, three first languages, two time zones, and at least two fundamentally different mental models of what "done" means. Ignoring that complexity doesn't make it disappear — it just means the complexity routes itself through your production incidents and your missed sprint commitments.

The Three Communication Failure Modes That Kill MENA Teams

Before you can fix the problem, you have to name it precisely. In my experience, multicultural engineering teams in MENA fail along three specific fault lines:

1. Indirect disagreement masquerading as agreement. In several South and Southeast Asian engineering cultures, openly disagreeing with a senior is uncomfortable. So "yes, I understand" in a standup does not mean "yes, I agree this is the right approach." It often means "I heard you." If your PR review process doesn't create a structured, low-stakes channel for pushback, you will ship decisions that half your team knew were wrong and said nothing.

2. Documentation in a second language nobody actually reads. Confluence pages written in formal English by someone for whom English is a third language, reviewed by nobody, read by nobody. This is the norm. The documentation exists to satisfy a process, not to transfer knowledge. The result: critical system context lives in the heads of two or three engineers who happened to be in the room when the decision was made. When they leave — and in Dubai, attrition is real — you lose institutional memory overnight.

3. Hierarchy-driven escalation that kills lateral problem-solving. Some team cultures default to escalating every ambiguity upward rather than resolving it laterally. This is not laziness — it's a deeply ingrained professional norm. The side effect in a fast-moving engineering org is that the tech lead or engineering manager becomes a bottleneck for decisions that two mid-level engineers could resolve in a five-minute Slack thread, and the team's throughput collapses as you scale.

The Framework: Engineer for Clarity, Not Comfort

The mistake most managers make is optimizing for harmony. I optimize for clarity. They feel similar on the surface but produce opposite outcomes.

Here's the decision framework I run on:

SituationOptimize for ComfortOptimize for Clarity
Design reviewOpen floor discussionWritten pre-read + async comments before the meeting
Disagreement in standupMove on, follow up offlineName it: "I'm hearing two different views. Let's resolve it now."
Ambiguous requirementAssign to senior, wait for clarityForce a written assumption log — everyone writes their assumption, then compare
Oncall handoffVerbal summaryStructured incident brief: what broke, what we did, what's still open
Architecture decisionWhiteboard sessionADR (Architecture Decision Record) with explicit tradeoffs written before the meeting

The common thread: externalize the thinking. When communication is high-context and relies on shared cultural assumptions, move it into written, structured artifacts. ADRs, assumption logs, written pre-reads — these aren't bureaucracy. They're the interface layer between different mental models.

What "Velocity" Actually Means in a Multicultural Team

Here's the contrarian position: your slowest communication channel sets your engineering velocity, not your fastest engineers.

Imagine a team where two senior engineers can prototype something in two days, but it takes two weeks to propagate the decision to the rest of the team, get actual buy-in, and have everyone building in the same direction. That two-week delay isn't an execution problem. It's a communication architecture problem — and it's more common than most engineering leaders want to admit.

The fix is not to push harder on speed. It's to invest in the connective tissue:

  • Pairing across cultural lines deliberately. Not random pairing, but pairing someone who defaults to direct communication with someone who defaults to indirect. The explicit framing: "We're pairing because your perspectives are different, not despite it." This surfaces assumptions before they become bugs.

  • Weekly written team updates, not just standups. A short async update — what shipped, what's blocked, what changed — written by each engineer in their own words. The act of writing forces clarity in a way that verbal standup answers don't. It also creates a log you can actually search.

  • Explicit definition of "done" that doesn't rely on inference. In multicultural teams, "done" has a wider variance than you think. For one engineer, done means the code is merged. For another, it means the feature is in production and the PM has confirmed it's working. Write down what done means for each type of work, and review it at sprint planning, not retrospective.

Managing Attrition in the Dubai Market Specifically

Dubai is not San Francisco. The talent pool is global and highly mobile. Engineers come here on visas, often with a personal timeline in mind — two or three years, then evaluate. This creates a structural attrition pattern that you have to plan for, not react to.

The engineering leadership failure I see most often: treating knowledge transfer as something that happens when someone hands in their notice. At that point you have two weeks and a person who is mentally already somewhere else.

Consider what this looks like in practice. A backend engineer who owns a critical payments integration takes four to six months to fully onboard — ramp time, visa paperwork, context-building on a system that was never properly documented. When they leave after eighteen months, you lose the majority of that accumulated context in two weeks of rushed handover notes. The asymmetry is brutal: slow to build, fast to lose.

The discipline that actually works is continuous knowledge externalization. Every significant decision, every non-obvious implementation choice, every "why did we do it this way" answer should live somewhere written, not in someone's head. This is good engineering practice everywhere, but in Dubai it's survival.

Practically, this means:

  • ADRs are mandatory for any decision that touches system architecture, data models, or vendor choices
  • Runbooks are written by the person who built the thing, not the person who inherits it
  • Oncall rotation includes at least one shadowing week before someone takes primary — and that shadow writes the gaps they found in the runbook

The signal that you're doing this right: when an engineer leaves, the team barely notices in production. The signal that you're not: the two weeks after someone quits are chaos.

What a Real Failure Looks Like — and How to Recover

Here's a failure mode I've seen play out more than once in MENA teams, worth walking through in detail because the recovery path is non-obvious.

A team scales quickly — say, from six to fourteen engineers over eight months. The first six have established an informal communication style: decisions made verbally in the team room, architecture choices held in the tech lead's head, standups that run on shared context everyone already has. This works when everyone was in the same room at the start.

The eight new engineers join across three months. They're technically strong. But they're walking into a system of implicit knowledge they can't access. When they ask "why is this service structured this way?", the answer is "that's just how we built it." When they disagree with an approach in a design review, the existing team's shared context means the disagreement gets dismissed as "not understanding the history."

Six months later, the team has a hard split: original members who can ship confidently and new members who are either over-dependent on the tech lead or building in directions that quietly diverge from the architecture. The failure shows up as integration bugs, inconsistent API contracts, and duplicated logic — not as a culture problem in any retrospective.

The recovery is not a team offsite. It's a documentation sprint: three weeks where the original members pair with newer ones specifically to write ADRs for every major decision made in the first phase. Painful, unglamorous, and the only thing that actually works. The act of writing forces the original team to articulate assumptions they didn't know they were carrying, and gives new members the context they need to disagree productively rather than just comply.

The lesson: implicit knowledge is a scaling liability that only shows up when it's already expensive to fix.

The Leadership Posture That Actually Works Here

Leading a multicultural engineering team in MENA is not about cultural sensitivity training. It's about recognizing that you are, in effect, running a distributed system where the nodes have different latencies, different error-handling behaviors, and different default assumptions about the protocol.

You don't fix a distributed system by hoping the nodes figure it out. You define the protocol explicitly.

For me, that means:

Lead in writing, not just in speech. My decisions, priorities, and reasoning are written down, not just announced in meetings. This removes the advantage that fluent English speakers have in real-time discussion and gives every engineer equal access to the information.

Create multiple channels for disagreement. Anonymous async comments on proposals. One-on-ones where pushback is explicitly invited. Written pre-reads where "I disagree with point 3 because..." is a normal response. The team that can tell me I'm wrong before we ship is more valuable than the team that tells me I'm wrong after.

Name the cultural dynamic, don't work around it. When I see indirect communication creating ambiguity, I name it: "I want to make sure we have real agreement here, not just politeness." This is not confrontational — it's clarifying. Most engineers, regardless of background, respect directness when it's delivered with clear intent.

Hire for range, not just for skill. When I'm building a team in this market, I look for engineers who have worked across at least two cultural contexts. Not because monoculture engineers aren't excellent, but because range is a forcing function for explicit communication. Engineers who've already had to explain themselves to people who don't share their defaults are already better at the thing we're trying to build.

The Hiring Sequencing Problem

The order you hire in shapes the culture more than any policy you write later. If your first five engineers all come from the same cultural background, you've already set a default communication style. The sixth person from a different background then has to adapt to the existing norm rather than the norm adapting to them. By the time you have fifteen people, that default is load-bearing and nearly impossible to change without explicit effort.

This compounds the attrition problem directly: a culturally homogeneous team that loses one of its founding members loses a disproportionate share of the implicit knowledge that held the communication pattern together. The new hire who replaces them inherits a system of norms they weren't part of building.

Hire for cultural range early. It's harder in the short term — coordination costs are higher. The payoff is a team that can actually communicate when stakes are high.

What to Actually Do

  1. Audit your communication architecture this week. Map every recurring decision type — design review, incident response, sprint planning — and ask: does this process create space for indirect communicators to push back? If not, add a written async layer before the synchronous meeting.

  2. Mandate ADRs for the next three architectural decisions. Don't retrofit them. Just start now. The discipline of writing "we chose X over Y because of Z tradeoff" once a week will expose how many decisions your team has been making without shared reasoning.

  3. Run a knowledge audit. Pick the three most critical systems your team owns. For each one, ask: if the person who built this left tomorrow, what would break in your ability to operate it? Every gap is a documentation ticket, not a people problem.

  4. Set an explicit definition of done. Write it down. One sentence per work type. Put it in your sprint template. Review it at planning, not retro.

  5. Create one anonymous feedback channel for technical disagreement. Not for personal grievances — for engineering opinions. A shared doc, an anonymous form, anything. Lower the social cost of saying "I think this architecture decision is wrong."

Cultural diversity in engineering teams is not a liability to manage. It's a capability to build. But only if you treat it as an engineering problem — designed deliberately, not hoped into working.

Working on something like this? I take on a few fractional-CTO and AI engagements at a time.

The AI CTO playbook

Get my AI playbooks — straight to your inbox

Practical notes on shipping production AI, scaling teams, and the calls a CTO actually has to make. A few times a month. No spam, no fluff.