01 — Sprint Cadence¶
The unit of the 13-month arc is not a month. It is a 2-week sprint. There are 26 sprints (S1–S26) from 2026-07-06 to 2027-08-06 with one buffer sprint absorbed into wedding season.
Sprints are how you convert 10–15 hrs/week of moonlight time into shipped rungs. They are also how you catch slippage early — a bad week is invisible, a bad sprint is a data point.
Why 2 weeks (not 1, not 4)¶
1 week is too short for a shipping act. C++ builds are slow; a real 200-line project bleeds into a second weekend.
4 weeks is too long to notice slippage. If you drift for 3 weeks and only wake up in week 4, that’s a whole rung lost.
2 weeks = 1 shipping act per sprint = 26 shipping acts across the arc = 26 public artifacts by M13. That is your portfolio, one commit at a time.
Weekly split for a Zoho weekday + weekend¶
Target: 10–15 hrs / week, minimum floor 8.
Day |
Slot |
Hours |
Notes |
|---|---|---|---|
Mon |
6:30 AM – 7:15 AM |
0.75 |
Daily 30-min (see |
Tue |
9:00 PM – 10:00 PM |
1.0 |
Focused sprint work, single task |
Wed |
6:30 AM – 7:00 AM |
0.5 |
Daily 30-min |
Thu |
9:00 PM – 10:30 PM |
1.5 |
Focused sprint work |
Fri |
— |
0 |
Protected rest. No C++. Do not touch the roadmap. |
Sat |
9:00 AM – 1:00 PM |
4.0 |
Non-negotiable morning block. Deep work. Sprint core target. |
Sun |
10:00 AM – 1:00 PM + 8:00 PM – 8:30 PM audit |
3.5 |
Deep work + Sunday audit |
Total: ~11.25 hrs. Add 2–4 hrs of overflow on stretch weeks. Miss 1–2 hrs on slack weeks. Below 8 hrs for 3+ weeks = yellow flag (see slippage rules).
Sprint template¶
Copy this into a SPRINTS.md file at the roadmap root. Fill in at the start of each sprint (Sat morning of week 1).
# Sprint S<N>: <YYYY-MM-DD> → <YYYY-MM-DD>
Phase: P<n>
Current rung: <name>
## Targets (3 total)
- [ ] CORE: <one thing that MUST ship this sprint>
- [ ] STRETCH: <one thing that would be great if core lands early>
- [ ] LEISURE: <one non-C++ thing — book, movie, family, hobby —
this is not a reward, it is protected mental space>
## Lab-notebook entry
- [ ] At least ONE predict-then-measure entry logged in the notebook.
## Shipping act
- [ ] ONE commit pushed to public GitHub OR one post
published (blog / X / r/cpp / LinkedIn). Even a 3-line
README update counts if the code is real.
## Time budget
Planned: __ hrs Actual: __ hrs Delta: __
## Notes / carry-over
- ...
Sprint planning — Saturday morning of week 1 (30 min)¶
Open the phase file for the current phase.
Look at the rung you are on. Decompose it into 3–5 concrete tasks.
Pick the CORE task — the one that, if it ships, makes the sprint a success even if nothing else lands.
Pick the STRETCH — do not pick the second-most-important task. Pick something that only makes sense if core is done in week 1.
Pick the LEISURE — write it down. If you don’t schedule non-work, work will eat it.
Look at yesterday’s Sunday audit (
07_motivation_sustainment.md). Any carry-over? Any flags?Write it in
SPRINTS.md. Commit that file. That is the sprint’s opening shipping act.
Sprint retro — Sunday evening of week 2 (30 min)¶
# Sprint S<N> retro
## What worked
- <specific behaviour or setup>
## What broke
- <specific friction, timing, distraction, tooling>
## What I learned about my own brain this sprint
- <one line — this is the returning-dev calibration data>
## Slippage flag
[ ] Green — core shipped, on-track
[ ] Yellow — core shipped but hours below 8, or shipping act late
[ ] Red — core did NOT ship
## Next sprint
- Carry-over: <items to bring forward>
- Change one thing: <specific process tweak, not a wish>
Slippage rules¶
Green — core shipped, retro filed. Continue.
Yellow — core shipped BUT one of:
Hours < 8
Shipping act was skipped
No lab-notebook entry
Action: no scope change. Next sprint’s stretch becomes “catch the missed hygiene item.” Watch for a second yellow.
Two yellows in a row — promote to red. Run the red protocol.
Red — core did NOT ship. This is a real signal, not a failure identity. Do this, in order:
Sunday audit (30 min quiet).
Open
99_pre_mortem/README.md. Identify which of the 8 failure modes fired.Read the corresponding pre-mortem file.
Cut the next sprint’s scope by 50%. If core was “finish P1.3 project,” next core is “finish half of P1.3 project.”
Ship SOMETHING tiny within 7 days — a 20-line commit, a 100-word post. Restore momentum before restoring scope.
If two reds in a row: pause 1 sprint. Full 2 weeks off the roadmap. Then restart the phase.
The 26 sprints — phase mapping¶
Sprint |
Weeks |
Phase |
Notes |
|---|---|---|---|
S1–S2 |
W1–W4 |
P0 refresh |
HARD GATE: ship rung 1 by end S2 |
S3–S6 |
W5–W12 |
P1 modern C++ core |
|
S7–S9 |
W13–W18 |
P2 DSA in C++ |
|
S10–S13 |
W19–W26 |
P3 systems + concurrency |
|
S14–S16 |
W27–W32 |
P4 build/test/tooling |
|
S17–S20 |
W33–W40 |
P5 C++ for ML/data |
HARD GATE: rung 6 by end S20 |
S21–S23 |
W41–W46 |
P6 production systems |
|
S24–S26 |
W47–W52 |
P7 capstone + signal |
HARD GATE: 1 offer conversation live by S26 |
Wedding-season buffer: if S15–S17 (Nov 2026–Jan 2027) get eaten by weddings/family, S18 auto-becomes a catch-up sprint. Do not panic. Do not double-book. See 08_health_burnout.md.
Anti-patterns to avoid¶
The “just one more week” trap. If core did not ship at end of sprint, do NOT extend. Ship a partial version, retro honestly, and reset scope.
The 20-hour heroic sprint. Great feeling. Kills the next 3 sprints. Cadence beats intensity.
Sprint planning without retro. Retro is where calibration happens. Skipping retro is skipping the whole point of sprints.
Silent sprints. No commit, no post, no shared artifact = the sprint did not happen from a career-signal perspective. Even a bad ship beats a good private note.