Managing Remote Engineering Teams Across Time Zones: A Practical Guide
We manage engineering teams across four time zones. Here is what we have learned about making distributed development work.
Terra Labz operates across four time zones — Pacific Time in San Francisco, GMT in London, Gulf Standard Time in Dubai, and IST in Colombo. Managing engineering across these zones is not something I would recommend for the faint of heart. It is genuinely hard. It requires discipline, tooling, and cultural investment that most companies underestimate. But the advantages — access to global talent, cost efficiency, follow-the-sun coverage, and the diversity of perspective that comes from a truly international team — make it worthwhile for those willing to put in the work.
This article shares what we have learned through three years of operating this model. Not theory. Not best practices from a book. Real lessons from real mistakes that cost us real time and money.
The Overlap Principle: The Foundation of Everything
The most important concept in distributed engineering is overlap — the hours when two teams are simultaneously available for real-time communication. You need at least two to three hours of overlapping working time between any two teams that need to collaborate directly. Without overlap, communication becomes fully asynchronous, which is fine for execution but devastating for decision-making. We learned this the hard way.
Our overlap windows: Colombo at UTC+5:30 and Dubai at UTC+4 overlap for the entire Dubai workday — this is our most productive collaboration window. London at UTC+0 and Colombo overlap from 8:30am to 12:30pm London time — four solid hours. San Francisco at UTC-8 and London have only one to two hours of overlap in the late London afternoon and early SF morning. And San Francisco and Colombo have essentially zero natural overlap.
This overlap map drives our entire organizational design. Teams that need tight collaboration — say, frontend and backend engineers working on the same feature — are staffed from the same time zone or adjacent zones with good overlap. Teams that can work more independently — such as a team building a new microservice while another team maintains existing features — can be spread across distant zones.
The practical rule: never put two engineers who need to pair program or debug together across more than a four-hour time zone gap. It does not work. We tried. They end up staying late or starting early, which is unsustainable, or the collaboration degrades into multi-day back-and-forth that kills productivity.
Communication Architecture: Async by Default, Sync by Exception
We have learned that communication in distributed teams needs to be deliberately architected, not left to chance. Organic communication patterns that work in co-located offices — spontaneous conversations, whiteboard sessions, lunch discussions — do not happen naturally across time zones. You must design replacements.
Our communication architecture has four layers. First, all decisions are documented in writing. Not discussed in a call and then summarized in a Slack message that disappears in the scroll. Written in a persistent, searchable location — for us, that is Linear for project decisions and Notion for architecture and strategy decisions. If a decision is not written down, it did not happen.
Second, every project has a single source of truth document updated in real time. This document captures the project goals, current status, open questions, blockers, and decisions made. When an engineer in Colombo finishes work at 6pm and an engineer in London picks up the project at 8:30am, the handoff happens through this document, not through Slack messages that might be missed.
Third, asynchronous updates happen through structured daily written standups. Every engineer posts a daily update covering what they completed, what they plan to work on next, and any blockers. These updates are posted in a dedicated Slack channel at the end of each person's workday. The incoming team reads the updates at the start of their day. This creates a continuous information flow without requiring anyone to attend a meeting.
Fourth, synchronous meetings are reserved for problem-solving, not status updates. We have exactly two recurring synchronous meetings per project per week: a planning meeting at the start of the week and a demo at the end. Everything else — status, progress, questions — flows asynchronously. This discipline gives engineers uninterrupted blocks of time for focused work, which is essential for productivity.
Code Review Across Time Zones: The Continuous Review Cycle
Code review is where distributed teams often slow down catastrophically. A PR submitted at end of day in Colombo might not get reviewed until London opens eight to twelve hours later. If the reviewer requests changes, the Colombo engineer does not see the feedback until their next morning — creating a 24-hour round trip for a single review cycle. At two review cycles per PR, you are looking at two days for a change that should take two hours.
Our solution: every PR is assigned to a reviewer in the next time zone, creating a continuous review cycle that follows the sun. When a Colombo engineer submits a PR at 6pm IST, it is assigned to a reviewer in Dubai or London who picks it up during their workday. When a London engineer submits a PR at 5pm GMT, it is assigned to a Colombo reviewer who picks it up at 9am IST. PRs move continuously rather than sitting in queues.
We track review latency as a key metric. Our target is under four hours from PR submission to first review. Our actual average is 3.2 hours. This compares favorably to many co-located teams where PRs sit for days because reviewers are busy with meetings.
Automation helps. Our CI pipeline runs tests, linting, and type checking automatically on every PR. The reviewer does not need to check whether the code compiles or whether tests pass — they can focus on logic, architecture, and edge cases. We also use Danger.js to automatically comment on PRs with relevant context: which parts of the codebase are modified, what tests cover those areas, and whether the PR size is within our guidelines.
The Culture Challenge: Building Team Across Distance
The hardest part of distributed engineering is not technical — it is cultural. Building team cohesion when people rarely meet in person requires intentional effort. Without investment, remote teams degrade into collections of individuals who happen to work on the same codebase. The collaboration, trust, and shared identity that make great teams great do not develop spontaneously across time zones.
We invest in several practices to build distributed team culture. Weekly social calls — optional, purely social, no work discussion — where team members share what they did over the weekend, show their pets, or discuss non-work interests. These calls build personal connections that make professional collaboration smoother.
Celebration of wins across all offices. When a project launches, every office celebrates — even if their contribution was one component. When someone gets promoted or has a personal milestone, it is acknowledged company-wide. Recognition should not be biased toward the office where leadership sits.
Physical meetups twice per year. We bring the entire team together for one to two weeks of in-person collaboration, social activities, and strategic planning. These meetups are expensive — flights, hotels, activities — but the return on investment is enormous. The relationships built during in-person time sustain the distributed collaboration for the following six months.
Transparent documentation of how things work. In a co-located office, new engineers learn culture through osmosis — observing how things are done, asking the person next to them. In a distributed team, cultural knowledge must be explicitly documented. Our engineering handbook covers code review norms, communication expectations, decision-making processes, and even how to handle disagreements. New engineers read the handbook before they write code.
The Technical Infrastructure for Distributed Engineering
Beyond process and culture, distributed engineering requires technical infrastructure designed for multi-timezone operation. Our stack includes GitHub for code collaboration with branch protection and automated CI/CD. Linear for project management — chosen over Jira because its speed and UX reduce the friction of keeping it updated. Slack for real-time communication with carefully managed channels. Notion for documentation and knowledge management. Loom for asynchronous video explanations — invaluable for communicating complex ideas without scheduling meetings. And Tuple for remote pair programming when synchronous collaboration is needed.
Distributed engineering is not for every company. It requires deliberate investment in process, culture, and tooling that co-located teams can get away without. But for those willing to make that investment, the advantages are substantial and compounding. We would not go back to a single-office model even if we could.
Want to discuss this topic?
Our team is ready to help you implement the ideas from this article.
