Playing now · Puzzle 03

The Tally birthday picker

You picked a side in the reel. Here's why the arbitrary-looking option wins, and why the obvious one is the only date that cannot be right.

Read the teardown → See all puzzles →
UX teardown · 03

Nobody was born today.

Tally wants your birth year. The wheel opens on today's date, so every person who installs this app drags backwards through decades to answer a question they already knew the answer to. Today is the one value in that column that is guaranteed to be wrong.

Before
TALLY
Basics
When were you born?
We use this to set your daily targets.
Jun
Jul
Aug
Sep
Oct
25
26
27
28
29
2024
2025
2026
 
 
End of the list. Only one way to go.
Continue
After
TALLY
Basics
When were you born?
We use this to set your daily targets.
Apr
May
Jun
Jul
Aug
13
14
15
16
17
1999
2000
2001
2002
2003
Most users land within a few rows.
Continue

One field. One default. Nobody decided it.

Opening on today is not a choice anyone made. It is what a date picker does when you do not tell it otherwise. The framework hands it to you, the ticket says "add date of birth", and the default ships untouched.

It survives design review because a picker sitting on today's date looks exactly like a picker. Nothing is broken. It is a working control doing precisely what it was told, and charging every user the same tax forever.

Why it hurts

It passes the eye test and fails the hands.

Same four steps as every interaction, run against the picker as it ships:

1
Filter: passes. Clean, familiar, unmistakably a date picker. That is exactly why nobody stops to question it.
2
Seek: fails, and oddly. The user is not searching for anything. They can recite their birthday. The interface makes them hunt for a value they already hold.
3
Act: fails. Flick, overshoot, correct, repeat. Twenty-five rows of imprecise dragging for a decision that took no thought at all.
4
Store: fails. What sticks from the first screen is not the product. It is that this app is going to be work.

Three of four steps fail on a screen with no visual problems whatsoever. The whole defect is one number, chosen by nobody.

The fix

Open where your users already are.

One line of initialisation, not a redesign. The screen does not change. Only the number it starts on.

01
Aim at your median user, not the midpoint.
The tidy answer is to open halfway between the oldest and youngest year the field allows. Resist it. That optimises for a flat spread of users which no product actually has. Tally's users cluster in their twenties and thirties, so the midpoint of the range still leaves most of them scrolling. Point the default at the middle of the people, not the middle of the list.
02
Today has zero probability.
For a birthday field, today is not merely a weak guess. It is the single value in the column that cannot possibly be right. Whatever else you argue about, any other year beats it.
03
Measure the default in rows, not in code.
Design review looks at the screen. The user feels the distance. Count how many rows your average signup has to travel and the argument makes itself, without anyone having to have taste.
04
This was never about birthdays.
Country, currency, party size, delivery date, quantity. Any field with a knowable distribution already has its answer sitting in your own data. Most products decline to look, and hand the user the framework's guess instead.
The rule worth stealing
Default to the answer, not to zero.

Every default is a prediction about the person in front of you. Ship the one your framework handed you and you have predicted nothing. The best guess available is usually already in your data, and it costs one line to use it.

All the puzzles

03 Live
Tally birthday picker
Forms · defaults
02 Live
Wander free trial
Trials & churn · perceived risk
01 Live
Stride welcome screen
Competing CTAs · cognitive load
UX Internship
Like thinking this way?

Spotting the invisible cost of a "harmless" screen is the muscle real UX work is built on. That's exactly what you practise on real projects in the GWEN UX Internship.

See how GWEN works →