Why 90 days
Ninety days is not a promise to replace a full academy or bootcamp, master the fundamentals, or secure a job. It is a deliberately narrow sprint: one language, one framework, and one deployed project you can explain without the AI beside you. Use copilots for repetitive work and fast feedback, but prioritize review, tests, and a written record of failures. Continue filling foundational gaps after the sprint.
The 90 days, in 4 phases
| Phase | Window | Deliverable |
|---|---|---|
| Phase 1 — Environment | Week 1~2 | Local + cloud + Git wired, AI copilot loop habituated |
| Phase 2 — Language & Framework | Week 3~6 | One language + one framework feel native to your fingers |
| Phase 3 — Real project | Week 7~11 | One service an outside user can run |
| Phase 4 — Resume & apply | Week 12~13 | Resume, portfolio, and an application-response log |
Phase 1 — Environment
- VS Code + Cursor + GitHub Copilot or Claude Code
- WSL2 (Windows) or macOS as a baseline
- A 3-minute mental model of HTTP, DNS, and TLS — depth comes later
- The AI pair-programming loop: you choose the structure, AI scaffolds, you review.
If you stall in week 1, the 90 days collapse. Force yourself to complete one full cycle — git clone → run locally → push → deploy — before the first week ends.
Phase 2 — Language & Framework
Three tracks. Pick one, then 4 weeks of total commitment.
| Track | Best fit | Core stack |
|---|---|---|
| Node.js | Broad server ecosystem; verify against target listings | TypeScript + NestJS or Hono |
| Python | AI/data adjacency | FastAPI + Pydantic |
| Go | Infra & high-perf | Gin + sqlc |
Weekly artifacts:
- Week 3: single-route API with one DB table CRUD
- Week 4: auth + middleware + error handling
- Week 5: external API + queue (OpenWeather, Telegram, etc.)
- Week 6: tests + Docker + GitHub Actions CI
Phase 3 — Real project
This is the inflection. Build for one defined user and one recurring workflow, then recruit a small number of testers. Avoid arbitrary user or revenue targets and do not treat a to-do clone as proof by itself.
Reasonable categories:
- A career×AI tool (a niche workflow automated for one profession)
- A small SaaS that processes payments end-to-end
- An open-source library shipped on npm or PyPI
Project checklist:
- Auth (email + OAuth)
- DB schema + migrations
- API surface (REST or tRPC)
- Payments (Stripe or Toss)
- Deploy + custom domain + HTTPS
- README + usage docs + 60-second demo
Decision rule: add payments only when the chosen problem needs them. Implement test-mode failures and refunds, then document the trade-off. Payments do not guarantee stronger hiring outcomes; observability, security, or tests may be the more useful depth signal.
Phase 4 — Apply
- Compare resume and job-description language → /resume
- GitHub contribution graph + pinned repos cleaned up
- English LinkedIn profile (apply globally too)
- A sustainable weekly application cap, with job, resume version, and response logged
The week before interviews, record and review your own answers, then use the interview guides in /match to check evidence, length, and structure.
Common traps
| Trap | Fix |
|---|---|
| 10 courses, 0 projects | Force one project per course — uncompleted projects = zero value |
| Urge to switch language mid-track | Track chosen in week 3 is locked through week 11 |
| Interview answers stuck at "I studied X" | Lead with project trade-offs and decisions you made |
| Resume = certs + courses list | Rewrite around quantitative results (users, revenue, perf) |
What JOB.HELP gives you along the way
The tools learners hit most during these 90 days:
- /match — interview and cover-letter guides (Phase 4)
- /resume — local resume/job-description phrase comparison; not an official ATS score or hiring prediction
- /tools — AI playbooks per profession (developer edition)
- /agents — review/test/CI agent catalog
Ninety days is short. Reduce scope and leave a working artifact every week. The final test is not whether you can call yourself a developer, but whether you can explain your design choices and failure record in your own words.
