North-Star Artifacts — The Eight Portfolio Rungs

This file is the promotional trailer for your career at M13. Everything else in the fortress is preparation; the eight rungs are the evidence. When a Zoho hiring manager, a Freshworks recruiter, or a Razorpay senior engineer opens your GitHub in August 2027, they are going to look at exactly these eight repositories and decide, in about six minutes, whether you are a person who has walked the walk.

The rungs are engineered to progress from beginner-accessible (Rung 1) to expert-signal (Rung 8). They are engineered to cross-cite each other — Rung 7 imports Rung 5’s rate limiter, Rung 6 profiles Rung 5’s code, Rung 8 uses virtual threads from Rung 5 and Spring patterns from Rung 7. That cross-citation is the shape of the portfolio, and shape reads as seniority. Parallel rungs of similar signal read like a coursework dump; the ladder reads like a career.

Two of the eight are hard gates — non-negotiable by their due date. They are flagged 🚨 in the table below and detailed in ../12_portfolio/09_hard_gates.md. If you have to sacrifice a rung, sacrifice one of the six non-gate rungs. Never a gate.


The Ladder

Rung

Artifact

Due (calendar)

Phase source

Publishes at

Signal

Detailed spec

1

50-Programs Repo

Aug 31, 2026 (M2)

01

GitHub 50-programs-java + Hashnode

You can type Java again. Consistency proven.

../12_portfolio/01_rung1_fifty_programs_repo.md

2

DSA GitHub — 150 pattern-tagged

Oct 31, 2026 (M4)

02

GitHub java-dsa + Hashnode explainers

You can reason in Java without a framework.

../12_portfolio/02_rung2_dsa_github.md

3

MiniCollections Library

Nov 30, 2026 (M5)

02

GitHub mini-collections

You understand what ArrayList and HashMap do.

../12_portfolio/03_rung3_minicollections_library.md

4

Modern Java Refactoring Case

Dec 27, 2026 (M6)

03

GitHub refactor-catalog + Hashnode blog

You can read legacy Java and improve it.

../12_portfolio/04_rung4_modern_java_refactor.md

🚨 5

Concurrency Playground

Feb 28, 2027 (M8)

05

GitHub concurrency-playground + Hashnode

First unmistakably-senior signal.

../12_portfolio/05_rung5_concurrency_playground.md

6

JVM Performance Case Study

Mar 31, 2027 (M9)

06

GitHub jvm-perf-case-study + Hashnode

You read flame graphs. You publish reverts.

../12_portfolio/06_rung6_jvm_performance_case_study.md

7

URL Shortener Service

May 31, 2027 (M11)

07

GitHub url-shortener-service + live demo (Railway/Fly.io)

You ship production-shaped Spring services.

../12_portfolio/07_rung7_url_shortener_service.md

🚨 8

ML Capstone on Kubernetes

Jul 31, 2027 (M13)

08

GitHub java-ml-capstone + Hashnode + portfolio landing page

The M13 pitch. The rare-in-the-world artifact.

../12_portfolio/08_rung8_ml_capstone.md


Why These Eight (And Not Others)

Each rung has a specific job:

  1. Rung 1 proves you can type Java daily. Nothing more, nothing less. It reads as commitment.

  2. Rung 2 proves you can reason about complexity in raw Java. This is the study-DSA table stakes for Indian product companies.

  3. Rung 3 proves you understand the standard library from the inside. The moment you have implemented ArrayList.grow and HashMap.resize, you can never again say “I use it, but I don’t know how it works.”

  4. Rung 4 proves you can read a codebase you didn’t write and improve it. This is the single most-tested skill in senior-engineer studies and nobody teaches it explicitly.

  5. Rung 5 (🚨) proves you understand concurrency past the tutorial layer. This is where hiring managers stop reading resumes and start reading code. It is the first rung that is visibly hard.

  6. Rung 6 proves you measure. A reverted optimization in your commit history is worth more than three green benchmarks — it says “I ran the experiment, I read the number, I did the honest thing.”

  7. Rung 7 proves you can ship a production-shaped Spring service. Auth, observability, tests with Testcontainers, config, Docker Compose. This is the artifact that answers “can you actually build the thing you would be paid to build.”

  8. Rung 8 (🚨) proves you can do all of the above in service of ML. This is the one that makes the M13 pitch rare in the world. Applied-ML engineers who can also ship Java services are a tiny population globally. This rung says “I am one of them.”


The Two Hard Gates — Called Out

🚨 HARD GATE 1 — Rung 5 (Concurrency Playground) — Feb 28, 2027

This rung is load-bearing for Rungs 6, 7, and 8. Rung 6 profiles Rung 5’s code. Rung 7 imports Rung 5’s rate limiter as a Maven dependency. Rung 8 uses the virtual-thread patterns you developed here.

If you slip this, you are not slipping one artifact — you are compressing the last five months by 4–6 weeks.

Acceptance is specified in ../12_portfolio/05_rung5_concurrency_playground.md and enforced in ../12_portfolio/09_hard_gates.md.

🚨 HARD GATE 2 — Rung 8 (ML Capstone on K8s) — Jul 31, 2027

The M13 pitch sentence — “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” — is empty without this rung. Rungs 1–7 read as “I studied Java for a year.” Rung 8 reads as “I built a Java-native ML service that would fit inside a real production stack.”

If Rung 8 is not shipped by Jul 31, 2027, extend the plan by 4 weeks and finish it. Do not skip it.

Acceptance is specified in ../12_portfolio/08_rung8_ml_capstone.md.


The Cross-Citation Map (This Is What Reads As Seniority)

What the diagram forces you to do:

  • Rung 5’s rate limiter is published as a Maven artifact (even if just locally installed) so Rung 7 can mvn dependency it. This detail alone — “published my own JAR” — is a senior signal.

  • Rung 6 profiles Rung 5’s code, not synthetic code. The flame graph in the case study shows your own threads, your own lock contention. study partners can tell the difference.

  • Rung 8 imports both Rung 5 and Rung 7 patterns. In the capstone README, you cite them by GitHub URL. That cross-linking is what makes eight repositories read as one engineer’s arc rather than eight disconnected projects.


Where Each Rung Gets Published

See ../12_portfolio/10_publishing_and_visibility.md for the full publishing plan, but the short version is:

  • Every rung → GitHub repo, public, with pinned status decided by the rotation table in 10_publishing_and_visibility.md

  • Rungs 1, 4, 5, 6, 7, 8 → Hashnode long-form post (Hashnode > Medium > dev.to for Indian Java devs; see the Echo agent findings in ../09_resources/)

  • Rungs 5, 7, 8 → LinkedIn ship announcement (short, artifact-linked, one per rung, ~15–20 posts across 13 months total — India recruiter market is LinkedIn-dominant)

  • Rung 8 → Portfolio landing page — ../12_portfolio/11_the_portfolio_landing_page.md


The Specificity Gradient (What Gets Harder Rung by Rung)

Dimension

Rungs 1–2

Rungs 3–4

Rungs 5–6

Rungs 7–8

Language surface

core Java 21

+ records/sealed

+ concurrency + JVM primitives

+ Spring + JPA + Kafka + K8s + ONNX

Failure mode

typo / logic bug

design smell

race / OOM / thread pin

prod incident (probe misconfig, N+1, cascading restart)

Test discipline

unit

unit + refactor

JMH + concurrency stress tests

Testcontainers + integration + load test

Public artifact form

repo + README

repo + blog post

repo + blog + benchmark tables

repo + blog + live demo + K8s manifests

Employer signal

“finishes stuff”

“reads codebases”

“peer, not student”

“could ship in production week one”

By the time you get to Rung 8, the artifact is the resume. The resume is a footnote.


What Not To Do With The Ladder

  • Do not add a Rung 9. The temptation in M12 will be to add a Kafka-native rung or a GraalVM native-image rung. Do not. Ship Rung 8 clean instead. See ../99_pre_mortem/07_fm_scope_creep_and_shiny_objects.md.

  • Do not skip Rung 3. Skipping the MiniCollections library is the single most tempting shortcut because “I understand HashMap well enough.” You do not. Ship it.

  • Do not privatize any rung. Every rung is public. A private rung is an aspiration; a public rung is evidence. If you cannot publish because your Zoho employer’s IP rules restrict it, the artifact should not touch Zoho code — by design, every rung in this ladder is generic enough to be public.


Return to 00_command README · Previous: 02_sprint_calendar.md · Next: 04_weekly_rhythm.md