03 — Benchmark Hygiene

You can optimize for the wrong thing perfectly. Measuring the right metrics prevents this. The DSA learning space is full of vanity metrics that feel like progress and produce none — LeetCode streaks, total problem count, “I finished NeetCode 150.” These are not measures of understanding. They are measures of time spent, which is not the same thing.

Benchmark hygiene is the practice of deciding in advance what you will measure, committing to those metrics, and refusing to substitute them with easier-to-achieve proxies. It is harder than it sounds. When genuine progress is slow, the temptation to count something that goes up faster is strong.


What to Measure

These metrics are causally connected to actual understanding:

Metric

How to Measure

Why It Matters

Problems by difficulty

Easy / Medium / Hard counts weekly

Ensures you’re not hiding in easy problems

Time-to-solve trend

Average minutes on Medium problems, tracked monthly

Are you getting faster? Stagnant time = plateau

Pattern recognition rate

Before coding: did you identify the pattern? Y/N

The actual skill. Pattern blindness = cannot solve unseen problems

Editorial dependency rate

% of problems solved without reading editorial

Proxy for genuine independence

Contest percentile

Track from M5 onward, monthly

Real-world signal, not self-graded


What NOT to Measure

These metrics are traps:

Anti-Metric

Why It’s Dangerous

Total problems solved

Gameable. Does nothing to prevent the Memorizer failure mode. Someone who solved 500 problems by copy-pasting editorials looks identical to someone who solved 500 independently.

LeetCode streak

Rewards showing up, not learning. A 90-day streak of 5-minute easy problems is meaningless.

Lines of code written

Has never been a proxy for engineering quality in any context. It is not a proxy for DSA understanding either.

“I finished [course/playlist]”

Completion is a consumption metric. Understanding is a production metric. These are not the same.

The NeetCode 150 Warning

“I finished NeetCode 150” is one of the most common self-deceptions in DSA preparation. NeetCode 150 is a good problem set. It is not a certification. Finishing it means you were exposed to 150 problems — it says nothing about whether you understood any of them, whether you can solve variations, or whether you can apply the patterns under time pressure without prior exposure.

Use NeetCode 150 as a problem source, not a completion target. Measure your performance on those problems with the metrics above, not with a checklist.


Weekly Metrics (Every Sunday)

These take 5 minutes. Run them before filling the weekly lab notebook entry.

WEEKLY METRICS
Week of: ___  |  Sprint: S[ ]

1. Problems solved:
   Easy   : [ ]
   Medium : [ ]
   Hard   : [ ]

2. Average time to solve Medium problems this week: [ ] minutes
   (trend vs. last week: faster / same / slower)

3. Pattern recognition accuracy:
   Problems where I identified the pattern before coding: [ ] / [ ]
   Pattern recognition rate: [ ]%

4. Editorial dependency rate:
   Problems solved without reading editorial: [ ] / [ ]
   Dependency rate: [ ]%

5. Contest participation this week: Y / N
   If Y — contest name and result:

Monthly Checkpoint (Month End)

These are phase-level signals. Run at the end of every month before planning the next month’s sprints.

MONTHLY CHECKPOINT
Month: M[ ]  |  Date: ___

1. Phase exit criteria status:
   Phase [ ] exit criteria: MET / UNMET
   If unmet — specific criteria not yet met:

2. Portfolio rung completion:
   Rung [ ] status: COMPLETE / IN PROGRESS / NOT STARTED

3. Codeforces rating (track from M8):
   Current: [ ]
   Trend: [ ]

4. LeetCode contest percentile (track from M6):
   Last contest: [ ]th percentile
   Trend over last 3 contests: [ ]

5. Benchmark summary sentence (1 sentence, honest):
   >

The Calibration Check

Once a month, take one problem you solved 3+ weeks ago and attempt it fresh — no notes, no looking at your previous solution. You should be able to solve it faster and more cleanly than the first time. If you cannot: your original “understanding” was surface-level. This is not failure; it is data. Update your pattern mastery assessment accordingly.

This calibration check is the most honest signal in the entire system. Everything else can be gamed. This cannot.


Navigation: ← Lab Notebook | Daily Practice →