Directory 12 — The Portfolio Ladder¶
Timeline: All 13 months (July 2026 → July 2027) Total artifacts: 8 public rungs — every one linkable, verifiable, dated
Why This Directory Exists¶
Studying Java for 13 months and having nothing to show for it is the single most common failure mode of long prep plans. You will read books, watch talks, grind LeetCode, and at month 12 you’ll open a recruiter’s DM that says “send me a link to your work” — and freeze.
This directory prevents that. It defines eight concrete, publicly-hosted artifacts you will ship on specific calendar months. Each rung is a checkpoint. Each rung has a URL an study partner can open in a browser. Each rung produces a signal you can point at when someone asks “what have you built recently?”
Reading this directory does not build the ladder. Writing code, pushing commits, and publishing posts builds the ladder. These files tell you what to build, when, where to host it, and how you know it’s done.
The Philosophy¶
Rungs are:
Public. Private GitHub repos do not count. If a recruiter cannot open it in an incognito window without logging in, it does not exist.
Verifiable. Each rung has 5-8 acceptance checkboxes. You mark them off. You don’t get to hand-wave.
Specific. Not “a project about concurrency.” A rate limiter with a benchmarking harness comparing platform threads vs virtual threads, pushed to
github.com/RaghulR2003/java-concurrency-playground.Progressive. Rung 1 is beginner-accessible — anyone can start it in week 2. Rung 8 is a senior-signal artifact — it should look impossible on day one and inevitable by month 13.
Time-boxed. Each rung is anchored to a calendar month. If a rung slips two months, it starves the rungs behind it. See
09_hard_gates.mdfor the two rungs where slippage kills the whole plan.
The M13 Pitch (Your One-Sentence Story)¶
“I can debug a 15-year-old Java monolith, refactor it toward modern patterns, and ship new services that survive the next 10 years — from
OutOfMemoryErrorto deployment.”
Every rung is a fragment of evidence for that sentence. Rung 6 is the OutOfMemoryError part. Rung 4 is the refactor part. Rung 8 is the deployment part. When someone asks you to prove the pitch, you don’t argue — you send them eight links.
The Ladder At A Glance¶
Rung |
Artifact |
Month |
Calendar |
Phase |
Signal |
|---|---|---|---|---|---|
1 |
M2 |
Aug 2026 |
01 |
Commitment, fluency, no-AI muscle memory |
|
2 |
M4 |
Oct 2026 |
02 |
study-ready, pattern-thinking |
|
3 |
M4-M5 |
Oct-Nov 2026 |
02-03 |
Implementation-from-scratch, generics fluency |
|
4 |
M5-M6 |
Nov-Dec 2026 |
03-04 |
Design taste, ability to modernize legacy code |
|
5 |
M7-M8 |
Jan-Feb 2027 |
05 |
Senior-signal — HARD GATE |
|
6 |
M9 |
Mar 2027 |
06 |
Deep-JVM, profiling, flame graphs |
|
7 |
M11 |
May 2027 |
07 |
Full-stack Spring, real HTTP service |
|
8 |
M13 |
Jul 2027 |
08 |
The M13 pitch — HARD GATE |
🚨 Hard gates (non-negotiable): Rung 5 by end of M8 and Rung 8 by end of M13. Missing these is the difference between “I studied Java for a year” and “I am a Java engineer who can ship.” See 09_hard_gates.md for the deep-dive on why these two matter more than the other six combined.
How This Directory Is Organized¶
File |
What It Covers |
|---|---|
|
Overview, philosophy, the ladder table |
|
50 hand-typed programs, one repo, pinned |
|
150 DSA solutions organized by pattern |
|
ArrayList / HashMap / LinkedList / PriorityQueue re-implemented from scratch |
|
Take a Java 8 codebase, rewrite it in Java 21. Blog the diff. |
|
Rate limiter + virtual-threads benchmark. HARD GATE. |
|
Real profiling. Real flame graphs. Blog the before/after. |
|
Full Spring Boot service. Deployed. Public URL. |
|
Java microservice serving an ML model on Kubernetes. HARD GATE. |
|
Why Rungs 5 and 8 are non-negotiable. What to cut if you slip. |
|
Where to publish. GitHub, LinkedIn, Medium, Hashnode, dev.to. India-specific channels. |
|
Template for |
The Rules for Every Rung¶
Public GitHub with a real README. No “TODO: add description.” The README explains what the project is, how to run it, what you learned, and links to the blog post if there is one.
Commit history that tells a story. Not one giant
Initial commit. Real, dated, incremental commits over the month you built it.Working CI on every repo. GitHub Actions, green badge in the README. If it doesn’t build in CI, it doesn’t build.
Pinned on your profile as soon as it ships. GitHub gives you 6 pinned slots. Fight for them. See
10_publishing_and_visibility.mdfor pinning strategy.Announced. LinkedIn post + dev.to/Hashnode post at minimum for rungs 4, 5, 6, 7, 8. Rungs 1-3 are exercises; rungs 4-8 are products.
Linked from your portfolio page. By M6,
raghulr2003.dev(or the GitHub Pages equivalent) exists and lists every rung shipped so far.
Success Metric For This Directory¶
At the end of M13, a recruiter opens your GitHub profile in an incognito tab and, without clicking into a single repo, can see:
6 pinned repos with real descriptions and star counts above zero
A commit graph that is green for most of the last 13 months
A link to a portfolio page that reads like a story, not a résumé
That is the win condition. Everything in this directory is designed to produce that screenshot.
Return to ../README.md · Next: 01_rung1_fifty_programs_repo.md