Disagree-and-Commit Stories With a Design Twist

A 4-question set where each behavioral disagree-and-commit story gets a design follow-up that proves the commit was reversible. The pattern I lean on when an interviewer wants to see both sides of the same call.

Question Bundle
Python
4 questions
interview-prep
behavioral-interview
system-design-interview
leadership-principles
lilyadeyemi

By @lilyadeyemi

December 29, 2025

·

Updated August 11, 2026

529 views

4

4.4 (9)

Behavioral prompt: "Tell me about a time you disagreed with a senior on architecture but committed to their plan anyway." Design twist: "Now show me the abstraction you wrote so the team could swap implementations later if they were wrong." Show the strategy pattern I drew.

The room

I sketched the swap on the board:

Python
storage = LocalStorage()        # ship the senior's pick
client.save(storage, payload)   # works today
storage = S3Storage()           # swap one line, same call signature
client.save(storage, payload)   # works tomorrow if we were wrong
from typing import Protocol

class Storage(Protocol):
    def save(self, key: str, blob: bytes) -> None: ...
    def load(self, key: str) -> bytes: ...

class LocalStorage:
    def __init__(self, root: str): self.root = root
    def save(self, key, blob):
        with open(f"{self.root}/{key}", "wb") as f: f.write(blob)
    def load(self, key):
        with open(f"{self.root}/{key}", "rb") as f: return f.read()

class S3Storage:
    def __init__(self, bucket, client): self.bucket, self.client = bucket, client
    def save(self, key, blob): self.client.put_object(Bucket=self.bucket, Key=key, Body=blob)
    def load(self, key): return self.client.get_object(Bucket=self.bucket, Key=key)["Body"].read()

def upload(storage: Storage, key: str, blob: bytes) -> None:
    storage.save(key, blob)