The question
“Tell me about a time you disagreed with another engineer on a technical decision. How did you resolve it?”
For this walkthrough, put yourself on the Android team building a food-delivery app. You’re changing the active-order screen: instead of repeatedly asking the server whether dinner is being prepared, picked up, or delivered, the app will receive live status updates. Another engineer wants to switch everyone over in one release. You want to start with a smaller group of orders.
The disagreement is about how to release the change without leaving a customer staring at “Preparing your order” while the rider is already outside. That gives us a clear decision, two approaches, and a consequence the interviewer can understand.
Here’s a first attempt.
“We were updating the order-tracking screen and there was a disagreement about the rollout. I thought we should be careful, so I got everyone aligned on a phased approach. We worked well together, the release went smoothly, and I learned how important communication is.”
This gives us the situation and an outcome without taking too long. So far, so good. But imagine hearing it without knowing anything about the project.
What does “got everyone aligned” mean? Did you write a proposal, run an experiment, or just keep arguing until someone gave in? And why did the other engineer want to switch everything at once? They probably had a reason.
The answer skips the part that would help us understand how you work. Let’s add that, keeping the background short.
Adding the missing detail
“I owned the Android rollout for live order tracking in a food-delivery app. The existing screen polled for status; the new version received updates as the restaurant and rider progressed through the order. Another engineer wanted a single cutover so we wouldn’t have to maintain both update paths. I wanted a gradual rollout because we hadn’t checked what happened when someone lost their connection or reopened the app during a delivery.
“I wrote down the rollout options and asked them to walk through a customer journey with me: place an order, lock the phone, lose the connection, and open tracking again. They pointed out a problem with my plan. If the app could switch between polling and live updates halfway through an order, an older response could overwrite a newer status. Keeping both paths added a failure mode of its own.
“So I changed the plan. We would assign the update path when an order started and keep it for that order. We’d begin with staff test orders, log the order ID and status version, and compare what the screen showed with the server’s current state. I asked the backend engineer to review how we recovered after a dropped connection before opening the rollout to customers.
“One test caught the screen moving backward from “Picked up” to “Preparing” after the phone reconnected. A queued update was older than the status we’d just fetched. My colleague fixed the version check; I added the reopen-and-reconnect case to our release checks and repeated it on staff orders. We then expanded the rollout in stages. It took longer to retire polling, but we caught the stale-status bug before opening the new path to customers. Next time I’d bring the backend engineer into the rollout discussion earlier.”
Now we can follow the disagreement. Both engineers have a reasonable concern, we can see what the candidate did, and someone else’s input changes the plan.
You might also notice that the outcome has a cost: the transition took longer. That’s useful context. We’re trying to explain a decision made under constraints, and those constraints don’t disappear just because the project finished.
I wouldn’t memorize this answer. Use it to check your own: can someone follow why you made the decision, what changed along the way, and which part you handled?
Let’s try a few follow-ups.
“Why didn’t your tests catch the status moving backward?”
“Our tests covered updates arriving in order while the app was open. They didn’t cover reconnecting, fetching the latest status, and then receiving an older queued event. I added that sequence to the release checks: the screen had to stay on “Picked up” when the older “Preparing” event arrived.”
That answer names the missing case and the check added afterward. “We improved our tests” would leave the interviewer guessing what changed.
“What did you measure before expanding the rollout?”
“We compared the status shown on the phone with the latest server status for the same order. I checked whether the app caught up after reconnecting and whether an older event could move the screen backward. The reconnect case failed before the fix and passed afterward. We also watched crash reports, but a healthy crash rate alone wouldn’t tell us whether a customer was seeing the wrong delivery status.”
Notice the distinction between the app staying open and the feature working. The answer gives the interviewer an observable result tied to the customer’s experience, rather than a vague claim that reliability improved.
“How did you repair the working relationship?”
Hang on: did the relationship need repairing? Nothing in the answer says it did. You can clarify that the disagreement stayed professional and explain what helped you work through it. In this example, that was asking for criticism, taking it seriously, and changing the proposal.
Answering a follow-up sometimes means correcting its premise. You don’t have to invent a conflict just because the question seems to expect one.
Hear these asked out loud
A behavioral practice round with follow-ups and feedback on what you said. Sign in, open Free practice, and choose Behavioral.
What would I practice next?
I’d keep the part where the colleague points out a problem with the proposal. It gives us a specific example of collaboration, and the answer explains how it affected the work. The distinction between owning the Android rollout and fixing the version check is also worth keeping.
There’s still a gap, though. We know what the team checked before expanding, but not what would make them stop once customers were using it. How long could the screen remain stale after a reconnect? Would disabling the rollout affect orders already in progress, or only new ones?
That’s a useful next exercise: spend about a minute answering “What would have made you stop the rollout?” Explain the signal, what you would do for an order already in progress, and who would make the call. That last detail matters here: turning off a flag for new orders doesn’t repair an active order that is already stuck.
Once you’ve worked through that, try the whole answer again without reading it. Does the extra detail fit, or are you now spending so long on rollback that the original disagreement gets lost? That’s something you can only really judge by giving the answer another go.
Try it with a project of your own.
Pick a disagreement where you remember both sides reasonably well: moving an Android screen to a new data source, changing how image uploads retry, or deciding when to replace a legacy login flow. Give your answer aloud, then look for a phrase like “I aligned the team” or “we improved the process.” What happened behind that phrase? Explain that part and try a follow-up that challenges your conclusion.
You can do this with a practice partner or try a behavioral round in RoundHound. If choosing the story is the difficult part, the preparation guide goes through how to build a small set of examples.
