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.md for 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 OutOfMemoryError to 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

50 Programs Repo

M2

Aug 2026

01

Commitment, fluency, no-AI muscle memory

2

DSA Repo — 150 solutions + pattern tags

M4

Oct 2026

02

study-ready, pattern-thinking

3

MiniCollections Library

M4-M5

Oct-Nov 2026

02-03

Implementation-from-scratch, generics fluency

4

Modern-Java Refactor Case Study

M5-M6

Nov-Dec 2026

03-04

Design taste, ability to modernize legacy code

5

🚨 Concurrency Playground

M7-M8

Jan-Feb 2027

05

Senior-signal — HARD GATE

6

JVM Performance Case Study

M9

Mar 2027

06

Deep-JVM, profiling, flame graphs

7

Production URL Shortener

M11

May 2027

07

Full-stack Spring, real HTTP service

8

🚨 ML Capstone on Kubernetes

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

README.md (this file)

Overview, philosophy, the ladder table

01_rung1_fifty_programs_repo.md

50 hand-typed programs, one repo, pinned

02_rung2_dsa_github.md

150 DSA solutions organized by pattern

03_rung3_minicollections_library.md

ArrayList / HashMap / LinkedList / PriorityQueue re-implemented from scratch

04_rung4_modern_java_refactor.md

Take a Java 8 codebase, rewrite it in Java 21. Blog the diff.

05_rung5_concurrency_playground.md

Rate limiter + virtual-threads benchmark. HARD GATE.

06_rung6_jvm_performance_case_study.md

Real profiling. Real flame graphs. Blog the before/after.

07_rung7_url_shortener_service.md

Full Spring Boot service. Deployed. Public URL.

08_rung8_ml_capstone.md

Java microservice serving an ML model on Kubernetes. HARD GATE.

09_hard_gates.md

Why Rungs 5 and 8 are non-negotiable. What to cut if you slip.

10_publishing_and_visibility.md

Where to publish. GitHub, LinkedIn, Medium, Hashnode, dev.to. India-specific channels.

11_the_portfolio_landing_page.md

Template for raghulr2003.dev — hero, rung cards, current focus, contact.

The Rules for Every Rung

  1. 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.

  2. Commit history that tells a story. Not one giant Initial commit. Real, dated, incremental commits over the month you built it.

  3. Working CI on every repo. GitHub Actions, green badge in the README. If it doesn’t build in CI, it doesn’t build.

  4. Pinned on your profile as soon as it ships. GitHub gives you 6 pinned slots. Fight for them. See 10_publishing_and_visibility.md for pinning strategy.

  5. 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.

  6. 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