Navigating Ambiguity and Adaptive Planning Questions
Operating effectively when information is incomplete, requirements are unclear, or the right path forward is not obvious: making a decision (or deliberately choosing to wait) with imperfect data, forming and testing assumptions, surfacing and closing data gaps, and replanning quickly as conditions, priorities, or organizational context change. Covers deciding when to act now versus gather more information first, running a lightweight experiment, spike, or prototype to reduce the biggest unknown before committing, communicating a decision and its trade-offs to stakeholders under time pressure, adjusting scope, timeline, or approach as new information emerges, and navigating unclear ownership or conflicting priorities that make the right call unclear. This is a decision-making and planning competency, tested through both direct scenarios and retrospective stories, and it applies across technical and non-technical roles at any level. Distinct from: team-facing leadership through organizational change such as reorgs or motivating a team through uncertainty (Leading Through Ambiguity and Change); a planned transformation program or formal change-management framework (Organizational Change Management); questions whose primary tested skill is a technical system-design, coding, or architecture deliverable that only mentions missing or incomplete data as color; and navigating organizational politics, competing power structures, or decision-rights and escalation-authority disputes between stakeholders, including structuring a communication artifact for an executive audience (Organizational Politics and Political Navigation; Executive Communication and Managing Up).
You ran an A/B test and the primary metric shows a small negative lift that is not statistically significant. Describe how you would decide to stop the experiment, extend it, or pivot. Include the statistical and business considerations, and what additional diagnostics you would run.
Sample Answer
The decision isn't "significant or not," it's how much more information would resolve this, at what cost, weighed against what the decision is gating. Combine three considerations: whether the test even has enough power to detect an effect size you'd care about, what shipping or extending actually costs the business, and whether cheap diagnostics change the picture before you spend more weeks collecting data.
Worked example: an e-commerce checkout redesign test. Control: 10,000 visitors, 520 conversions, a 5.20% conversion rate. Treatment: 10,000 visitors, 495 conversions, 4.95%. Note this is 10,000 per arm, 20,000 total across both arms, a distinction worth stating explicitly since conflating "per arm" and "total" is a common way this exact calculation goes wrong. The relative lift is (4.95 minus 5.20) divided by 5.20, about negative 4.8%, an absolute difference of 0.25 percentage points, reported as not statistically significant.
Statistical considerations: check what minimum detectable effect (MDE, the smallest true effect size the test is actually powered to reliably find) the current sample size supports, using the standard two-proportion sample-size relationship for 80% power (an 80% chance the test would detect a real effect of that size if one truly exists) and 5% significance (a 5% chance of calling a fluke result real when there is actually no effect), n roughly equals 15.68 times p times (1 minus p), divided by the squared effect size, where p is the baseline rate. With p equal to 0.052, p times (1 minus p) is 0.052 times 0.948, or 0.0493. Solving for the detectable effect at n equals 10,000 per arm: effect squared equals 15.68 times 0.0493 divided by 10,000, which is 0.7731 divided by 10,000, or 0.00007731. The square root of that is about 0.0088, or 0.88 percentage points absolute, roughly a 17% relative change off the 5.2% baseline. In plain terms: at 10,000 visitors per arm, this test can only reliably tell apart effects of about 0.88 percentage points or larger. The observed effect, 0.25 percentage points, is well below that floor, so the test genuinely cannot distinguish "there's a small negative effect around this size" from "there's no effect at all." That's a materially more useful statement than "not significant."
Business considerations: the change is feature-flagged and cheaply reversible, so the downside of running longer, or even of shipping and watching closely, is bounded, unlike a pricing change. Reaching a sample size that could detect a more realistic effect, say a 10% relative lift, about 0.52 percentage points absolute, needs roughly n equals 15.68 times 0.0493 divided by 0.0052 squared, or 0.7731 divided by 0.000027, about 28,600 visitors per arm. If the 10,000 per arm collected so far took roughly 2 weeks, an assumption stated explicitly for illustration, that's about 5,000 per arm per week, so reaching 28,600 would take about 4 more weeks. Four more weeks of a reversible, feature-flagged test is a small cost against shipping a possibly real, if small, conversion regression site-wide.
Additional diagnostics before deciding: segment the effect by traffic source, device, and new-versus-returning user, since a flat topline can hide an offsetting pattern, for example a real positive lift on mobile canceled out by a real dip on desktop, which would be actionable, ship for mobile, hold for desktop, even though the topline reads as "no effect." Check guardrail metrics, page load time, error rate, and the step-by-step funnel, for a directional signal even before the primary metric reaches significance, since a redesign that adds friction at one specific step is diagnosable early. And run a sample-ratio mismatch check, confirming the actual visitor split is close to the intended 50/50, because a broken randomizer that leaks a few extra visitors into one arm quietly corrupts a metric like conversion rate and can produce exactly this kind of small, confusing null result.
Decision: extend, don't stop and don't ship yet. The test is underpowered for the effect size that would actually matter, the change is cheap and reversible with no forcing deadline, and the diagnostics haven't been run. Run the funnel and segment diagnostics immediately, since they're fast, while extending toward the roughly 28,600-per-arm sample size, with a pre-committed re-check date rather than an open-ended extension. Stopping now would misread "underpowered null" as "confirmed no effect." Shipping now risks a real site-wide regression. Pivot only becomes the right call if the diagnostics reveal a structural problem, like the redesign genuinely breaking one funnel step for a large segment, which is exactly what the diagnostics are designed to catch before you'd ever pivot on a hunch.
An SRE running a canary deployment with a slightly elevated error rate that isn't statistically distinguishable from baseline noise, given the canary's small traffic share, faces the same shape: check whether the canary's volume is even large enough to detect the error-rate delta that would matter, segment by endpoint before concluding anything, and extend the canary window rather than fully rolling out or fully reverting on an underpowered read.
The trap is either "not significant, so no effect, ship it" or the opposite overcorrection, "not significant, so kill it." Both treat a null result from an underpowered test as proof of no effect, when it's really an absence of evidence either way. The fix is always to check what effect size the test could have detected before concluding anything from a non-significant result.
You're asked to measure the primary metric of an A/B test, but instrumentation for the experiment group was partially rolled out and server-side logs are incomplete. Describe a pragmatic measurement plan to provide a defensible estimate: what proxy signals or validation checks you'd use, sensitivity analyses to run, and how you'd communicate uncertainty to product and engineering.
Sample Answer
Partial instrumentation on an A/B test's experiment group, with incomplete server-side logs on top, means the raw primary-metric number is not trustworthy as reported, and the job is to produce a defensible estimate anyway, not to wait for perfect data or quietly present the broken number as if it were clean.
Proxy signals and validation checks. First, quantify the damage before doing anything else: what fraction of the experiment group actually has complete instrumentation, and is that fraction random or correlated with anything that matters (for example, if instrumentation gaps cluster on a particular device type or app version, your sample is now biased, not just smaller). Use a proxy signal that has independent, complete coverage where the primary metric doesn't: for example, if the primary metric is an in-app conversion event with partial logging, check a server-side signal that's fully instrumented regardless (like completed transactions in the payments system of record) as a cross-check, since a metric with full coverage that moves in the same direction as the partial primary metric is corroborating evidence even if it's not the exact same definition. Validate the partially-logged population against the fully-logged population on pre-experiment covariates (do the users with complete logs look like the users with incomplete logs, in terms of prior engagement, device mix, geography); if they look similar, the partial data is more defensible as representative; if they don't, that's a finding to report, not to paper over.
Sensitivity analyses. Run the primary metric calculation under at least two bounding assumptions and report the range, not a single point estimate presented as certain: a conservative bound treating all users with missing data as if they did NOT convert (a floor), and an optimistic bound treating them as if they converted at the same rate as the fully-logged population (a ceiling). State both numbers with their basis: for example, if fully-logged users show a 4.0% conversion rate and 30% of the experiment group has missing logs, the floor estimate for the group's overall rate is roughly 4.0% x 70% = 2.8% (treating all missing as non-converters), while the ceiling estimate, assuming missing users convert at the same 4.0% rate as logged users, is close to the observed 4.0% itself. That's a real, re-derivable range (2.8% to 4.0% in this made-up but arithmetically consistent example), not a hand-wave; whatever the actual observed numbers are, redo this arithmetic from the real logged rate and the real missing fraction before presenting it. Also run the comparison restricted to only the fully-instrumented subset of both control and experiment groups as a cleaner, if smaller, apples-to-apples estimate, and check whether its conclusion (statistically significant lift, no lift, negative) agrees with the bounded full-population estimate.
Communicating uncertainty to product and engineering. Lead with the range, not a single number: "the estimated lift is somewhere between X and Y, depending on how we treat users with missing instrumentation; the fully-instrumented subset alone shows Z, which is the cleanest single estimate we have but covers only 70% of the experiment group." State explicitly what would resolve the uncertainty (completing the instrumentation rollout, or a fixed sample re-measurement once logging is fixed) and give a rough sense of when that resolution might arrive, rather than promising a firm answer against a date you don't control. Recommend a decision path for each side of the range: if even the conservative floor would justify shipping the feature, product can act now; if the decision flips depending on where the true number falls within the range, recommend holding the decision until instrumentation is fixed rather than picking whichever end of the range is more convenient.
What separates a strong answer from a mediocre one: a mediocre answer either reports the partial-data number as if it were the true number, or throws up its hands and says the experiment is unmeasurable and must be rerun from scratch. A strong answer produces a bounded, arithmetically consistent range with the basis of every input stated, uses an independently-instrumented proxy as a cross-check rather than trusting the primary metric alone, and gives product and engineering a decision path that depends on where in the range the business threshold actually sits, rather than defaulting to "we need more data" as a way to avoid committing to an estimate.
The same bounding technique applies to an SRE (site reliability engineer) trying to estimate the real customer impact of an incident when logs were only partially captured during the outage window: bound the affected-request count between a floor (only requests with confirmed error logs) and a ceiling (all requests during the outage window, assuming full impact), cross-check against an independently-collected signal like customer support ticket volume, and report the range to leadership rather than a single invented number.
You are partway into an ambiguous engagement and have already made several unverified assumptions that are starting to drive real decisions. Walk through how you would track those assumptions so they don't quietly get treated as facts: what you would capture, who owns keeping it current, and how you would decide when a risky assumption needs to be escalated or resolved before you go further.
Sample Answer
Framework: keep a living register that names what decision each assumption is currently driving, give it one accountable owner, and use a quantified rule, not gut feel, to decide when an assumption needs to be escalated before you go further.
What to capture. For each assumption: the claim itself, stated as something that could turn out false, the decision it's currently driving, an impact score (1 to 5, how much would change if it's wrong), a confidence range or interval width (how wide is the plausible range, for example "concurrency could be anywhere from 3 to 15 percent" is wide and low-confidence, "spend estimate is 40,000 to 45,000 dollars" is narrow and high-confidence), a cost to validate, a status (untested, testing, validated, invalidated), and an owner.
Who owns keeping it current. Whoever introduces an assumption logs it, but one named person, typically the project or tech lead, owns the register as a whole and reviews it on a fixed cadence, for example a short check at every weekly status meeting. Ownership spread across "everyone" in practice means nobody actually maintains it.
A quantified rubric for when to escalate, generalized beyond a single project. Escalate and resolve an assumption before proceeding further when: the impact score is high (for example, 4 or above out of 5), the confidence-interval width is wide (the plausible low and high ends differ by more than roughly 2 times each other), and the validation cost is affordable relative to what's riding on the decision (for example, under roughly 5 percent of the value at stake). If validating is cheap relative to the size of the decision, there's no good reason not to test it before committing further. When an assumption is high-impact but validation would be genuinely expensive relative to the decision (for example, it would take three months to validate a call that has to be made this week), the right response usually isn't to block everything, it's to make the decision conservatively, biased toward the cheaper error, and flag it explicitly as an open, tracked risk rather than letting it quietly get treated as settled fact.
Because the rubric is expressed in quantified, portable terms (impact score, confidence-interval width, validation cost), the same scoring approach, once an organization sets its own thresholds for what counts as high impact in dollar terms and how wide a range is too wide for its risk tolerance, becomes a standard gate any team can apply at a release-readiness review, not a bespoke practice reinvented on every project.
Concrete worked example. Six weeks into a platform migration engagement, two unverified assumptions are already driving real decisions. First: "the legacy system's read replicas can absorb a full data backfill without impacting production reads," currently untested, but the migration schedule is already built on top of it. Second: "the client's compliance team will approve the new data-retention schema without changes," based on one informal conversation. Applying the rubric: assumption one scores impact 5 (a wrong guess here risks a production incident during business hours), a wide confidence interval (nobody has actually load-tested it, it could genuinely go either way), and low validation cost (running a backfill against a replica during a maintenance window, roughly half a day), so it escalates and gets resolved now, before the real backfill is scheduled. Assumption two scores impact 4 (a compliance objection could mean weeks of schema rework), also a wide interval (one informal conversation isn't a real signal), and low validation cost (a single follow-up meeting with the compliance lead this week), so it also escalates now, cheap enough that there's no excuse to wait.
The trap has two mirror-image failure modes: treating every assumption as equally urgent, which creates alarm fatigue and buries the real risks in noise, or never escalating any of them until something actually breaks, silent risk accumulation, which is exactly the failure the question describes. The specific trap worth naming: an assumption "graduating" into being treated as settled fact purely because nobody ever revisited it, not because anyone ever actually validated it.
A second, shorter example, different discipline: partway through a marketing campaign engagement, the assumption "the creative concept tested well with the target segment," based on a single focus group of 8 people, is now quietly driving a full media-buy decision. The same rubric flags it, high impact (the size of the spend), a wide confidence interval (8 people is a thin sample), and low cost to close (one more quick, targeted survey), meaning it should be resolved before the full spend commits, not carried forward as if the focus group had settled it.
Discuss the limitations of root-cause analysis when data lineage and instrumentation are incomplete. Propose practical fallback strategies (e.g., focused sampling, triage heuristics, conservative decision rules), how you'd communicate uncertainty to stakeholders, and how to reduce these limitations over time.
Sample Answer
Root-cause analysis (RCA) depends on being able to trace a causal chain from symptom back to origin, and incomplete data lineage or instrumentation breaks that chain in specific, predictable ways. First, you cannot reliably distinguish correlation from causation, because you cannot see the intermediate steps that would confirm the mechanism, only the two endpoints you happen to have logged. Second, there is a survivorship problem: you only ever analyze what got logged, so a failure mode running through an uninstrumented path is invisible by construction, and an RCA that looks conclusive may simply be conclusive about the wrong thing because the real culprit never had a chance to show up in the data. Third, without full lineage you cannot rule out a shared upstream cause producing what looks like a direct relationship between two logged events. The most dangerous consequence of all three is that an RCA report still reads as definitive, complete with a clean "root cause" label, even though it is really a best guess built from partial evidence, and that false confidence drives a specific fix while the actual cause keeps operating.
Three practical fallbacks close the gap without pretending the data problem does not exist. Focused sampling means abandoning the idea of analyzing everything, since that is impossible with real gaps, and instead pulling a small, deliberately stratified set of incidents, say twenty cases spanning both affected and unaffected instances, and manually tracing each one by hand, reading raw logs and replaying requests, to find a plausible mechanism and check whether it holds across the sample rather than just the first case you looked at. Triage heuristics are pre-agreed, explicitly provisional rules for classifying a likely cause category when full evidence is not available, for example "if a failure's timestamp falls within five minutes of a known deployment, default-attribute it to that deployment pending further evidence." These are useful precisely because they are fast defaults, not because they are proven, and they must be labeled as provisional every time they are used. Conservative decision rules mean choosing the response that helps under multiple candidate causes rather than a narrow fix that only helps if your leading hypothesis happens to be right, for example a rollback that would resolve three of your four hypothesized causes rather than a targeted patch that only resolves one.
Communicating uncertainty to stakeholders means stating a hypothesis, a confidence level, and what would move that confidence, rather than a flat, false-certain "root cause: X." Take an e-commerce checkout latency incident where only two of three services in the request path are instrumented, so the RCA can rule a specific cause in or out for the first two but is blind on the third. A focused sample of twenty slow-checkout traces, manually correlated, shows fourteen of the twenty consistent with a timing gap at the uninstrumented boundary, coinciding with a gateway timeout configuration change. The honest statement to stakeholders is: "leading hypothesis is the gateway timeout change deployed at 14:02 UTC, confidence medium, based on temporal correlation in 14 of 20 sampled incidents; alternative hypothesis is a concurrent traffic spike from a marketing campaign, confidence low, present in only 3 of 20; we will confirm by adding tracing at that boundary and re-checking within 48 hours." The conservative decision in the meantime is to roll back the gateway change, since that helps under either hypothesis, rather than waiting for full tracing before acting.
Reducing these limitations over time means treating every gap the RCA hit as a backlog item with a named owner, not just a caveat in a postmortem doc. Add the missing tracing at the specific boundary that was blind this time. Track a simple "lineage coverage" metric across incidents, the share of incidents where the root cause was traced with full data versus resolved only through a triage heuristic, so the organization can see whether the blind spots are actually shrinking. And require that any incident resolved via a triage heuristic spawns a follow-up ticket to close the specific gap it papered over, because otherwise the "temporary" heuristic quietly becomes permanent policy and the same blind spot causes the next incident too.
The trap, and the one worth naming explicitly, is publishing an RCA report with a single definitive root cause when the underlying evidence only supports a hypothesis. Writing "root cause: confirmed" without full lineage is not a modest hedge, it is a false-certainty claim, and it is worse than saying nothing because it tells the reader to stop looking.
The same fallback structure applies in manufacturing. A defect investigation where supplier lot tracking is incomplete would use the identical approach: a stratified sample of defective units traced by hand, a triage heuristic such as "if the defect cluster in time matches a known supplier lot change, provisionally attribute it there," and a conservative decision, quarantining the suspect lot range, that is safe even if the hypothesis turns out to be wrong.
Explain two frameworks you might use to approach ill-defined engineering problems (for example, OODA loop, hypothesis-driven development, or DMAIC). For each framework, describe when it's most appropriate and one concrete step you would take under that framework when faced with limited data.
Sample Answer
Two frameworks that pull in genuinely different directions, useful precisely because they suit different kinds of ill-defined problems.
Framework 1: the OODA loop. OODA stands for Observe, Orient, Decide, Act, a rapid decision cycle originally developed for fighter pilot combat decisions and since adapted broadly to any fast-moving, uncertain situation. When it's most appropriate: time-critical, fast-changing situations where the cost of waiting for complete information exceeds the cost of acting on an imperfect but quickly-updated picture, such as live incident response or a fast-moving competitive situation. One concrete step under limited data: in the Observe phase, explicitly timebox data gathering to whatever's already available in minutes, not days, and in the Orient phase, write down specifically what's still missing so the next loop iteration targets that exact gap instead of re-observing everything from scratch. Worked example: an SRE, a site reliability engineer, facing a degraded service with no clear root cause observes the 3 dashboards already available (latency, error rate, deploy log) in about 5 minutes, orients on noticing a deploy 10 minutes before the onset, decides the hypothesis is a bad deploy, and acts by rolling it back; if that doesn't resolve it, the next loop starts within 5 minutes, now with that cause ruled out.
Framework 2: DMAIC. DMAIC stands for Define, Measure, Analyze, Improve, Control, a structured five-phase process from Six Sigma, a quality-improvement methodology. When it's most appropriate: longer-horizon, less time-critical problems where a repeatable, documented process matters, particularly recurring quality or consistency issues that other people will need to follow later; it's a poor fit for a genuine emergency, since its ceremony costs real minutes an incident can't spare. One concrete step under limited data: in the Measure phase, explicitly define a proxy metric you can measure right now, flagged clearly as a stand-in for the metric you actually want but don't yet have data for, with a stated plan to validate that proxy once real measurement becomes available, rather than blocking the entire process on getting perfect measurement first. Worked example: a support team wants more consistent ticket resolution across agents but has no existing quality-scoring data. Define: reduce the reopened-ticket rate. Measure: use the reopened-ticket count as an available proxy for resolution quality, even though a full rubric-based quality score would ideally be preferred, baseline 9%. Analyze: bucket reopens by agent tenure and ticket category to find where the problem concentrates. Improve: pilot a checklist for the worst-offending category. Control: track the reopen rate weekly after the pilot to confirm the gain holds.
The trap. Naming a framework without the 'when appropriate' half is the common shortfall: running DMAIC's full five-phase process during a live production incident burns minutes that matter far more than process rigor does in that moment, while running OODA's instinct-driven rapid loop on a multi-month systemic quality problem tends to produce thrashing, a string of quick fixes that don't add up to an actual, durable improvement.
Unlock Full Question Bank
Get access to all Navigating Ambiguity and Adaptive Planning interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.