Month-by-Month — The 13-Month Campaign, One Month at a Time¶
This file is the operational spine of the fortress. It takes the M13 pitch and breaks it into thirteen calendar months, each with a theme, a primary phase, sprints, deliverables, learning targets, a portfolio-rung status, a Zoho alignment opportunity, and an India-specific warning about what real life will throw at you that month.
Read it once end-to-end so you know the shape of the year. Then treat it as a monthly ritual: on the first weekend of each month, open this file, read your month, and write your sprint intents in ../13_discipline/02_lab_notebook.md.
Two structural notes before you start:
4 buffer weeks are baked in — one per quarter (weeks 13, 26, 39, 52). They are not vacation. They are the weeks you catch up when a sprint slips, and if nothing slipped, they are the weeks you write, teach, or ship an extra piece of the portfolio. You are going to need them. Do not spend them in month 1.
The Valley of Despair is M4–M7 (Oct 2026 → Jan 2027). This is the stretch where the beginner high has worn off, the SOTA is still far away, and you are 40% done with 60% to go. Every serious learner hits it. It is named here so that when it arrives, you recognize it as a phase, not as evidence you are failing. See
../13_discipline/07_motivation_sustainment.md.
M1 — July 2026 · Refresh the Muscle¶
Theme: Rebuild the reflex. Recover the fingers.
Primary phase:
01_java_fundamentals_refreshSprints: S1 (Jul 6–19), S2 (Jul 20–Aug 2)
Deliverables:
Local dev env locked (JDK 21, IntelliJ, Maven, Git) — see
../11_tools_setup/Programs 1–25 of the 50-Programs Challenge committed to
50-programs-javaon GitHubLab notebook initialized with S1 and S2 entries —
../13_discipline/02_lab_notebook.md
Learning targets: Java 17→21 syntax refresh (records, sealed,
var, switch expressions, text blocks), type system, collections, streams intro, exception handling.Portfolio rung status: Rung 1 (50 Programs Repo) is in progress. Not due yet.
Zoho alignment opportunity: Quiet quarter. Do not announce anything. Read your team’s Java repos in your spare 30 minutes. Take one Java-repo PR reviewer role if offered casually.
India-specific warning: Chennai monsoon setup is fine; no wedding-season pressure yet. If your Zoho quarterly review lands in July, do not let it eat this month — most of the plan’s work here is evenings, not weekends.
Monthly exit check (write in lab notebook by Jul 31):
25 programs committed with tests
Can explain records vs classes without notes
IntelliJ shortcuts feel automatic (rename, extract method, inline)
Two lab-notebook sprint retros written
M2 — August 2026 · Ship Rung 1¶
Theme: Close Phase 01. Ship the first public artifact.
Primary phase:
01_java_fundamentals_refresh→02_core_java_dsaSprints: S3 (Aug 3–16), S4 (Aug 17–30)
Deliverables:
Rung 1 — 50-Programs Repo shipped by Aug 31. README, tests, and a
LEARNINGS.mddocumenting the three programs that hurt most. See../12_portfolio/01_rung1_fifty_programs_repo.md.First blog post on Hashnode: “What 50 tiny programs taught me about Java after 2 years off” (target 800–1,200 words).
Phase 02 kickoff — first 20 arrays/strings problems on your DSA repo.
Learning targets: IO, exception hierarchies, Collections deep (
ArrayDeque>LinkedList, TreeMap/HashMap tradeoffs), start of DSA reflex.Portfolio rung status: ✅ Rung 1 due Aug 31, 2026.
Zoho alignment opportunity: Still quiet. If you review a Java PR, leave one comment that references a specific pattern from Phase 01 (e.g. “this could be a record”). Nothing more.
India-specific warning: Independence Day long weekend (Aug 15) — plan it as a Rung 1 finishing weekend, not a vacation. This is the single most important weekend in Q1.
Monthly exit check:
Rung 1 repo public, README polished, pinned on GitHub
Hashnode post live with canonical URL claimed
DSA repo has 20+ solutions with pattern tags
M3 — September 2026 · DSA Reflex¶
Theme: Grind the DSA muscle. No frameworks, no shortcuts.
Primary phase:
02_core_java_dsaSprints: S5 (Aug 31–Sep 13), S6 (Sep 14–27)
Deliverables:
60+ new DSA solutions across arrays, strings, linked lists, stacks, queues (running total ≈ 80).
MiniCollectionslibrary scaffolded —MiniArrayListimplementation with tests. See../12_portfolio/03_rung3_minicollections_library.md.One JMH micro-benchmark:
ArrayListadd vsLinkedListadd at n=10k. Result checked intoresults/.
Learning targets: Complexity analysis without hand-waving,
Arrays.sortprimitives vs objects (dual-pivot Quicksort vs TimSort), theLinkedListtrap, iterator invalidation.Portfolio rung status: Rung 2 (DSA 150) is in progress. Rung 3 is starting.
Zoho alignment opportunity: Q2 begins — measure. Start a private note on which internal services are Java, which are Python, and where the seams are. Do not share yet.
India-specific warning: Ganesh Chaturthi and pitru paksha fall in this month depending on the year — if family expects visits, front-load DSA work to the first two weekends.
Monthly exit check:
80+ DSA solutions, each with time/space complexity in a code comment
MiniArrayListpasses 20+ unit tests, resize logic worksLab notebook has one entry that says “this benchmark surprised me because ___”
M4 — October 2026 · Trees, Graphs, and the Ship of Rung 2¶
Theme: The hardest DSA month. Trees and graphs teach recursion or they break you.
Primary phase:
02_core_java_dsa→03_oop_design_patterns_modern_javaSprints: S7 (Sep 28–Oct 11), S8 (Oct 12–25), Q1 Buffer Week (Oct 26–Nov 1)
Deliverables:
Rung 2 — DSA GitHub with 150 pattern-tagged solutions by Oct 31. See
../12_portfolio/02_rung2_dsa_github.md.MiniHashMapimplementation with resize logic and unit tests.Phase 03 opener: first pass through
01_oop_first_principles.mdand02_solid_in_practice.md.
Learning targets: Trees (BST, traversals, balanced trees intro), graphs (BFS/DFS, topological sort), the 20 DP problems (from Phase 02, file 05), Comparator/Comparable properly.
Portfolio rung status: ✅ Rung 2 due Oct 31, 2026. Rung 3 halfway.
Zoho alignment opportunity: Still measuring. If your Q3 planning at Zoho starts in October, ask (once, casually) whether the team has any Java-integration items on the backlog. Do not push.
India-specific warning: Diwali falls in this month. Wedding season also opens in late October. Q1 buffer week is here for a reason — use it if Diwali/family eats a sprint. If you are hosting or traveling for Diwali, cut the target to 120 DSA solutions and use the buffer week to finish.
Monthly exit check:
Rung 2 repo has 150 solutions, pattern tags, per-solution complexity comments
MiniHashMaphandles collisions and resizePhase 03 first two files read and one paragraph summary written per file
Q1 review written: what worked, what slipped, what changes for Q2
M5 — November 2026 · OOP That Isn’t Ceremony · Valley of Despair Begins¶
Theme: OOP the way modern Java actually uses it — records, sealed types, pattern matching. Not textbook GoF ceremony.
Primary phase:
03_oop_design_patterns_modern_javaSprints: S9 (Nov 2–15), S10 (Nov 16–29)
Deliverables:
Read Phase 03 files 01–04 with running notes.
Refactor the smelly ORDER PROCESSOR (from Phase 03
projects.md) into a records + sealed-interface + pattern-matching design. Push torefactor-catalogrepo.Draft outline for Rung 4 blog: “Modern Java refactoring case study — before, after, and what I got wrong.”
Learning targets: SOLID in practice (not doctrine), records/sealed/pattern-matching, GoF patterns that are dead in Java 21 (Visitor, template method for simple dispatch, most Factories).
Portfolio rung status: Rung 3 finishing, Rung 4 outlining.
Zoho alignment opportunity: Q3 approaches — propose. Draft (do not send) a one-paragraph “here’s a small Java integration I could own” note to your manager. You send it in December, not now.
India-specific warning: ⚠️ Wedding season is fully open (Nov 2026 – Feb 2027 = M5–M7). Every one of these three months will have at least one weekend eaten by a wedding. Plan for 8–10 hours/week average during these months instead of 12–13. The 4-hour weekend block will be the one that survives. Also: Valley of Despair begins here. You will feel like you are learning nothing. This is normal — see
../13_discipline/07_motivation_sustainment.md.Monthly exit check:
Refactor-catalog repo has ≥1 substantial before/after
Notes on Phase 03 files 01–04 written
You noticed the Valley of Despair and did not pivot to a new topic
M6 — December 2026 · Ship Rung 4, Enter Functional Java¶
Theme: Finish the refactor case study. Cross into generics and streams.
Primary phase:
03_oop_design_patterns_modern_java→04_generics_streams_functionalSprints: S11 (Nov 30–Dec 13), S12 (Dec 14–27)
Deliverables:
Rung 4 — Modern Java Refactoring Case Study shipped (repo + Hashnode blog) by Dec 27. See
../12_portfolio/04_rung4_modern_java_refactor.md.First pass of Phase 04 files 01 (generics) and 02 (functional interfaces).
MiniCollectionsgetsMiniLinkedList— the file that teaches you why you never useLinkedListin real code.
Learning targets: Generics bounded wildcards, PECS, functional interfaces (
Function,Predicate,Supplier,Consumer), method references,Comparator.comparingchains.Portfolio rung status: ✅ Rung 4 due Dec 27, 2026. Rung 3 close to done.
Zoho alignment opportunity: Propose. Send that one-paragraph note to your manager in the second week of December, ideally right after the annual review conversation. Frame it as “small, contained, one quarter.”
India-specific warning: Christmas + New Year long weekend is your annual reset weekend. Wedding season is still active. Do not target Rung 4 for Dec 31 — target it for Dec 27 so you have a genuine break.
Monthly exit check:
Rung 4 repo public, blog post live
Phase 04 files 01, 02 complete
MiniLinkedListshipped, JMH shows it losing toArrayDeque— screenshot in blogEnd-of-year review written in lab notebook
M7 — January 2027 · Streams, Optional, and the Half-Way Line¶
Theme: Halfway through the campaign. Streams and Optional the honest way.
Primary phase:
04_generics_streams_functionalSprints: S13 (Dec 28–Jan 10), S14 (Jan 11–24), Q2 Buffer Week (Jan 25–31)
Deliverables:
Phase 04 files 03 (streams), 04 (Optional), 05 (concurrency primer) complete.
log-analyzerproject shipped — reads a 1M-line log file, produces top-N stats, compares stream vs for-loop with JMH numbers. Includes a parallel streams considered harmful section.Halfway retro written in lab notebook and published as a Hashnode post: “6 months into 13 — what I got wrong.”
Learning targets: Stream honest guide (parallel streams often harmful, terminal ops,
Collectors),Optionaldone right (never as a field, never with.get()).Portfolio rung status: Rung 5 (Concurrency Playground) is about to begin. All prior rungs shipped or nearly so.
Zoho alignment opportunity: Q3 execution — own. If your manager approved a Java integration item in December, this is the month you start the design doc.
India-specific warning: Pongal (mid-January) is a hard family week for Tamil families — plan the buffer week around it. Wedding season winds down toward end of month.
Monthly exit check:
Phase 04 complete
log-analyzerrepo with JMH results inresults/Halfway blog post live
Q2 review written: what you’re bringing into Q3
M8 — February 2027 · Concurrency · 🚨 HARD GATE 🚨¶
Theme: The single most differentiating month of the entire plan. Threads, virtual threads, executors, locks.
Primary phase:
05_concurrency_multithreadingSprints: S15 (Feb 1–14), S16 (Feb 15–28)
Deliverables:
Read all of Phase 05, files 01–06.
🚨 Rung 5 — Concurrency Playground (HARD GATE) shipped by Feb 28, 2027. Rate limiter (token bucket) + platform-thread vs virtual-thread benchmark. See
../12_portfolio/05_rung5_concurrency_playground.mdand../12_portfolio/09_hard_gates.md.Second Hashnode post: “Virtual threads on Java 21 — what actually pins, and what actually scales.”
Learning targets: JMM happens-before,
synchronizedvsReentrantLock(virtual-thread pinning on 21), executors and thread pools (nevernewFixedThreadPoolwith default queue), virtual threads (Project Loom),ScopedValue>ThreadLocal.Portfolio rung status: ✅ HARD GATE — Rung 5 due Feb 28, 2027. If you miss this, everything after it is downstream damage. Use Q2 buffer week (Jan 25–31) preemptively if you sense slippage.
Zoho alignment opportunity: Own the Java integration item quietly. Do not slip its deadline for Rung 5 — but also do not slip Rung 5 for it. They must both ship. If you have to choose, ship Rung 5 first.
India-specific warning: Wedding season closes in mid-Feb. Chennai starts warming up. If your Zoho quarterly deadline collides with Feb 28, you have a real problem — see the 3-response manager scenario in
06_background_alignment.md.Monthly exit check:
🚨 Rung 5 shipped by Feb 28 with README, benchmarks, virtual-thread analysis
All of Phase 05 read with notes
Blog post on virtual threads live
You feel the difference: this is where you started looking like a senior
M9 — March 2027 · JVM Internals, Profilers, Reverts¶
Theme: The month you become the person on the team who reads flame graphs.
Primary phase:
06_jvm_internals_performanceSprints: S17 (Mar 1–14), S18 (Mar 15–28)
Deliverables:
Read all of Phase 06, files 01–06.
Rung 6 — JVM Performance Case Study shipped by Mar 31. Includes at least one reverted optimization (senior signal). See
../12_portfolio/06_rung6_jvm_performance_case_study.md.Profile Rung 5’s rate limiter with Async Profiler. Publish the flame graphs.
Learning targets: JVM architecture, G1/ZGC/Shenandoah trade-offs, JIT and escape analysis, Async Profiler (not VisualVM), JMH properly, common production pathologies (metaspace leaks,
newFixedThreadPoolOOMs).Portfolio rung status: ✅ Rung 6 due Mar 31, 2027. Rung 7 preparation begins.
Zoho alignment opportunity: If you can profile a real internal Zoho service (with permission), the case study becomes 3x stronger. Ask. The worst answer is no.
India-specific warning: Holi mid-month (some years). Chennai heat begins — see M10.
Monthly exit check:
Rung 6 repo has ≥3 flame graphs, ≥1 reverted optimization, JMH results
Phase 06 fully read
You have run Async Profiler at least 5 times on real code
Q3 review written
M10 — April 2027 · Spring Boot, For Real¶
Theme: Enter the enterprise. Spring Boot 3.4, records-as-DTOs,
RestClient, JPA.Primary phase:
07_enterprise_spring_dataSprints: S19 (Mar 29–Apr 11), S20 (Apr 12–25), Q3 Buffer Week (Apr 26–May 2)
Deliverables:
Read Phase 07 files 01 (Spring Boot fundamentals), 02 (REST APIs), 03 (JPA), 04 (testing).
Scaffold the URL Shortener service (Rung 7) — see
../12_portfolio/07_rung7_url_shortener_service.md. Postgres + Redis + JWT. Testcontainers on day one, notH2.Blog post: “Testcontainers is the answer.
H2is a lie.”
Learning targets: Spring Boot fundamentals, REST layer (records as DTOs), JPA/Hibernate honest edition (N+1,
@EntityGraph), full-stack testing (Testcontainers +@ServiceConnection).Portfolio rung status: Rung 7 scaffolded.
Zoho alignment opportunity: Own — your Java integration item from Q3 should be shipping or shipped. Do a small internal talk or write-up.
India-specific warning: ⚠️ Chennai heat begins. April/May/June the city is 38–42°C. Your evening energy will drop. Move deep-work blocks to 6–8am if you can. Hydrate — your body will lie to you about how tired it is. See
../13_discipline/08_health_burnout.md.Monthly exit check:
URL Shortener scaffolded, one REST endpoint working with Postgres + Testcontainers
Phase 07 files 01–04 read
You wrote Testcontainers into your test suite, not
H2
M11 — May 2027 · Ship Rung 7, Enter Distributed¶
Theme: URL Shortener production-ready. Cross into distributed patterns and Kafka.
Primary phase:
07_enterprise_spring_data→08_distributed_systems_applied_integrationSprints: S21 (May 3–16), S22 (May 17–30)
Deliverables:
Rung 7 — URL Shortener Service shipped by May 31. Spring Boot 3.4 + Postgres + Redis + JWT + Prometheus + OpenTelemetry + Testcontainers + Docker Compose. See
../12_portfolio/07_rung7_url_shortener_service.md.Import Rung 5’s rate limiter into Rung 7 (cross-rung citation reads as seniority).
Read Phase 07 files 05–07 and Phase 08 files 01–02.
Begin M13 pitch rehearsal — see
07_thirteen_month_pitch.md.
Learning targets: Security the practical way (Spring Security 6 filter chain, JWT), observability (Micrometer + OTel), config and deployment (Application CDS > native for long-running pods), microservices patterns (Resilience4j, not Hystrix), Kafka (KRaft, not ZooKeeper).
Portfolio rung status: ✅ Rung 7 due May 31, 2027. Rung 8 begins scaffolding.
Zoho alignment opportunity: Ask (once) if you can help review a Java service inside Zoho. Bring the URL Shortener as your evidence you can do it responsibly.
India-specific warning: Peak Chennai heat. Buddha Purnima and Ramzan festivals in some years. Keep evening blocks light, do the hard thinking in early morning.
Monthly exit check:
Rung 7 shipped with all 7 stack components working, screenshots in README
Rung 5 rate limiter is imported in Rung 7 (single source of truth)
Phase 08 files 01, 02 read
First M13 pitch draft written (30-sec version)
M12 — June 2027 · ML Capstone Foundation¶
Theme: Java + ONNX. The month that makes your M13 pitch rare.
Primary phase:
08_distributed_systems_applied_integrationSprints: S23 (May 31–Jun 13), S24 (Jun 14–27)
Deliverables:
Read Phase 08 files 03–07.
Rung 8 — ML Capstone (in progress). ONNX Runtime Java loading a model, Spring Boot 3.4 endpoint serving it, Testcontainers-backed integration test. See
../12_portfolio/08_rung8_ml_capstone.md.Portfolio landing page drafted — see
../12_portfolio/11_the_portfolio_landing_page.md.
Learning targets: Caching and state (Redis/Valkey), Java for ML (DJL vs ONNX-RT-Java direct — per-model decision), serving models from Java, cloud-native Kubernetes (readinessProbe vs livenessProbe).
Portfolio rung status: Rung 8 halfway.
Zoho alignment opportunity: If your team runs any inference in production, ask (respectfully) if you can shadow a service call for a week. This is your bridge from Zoho ML work into a Java ML story.
India-specific warning: Chennai heat peaks. Do not schedule capstone crunch weekends where you sit in a room with no AC. Your laptop will thermal-throttle, and so will you. This is real, not metaphor.
Monthly exit check:
Rung 8 has a working ONNX endpoint returning predictions
Portfolio landing page drafted
Phase 08 read completely
Two M13 pitch versions rehearsed out loud
M13 — July 2027 · Ship Rung 8 · 🚨 HARD GATE 🚨¶
Theme: Finish. Publish. Pitch.
Primary phase:
08_distributed_systems_applied_integrationSprints: S25 (Jun 28–Jul 11), S26 (Jul 12–25), Q4 Buffer Week (Jul 26–Aug 1)
Deliverables:
🚨 Rung 8 — ML Capstone on Kubernetes (HARD GATE) shipped by Jul 31, 2027. ONNX-serving microservice, deployed to k3d/minikube, JMH latency benchmark, Prometheus dashboard, README with architecture diagram and lessons learned. See
../12_portfolio/09_hard_gates.md.Portfolio landing page live.
LinkedIn headline + bio updated to reflect the M13 pitch — see
07_thirteen_month_pitch.md.Final blog post: “13 months of Java, one shipped ML service — what I built and what it cost.”
Learning targets: Whatever plugs your specific capstone’s gaps. This is not a learning month; it is a finish and ship month.
Portfolio rung status: ✅ HARD GATE — Rung 8 due Jul 31, 2027. All 8 rungs shipped.
Zoho alignment opportunity: The internal case for you being the Java-ML person is now empirical, not aspirational. Have the promotion or scope conversation in early August, not July — do not let it eat capstone weeks.
India-specific warning: Peak monsoon in Chennai (well, more like Aug — July is transition). Your body has been running for 13 months. Q4 buffer week is real rest. Take it. Do not use it to add features to Rung 8.
Monthly exit check:
🚨 Rung 8 shipped by Jul 31
Portfolio landing page live
All 6 versions of the M13 pitch rehearsed
The M13 pitch sentence can be said in one breath without notes
You wrote a closing lab notebook entry that includes the sentence “I did the thing.”
The Four Buffer Weeks (Non-Negotiable)¶
Buffer week |
Dates |
Purpose |
|---|---|---|
Q1 buffer |
Oct 26 – Nov 1, 2026 |
Catch up on Phase 02, absorb Diwali overrun. |
Q2 buffer |
Jan 25 – 31, 2027 |
Absorb wedding season, prepare for Rung 5 hard gate. |
Q3 buffer |
Apr 26 – May 2, 2027 |
Absorb Chennai heat energy loss, prepare for Rung 7. |
Q4 buffer |
Jul 26 – Aug 1, 2027 |
Rest after Rung 8. Do not use to add scope. |
If a quarter goes clean and you don’t need the buffer to catch up, spend the buffer week writing — a long-form post, a talk proposal, a teaching gist. Do not spend it starting a new project.
The Valley of Despair¶
M4 → M7 (Oct 2026 → Jan 2027). Four consecutive months. The beginner high has worn off, you are 30–55% through the plan, and the finish line is still invisible. You will be tempted to pivot — to Rust, to Go, to a new framework, to “maybe I should do a course instead.” Do not. The Valley is not evidence the plan is wrong; it is evidence you are exactly where a serious learner is at month five. Read ../13_discipline/07_motivation_sustainment.md on the first day of M5 and again on the first day of M7. It is written for those two mornings specifically.
Return to 00_command README · Next: 02_sprint_calendar.md