Technical Program Manager
Explain a data center build that you led end to end at AWS.
Also asked as: Walk me through an AWS Availability Zone launch you owned from architecture through go-live. · Tell me about a complex, cross-functional infrastructure program you led end to end. · Describe an infrastructure build where you owned schedule, risk, and stakeholder alignment across multiple engineering and construction teams.
Follow-Up Questions
Tell me about your direct, hands-on experience with AI infrastructure during your data center builds — including any pivot from CPU-first to GPU-first design, and the specific GPU-first workloads you built capacity for.
This is a pivot I lived through mid-build, not a slide I've presented — it changed the physical design of an AZ I was actively delivering.
• The Trigger: Midway through the San Francisco AZ build, the capacity plan I'd already baselined against general-purpose compute stopped matching reality — AI/ML training and inference demand was accelerating faster than the original forecast, and I had to re-sequence the build around a GPU-first design without moving the committed launch date.
• The Approach: I treated the gap as a formally tracked risk, not just a scope change, and re-sequenced through a phased split rather than a single big-bang redesign — a funded Phase 1, the highest-confidence GPU demand with committed service-team sign-off, absorbed inside a re-densified subset of the existing power and cooling envelope before GA, and a Phase 2 post-GA expansion for lower-confidence, longer-lead demand on its own schedule. That phased split — detailed in the Risks tab — is what let "GPU-first design" and "unchanged launch date" both hold true at once.
• Power & Cooling: Power density assumptions that held for CPU racks didn't hold for GPU racks — I re-baselined the power and cooling plan around materially higher power draw per rack, and for the highest-density zones, shifted from air cooling to direct liquid cooling, reopening decisions with Data Center Engineering I'd already treated as closed.
• Network Fabric: General-purpose compute ran fine on standard leaf-spine, but GPU clusters needed a low-latency, high-bandwidth interconnect — AWS's Elastic Fabric Adapter (EFA) — validated end-to-end before I'd call a cluster ready, the same evidence-based readiness gate I used for power and network everywhere else on the AZ, just with a different bar for "done."
• GPU-First Workloads: I provisioned EC2 P4d (NVIDIA A100) and later P5 (NVIDIA H100) capacity into UltraCluster-scale pools for distributed model training, alongside a growing footprint of AWS Trainium and Inferentia — Amazon's own custom AI silicon — running inference for high-throughput recommendation and generative workloads.
• The Complexity: This AZ wasn't provisioning one kind of capacity — it was provisioning at least three distinct hardware profiles (general-purpose CPU, NVIDIA GPU, and custom AI silicon), each with its own power, cooling, and readiness criteria, inside the same program and the same launch date.
That's the exact pattern I'd expect to run again at Meta, just wider: a heterogeneous fleet across multiple GPU architectures, where the program's job isn't picking one hardware profile and optimizing for it — it's building a capacity and readiness model flexible enough to absorb a mid-build pivot like the one I lived through in San Francisco, without the launch date, the budget, or the reliability bar moving. I didn't learn that discipline from a case study; I re-baselined a live build around it.
Leaf-spine: a two-tier data center network design where every 'leaf' (top-of-rack) switch connects directly to every 'spine' switch, giving any server a predictable, low-hop path to any other server. It's the standard topology for general-purpose compute, but it doesn't provide the uniform, high-bandwidth, all-to-all connectivity that distributed GPU training clusters need — which is why that workload calls for a purpose-built fabric like EFA instead.
How does building physical AZ capacity for general compute differ from building capacity for AI training and inference workloads, and how would that change your Region Build playbook?
The critical-path discipline stays the same; the highest-risk dependency moves. A general-purpose AZ's riskiest dependency is usually utility power interconnection and mechanical commissioning at a fairly uniform power density per rack. An AI training or inference build changes that in three ways: power density per rack runs several times higher, which usually forces liquid or direct-to-chip cooling instead of standard air cooling; the network fabric requirement shifts from a general leaf-spine design to a low-latency, high-bandwidth interconnect built for distributed training or large-batch inference; and capacity provisioning stops being just 'racks and power' and becomes 'validated cluster topology' — a set of nodes isn't ready until the interconnect fabric between them has been proven end-to-end, not just powered on. I'd keep the same integrated-schedule and evidence-based readiness gate I used in Dublin, but the gate criteria and the highest-blast-radius risk owner both change.
Meta talks about making infrastructure "fully operable by AI agents" — intent-driven, agent-executed workflows. Where would a program built on Day-1 readiness gates and RAID logs fit into that shift?
Structured, evidence-based readiness gates and a disciplined risk register are exactly the kind of deterministic, auditable process that's a strong candidate for agent-executed automation — the criteria are explicit, the evidence is checkable, and the ownership is already assigned. In that model, my job as the program owner shifts from manually chasing status updates to defining the intent clearly enough for an agent to execute against — what "ready" means, what evidence a risk resolution requires — and letting agents run the checks and surface exceptions, while I keep the judgment calls: blast-radius trade-offs, like the power-bridge decision in Dublin, that carry real cost and shouldn't be made autonomously.
With thousands of interconnected services across a heterogeneous fleet, how do you keep a dependency map like the one you built for Dublin from becoming unmanageable?
The same principle that worked at AZ scale — centralize on the handful of dependencies with the highest blast radius, and don't try to personally track everything else — has to scale through delegation and contracts rather than a bigger spreadsheet. At Dublin, I owned the seams between five workstreams myself because five was tractable. At thousands of interconnected services, that only works if most service-to-service dependencies are governed by a shared SLO contract the owning teams manage themselves, and the program level only tracks the small number of shared, high-blast-radius dependencies — shared control planes, capacity pools, core network paths — the way I tracked power, network, and security at the AZ level. Scale changes the tooling; it doesn't change the principle of finding the few dependencies that can take the whole program down and owning those explicitly.