KyoMel / Yogyakarta, Indonesia

Term 131131 / 344

The Polling Paradox

Month
December 2025
Day
16
Source
2025/dec-term.md

Definition:

The Polling Paradox is the counterintuitive problem where traditional polling approaches force you to choose between responsiveness and efficiency, but optimizing for one sacrifices the other. Poll too frequently and you waste resources on empty responses; poll too infrequently and you miss updates, delivering stale data. The paradox is that most polling requests return “no change,” yet you must keep asking to catch the rare moments when something does change.

Key characteristics:

  • Frequent polling = responsive but wasteful
  • Infrequent polling = efficient but slow/stale
  • Most poll requests return no new data
  • Cannot optimize both responsiveness AND efficiency
  • Creates unnecessary server load and network traffic
  • Wastes resources waiting for rare events

Example:

Chat Application Checking for New Messages Scenario: User waiting for new messages in a chat app

The Paradox Illustrated:

┌─────────────────────────────────────────────────────┐
│              THE POLLING PARADOX                    │
└─────────────────────────────────────────────────────┘

OPTION A: Poll Every 1 Second (Responsive)
┌─────────────────────────────────────────────────────┐
│  Time    │ Poll Result      │ Status               │
├──────────┼──────────────────┼──────────────────────┤
│  0:01    │ "No new messages"│ ❌ Wasted request    │
│  0:02    │ "No new messages"│ ❌ Wasted request    │
│  0:03    │ "No new messages"│ ❌ Wasted request    │
│  0:04    │ "No new messages"│ ❌ Wasted request    │
│  0:05    │ "1 new message!" │ ✅ Got it quickly!   │
│  0:06    │ "No new messages"│ ❌ Wasted request    │
│  0:07    │ "No new messages"│ ❌ Wasted request    │
│  ...     │ ...              │ ...                  │
└──────────┴──────────────────┴──────────────────────┘

Result: 1 useful response out of 60 per minute
Waste: 98% of requests return nothing
User Experience: Great! Messages appear instantly
Server Load: HIGH 🔥

OPTION B: Poll Every 30 Seconds (Efficient)
┌─────────────────────────────────────────────────────┐
│  Time    │ Poll Result      │ Status               │
├──────────┼──────────────────┼──────────────────────┤
│  0:30    │ "No new messages"│ ❌ Wasted request    │
│  1:00    │ "3 new messages" │ ✅ Got them (late!)  │
│  1:30    │ "No new messages"│ ❌ Wasted request    │
│  ...     │ ...              │ ...                  │
└──────────┴──────────────────┴──────────────────────┘

Result: Fewer wasted requests
Waste: Still waste, but less
User Experience: BAD! 😤 Message arrived at 0:05 but
                 user didn't see it until 1:00!
Server Load: Lower ✅

THE PARADOX: You can't win either way!
┌─────────────────────────────────────────────────────┐
│                                                     │
│   Responsive ◄─────────────────────► Efficient     │
│       🏃                                   💰       │
│                                                     │
│   Poll frequently     vs      Poll infrequently    │
│   = Fast updates              = Save resources     │
│   = Waste resources           = Stale data         │
│                                                     │
│   CAN'T HAVE BOTH WITH TRADITIONAL POLLING!       │
│                                                     │
└─────────────────────────────────────────────────────┘

Keep reading