Skip to content
C.W.K.
Stream
Lesson 04 of 05 · published

Fair Shares Is Not the Goal; the Complaint Is

~12 min · design, wrong-turns, measurement, product-design

Level 0Unsorted
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

The Intuitive Fix, and What It Broke

Once the diagnosis was clear — loud sources own the head, quiet ones carry the pictures — the obvious remedy was round-robin. Give every source on a shelf a turn. It is fair, it is simple, and it is exactly what most people would write.

Measured against the two shelves that mattered, it fixed one and broke the other. The starved shelf went from no pictures on screen to eight. A shelf that had been fine went from twelve down to six, because forcing balance meant giving slots to sources that had no pictures to contribute, displacing ones that did.

The Objective Was Wrong, Not the Implementation

The temptation is to treat that as a tuning problem — weight the rotation, exempt some sources, add a rule. It is not. Round-robin was optimizing for balance between sources, and nobody had ever asked for balance between sources. The actual complaint was "my screen has no pictures."

Those objectives coincide only when a shelf is starved. Everywhere else they diverge, and enforcing fairness actively damages shelves that were already satisfying the real goal. This is a general failure mode: a proxy objective that is easier to state than the real one, sounds principled, and quietly optimizes something nobody wants once conditions change.

Target the Complaint Directly

The corrected rule reads almost too simply. If the visible region already has enough pictures, do nothing at all. Otherwise, promote picture-bearing rows until it does, bounded by a floor. There is no notion of source fairness anywhere in it.

Note the shape: the intervention has an off switch that is the common case. A shelf that is already fine is left completely untouched, which means the mechanism cannot regress anything that was working. That property — no-op unless the specific problem is present — is what makes a targeted fix safe to deploy across surfaces you did not measure.

Check the Shelf You Were Not Complaining About

The process lesson matters as much as the design one. The round-robin version was verified on the shelf that had prompted the work, where it looked like a clear success. The regression only appeared because a second shelf — one nobody had complained about — was measured too.

When a change alters a shared ranking or layout rule, the shelf that motivated it is the least informative one to test. It is the case the change was fitted to. The information is in the surfaces that were already fine, because those are the ones a fix can only make worse.

Optimize the complaint, not the abstraction the complaint suggested. "Fair shares", "balanced coverage", "even distribution" are proxies that feel more principled than the messy thing someone actually said — and they will happily degrade every case where the real goal was already met.

Code

The wrong objective and the right one, with the no-op that makes it safe·python
# WRONG TURN: fair shares between sources.
# Measured: starved shelf 0 -> 8 pictures on screen (good), healthy
# shelf 12 -> 6 (bad). It gave slots to sources with no pictures to
# contribute, displacing sources that had them. The implementation was
# fine; the OBJECTIVE was something nobody asked for.
def promote_round_robin(rows, limit):
    by_source = group_by(rows, key=lambda r: r["source_id"])
    out = []
    while len(out) < limit and any(by_source.values()):
        for source_rows in by_source.values():
            if source_rows:
                out.append(source_rows.pop(0))
    return out


# RIGHT: target the complaint -- "my screen has no pictures" -- and
# no-op otherwise. The early return is the whole safety property: a
# shelf that is already fine cannot be made worse by this code.
def apply_image_floor(rows, limit):
    screen = min(HEAD_CARDS, limit)
    have = sum(1 for r in rows[:screen] if r.get("image_url"))
    if have >= IMAGE_FLOOR:
        return rows              # <-- the common case does nothing
    ...                          # promote only as far as the floor

External links

Exercise

Recall a fix you shipped for a specific complaint and identify the abstraction you reached for — fairness, balance, uniformity, consistency. Then find one case where that abstraction and the original complaint would give different answers, and work out which one your code implements. If it implements the abstraction, check whether anything regressed quietly.
Hint
The divergence case is usually the surface that was already healthy, because that is where the abstraction has something to take away and the complaint has nothing left to fix. If you cannot construct the divergence case, the abstraction may genuinely be equivalent — but be suspicious, because equivalence usually means you have just restated the complaint in fancier words.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.