START HERE — The 12-week plan to a C, C++ systems job by December 2026¶
Written for: Shakir, 2.5 years of production C, moving to a senior-level C, C++ systems role. Dates: Week 1 starts Tuesday 2026-10-06. Weeks run Tuesday to Monday. Week 12 ends Monday 2026-12-28. Rule of the plan: every line on the resume must be backed by something you have built, debugged or can explain at whiteboard depth. Nothing on the resume is allowed to stay a "keyword".
1. How this folder is organised¶
LEARNING_PATH/
00_START_HERE.md <- this file: the plan and the schedule
_STYLE_GUIDE.md <- how every course is written (you can ignore it)
01_Environment_Setup/ <- 1 evening. Do this first.
12_C_Programming/ <- C to senior depth: pointers, UB, POSIX (16 modules)
02_Modern_CPP/ <- C++17 for a C programmer (14 modules)
03_Data_Structures_Algorithms/ <- DSA to interview level (16 modules)
04_Concurrency/ <- threads, locks, atomics, pools (13 modules)
05_Memory_Debugging_RCA/ <- gdb, WinDbg, cores, Valgrind, RCA (13 modules)
06_Linux_Toolchain_DevOps/ <- Linux, GCC, CMake, Git, Docker, CI(12 modules)
07_Databases_Internals/ <- PostgreSQL, YugabyteDB, BDB, Redis(14 modules)
08_Networking_Distributed/ <- sockets, TCP, epoll, RPC, Raft (14 modules)
09_OOP_Design_Patterns_Architecture/ <- OOP, patterns, LLD interviews (12 modules)
10_Capstone_Projects/ <- build tcpkv step by step (+ minidb)
11_Interview_Prep_Job_Search/ <- question banks, stories, applications, negotiation
(private: kept out of the public site and repo)
Every course has the same shape:
README.md— syllabus, hours, "you are done when you can..." checklist.01_*.md ... NN_*.md— modules. Each module: plain words -> real thing -> code -> under the hood -> in production -> exercises -> interview questions -> recap. Study one module per sitting.code/— complete programs. Build them on WSL withg++ -std=c++17 -Wall -Wextra -Werror -pthread.EXERCISES.mdandINTERVIEW_QA.md— all exercises and interview questions in one place.
2. How to study (read this once, then trust it)¶
- Read the module, then type the code yourself. Do not copy-paste. Typing is where it sticks.
- Break the code on purpose. Remove a
std::move, drop a lock, overflow a buffer. Watch what gdb / ASan / TSan says. This is how production debugging skill is built. - Say the recap out loud at the end of every module as if an interviewer asked. If you cannot say it without looking, you are not done.
- One notebook file: keep
MY_NOTES.mdin this folder. After every module write 5 lines: what surprised me, what I would say in an interview, what I still do not get. - Parallel tracks, not serial. You study 3 to 4 courses at once (see the schedule). Each gets a fixed slot. Do not "finish C++ first and then start concurrency" — the project needs both at once.
- The project is the spine. Every week the tcpkv repo must have commits. The courses exist to make the project good and to make you able to defend every line of it.
3. Daily schedule (full-time job, about 3 h weekdays, 8 h weekend days)¶
| Slot | Weekday | Weekend |
|---|---|---|
| 06:00 - 07:00 | DSA: 1 problem fully (think, code, test, write the pattern down) | DSA: 2 problems + 1 review |
| Lunch (20 min) | Read one INTERVIEW_QA.md section, say answers in your head | — |
| 20:00 - 21:00 | Course module (the week's "primary" course) | Course modules (primary + secondary), 3 h |
| 21:00 - 22:00 | Project: tcpkv step of the week, commit | Project: 3 h, commit, CI green |
| — | — | Sunday 18:00: 1 h weekly review (11_Interview_Prep_Job_Search/12_weekly_checklists.md) |
Weekly total: about 31 hours. Over 12 weeks: about 370 hours. That is enough if you do not skip days. If you miss a day, do not "catch up" by doubling; just continue. Consistency beats intensity.
4. The 12-week schedule¶
Legend: P = primary course that week (most hours), S = secondary, bg = background (1 to 2 h/week). C track = two modules of 12_C_Programming a week, in the weekday lunch slot or on the weekend. You already write C at work, so most of it is consolidation; it is also the revision source before any C interview round. Applications start week 5 with the tcpkv repo public and green. Not earlier (resume would 404), not later (December offers need November interviews).
| Week | Dates | DSA (daily) | Courses | Project (10_Capstone_Projects) | Job search (11_Interview_Prep) |
|---|---|---|---|---|---|
| 1 | Oct 6 - 12 | 03: modules 01-03 (complexity, arrays, strings) | P: 01_Environment_Setup then 02_Modern_CPP 01-04. S: 06_Linux_Toolchain 01-04 (Linux, build, flags, CMake). C track: 12_C_Programming 01-02 | tcpkv steps 01-02: skeleton, CMake, CI, RAII fd/socket wrappers | Read 11/01 (how interviews work). Set up tracking sheet. |
| 2 | Oct 13 - 19 | 03: 04-06 (hashing, lists, stacks/queues) | P: 02_Modern_CPP 05-08 (smart ptrs, STL, algorithms, templates). S: 04_Concurrency 01-03. bg: 06/05 GoogleTest, 06/06 Git. C track: 12_C_Programming 03-04 | tcpkv steps 03-04: protocol parser + tests, shared_mutex store | Write the 2-minute intro (11/02). |
| 3 | Oct 20 - 26 | 03: 07-09 (recursion, sorting, binary search) | P: 04_Concurrency 04-07 (shared_mutex, condvars, deadlocks, atomics). S: 08_Networking 01-04 (TCP, sockets, framing). bg: 06/11 Linux systems programming (signals). C track: 12_C_Programming 05-06 | tcpkv steps 05-06: blocking server, thread pool, Connection, graceful shutdown | Draft all STAR stories (11/02). Look up real numbers at work for them. |
| 4 | Oct 27 - Nov 2 | 03: 10-11 (trees, B-tree) | P: 04_Concurrency 08-13 (lock-free, thread pools, false sharing, patterns, debugging, Win32 reference). S: 08_Networking 05-06 (thread pool server, epoll). bg: 02_Modern_CPP 09-10. C track: 12_C_Programming 07-08 | tcpkv steps 07-08: client library + CLI, Valgrind/ASan/TSan clean under load | Resume final pass (11/08). LinkedIn + GitHub profile. |
| 5 | Nov 3 - 9 | 03: 12-13 (heaps, graphs) | P: 05_Memory_Debugging_RCA 01-06 (memory layout, malloc, gdb, cores). S: 02_Modern_CPP 11-14. bg: 06/07-10 profiling tools, Docker, CI, scripting. C track: 12_C_Programming 09-10 | tcpkv steps 09-10: metrics, logging, README, v1.0.0, repo public and pinned by Monday Nov 9 | Start applying: 10 to 15 targeted applications. Recruiter outreach (11/09). |
| 6 | Nov 10 - 16 | 03: 14 (DP) + mixed review | P: 07_Databases_Internals 01-06 (engine, pages, B-tree indexes, WAL, MVCC, EXPLAIN). S: 05_Memory_Debugging_RCA 07-13 (WinDbg, sanitizers, RCA writing). bg: 06/12 Windows toolchain reference. C track: 12_C_Programming 11-12 | minidb step 1-2 (page file, page cache) or polish tcpkv issues | 10 to 15 applications. First mocks: DSA + C++ (11/11). |
| 7 | Nov 17 - 23 | 03: 15-16 (tries, bits, playbook) + timed sets | P: 07_Databases_Internals 07-11 (SQL, PL/pgSQL, schema, Berkeley DB, YugabyteDB). S: 09_OOP_Design 01-05. C track: 12_C_Programming 13-14 | minidb steps 3-4 (B+tree, WAL) | Interviews likely begin. Mocks: concurrency + database. |
| 8 | Nov 24 - 30 | Timed mock sets (2 x 45 min on weekend) | P: 07_Databases_Internals 12-14 (migration methodology, caching/Redis, operations). S: 09_OOP_Design 06-11 (patterns, server architecture, LLD walkthroughs). C track: 12_C_Programming 15-16 | minidb steps 5-6 (recovery, crash test) | Applications continue. System design lite mocks. |
| 9 | Dec 1 - 7 | Review weak patterns | P: 08_Networking 07-14 (RPC, HTTP, reliability, distributed, Raft, sharding, HA, system design). S: 09_OOP_Design 12 | minidb steps 7-8 or stop here and polish READMEs | Interview loops. Negotiation reading (11/10). |
| 10 | Dec 8 - 14 | Review | Revisit every course INTERVIEW_QA.md; fill gaps found in real interviews | Bug fixes from interview feedback | Interview loops. Keep 2 to 3 processes alive in parallel. |
| 11 | Dec 15 - 21 | Review | Gap-filling only | — | Offers, negotiation, closing. |
| 12 | Dec 22 - 28 | Light | — | — | Accept. Resignation plan. First-90-days plan. |
This table is the single schedule for the whole curriculum. The week-by-week tables in
11_Interview_Prep_Job_Search add interview-practice and application detail on top of it. Where
they mention the project, the step numbers here and in 10_Capstone_Projects win.
The project runs ahead of the theory on purpose. Each tcpkv step guide starts with a "Read first" list. When it names a module scheduled for a later week, read only that module's sections 1 and 2 now (plain words and the real thing, about 30 minutes) and do the full module in its scheduled week. Example: step 08 in week 4 needs 05_Memory_Debugging_RCA module 08 on sanitizers, which is scheduled for week 6.
Starting late? If you begin after 2026-10-06, do not move December. Merge the missed week into the next ones using the cut list below, and protect week 5: tcpkv public and applications started by Monday 2026-11-09.
If you fall behind, cut in this order¶
- minidb (second project) — drop entirely. tcpkv alone is enough.
- 08_Networking modules 11-13 (Raft, sharding, HA) — read the recaps only.
- 09_OOP_Design modules 07-08, 12 — skip.
- 03 DSA modules 15 (tries/bits) — skip. Never cut: tcpkv, 02_Modern_CPP, 04_Concurrency, 05 modules 01-06, 07 modules 03-06, daily DSA.
5. Which course backs which resume line¶
| Resume line | Course that makes it true |
|---|---|
| C++17, STL, RAII, smart pointers, templates, OOP, memory & ownership | 02_Modern_CPP, 09_OOP_Design |
| C (language), multithreaded server-side C, memory corruption investigation | 12_C_Programming |
| Data structures & algorithms | 03_Data_Structures_Algorithms |
| Multithreading & concurrency; thread synchronisation layer; pooled request model | 04_Concurrency |
| Crash dump & core dump analysis, memory corruption, leaks, RCA | 05_Memory_Debugging_RCA |
| Linux, GCC, CMake, GDB, Git, Docker, CI/CD | 06_Linux_Toolchain_DevOps |
| PostgreSQL, YugabyteDB, Berkeley DB, Redis, internals, indexing, transactions, PL/pgSQL | 07_Databases_Internals |
| Sockets, TCP/IP, RPC, HTTP, distributed SQL, sharding, replication, HA | 08_Networking_Distributed |
| tcpkv project (every word of both bullets) | 10_Capstone_Projects |
| Performance optimisation | 02/12, 04/10, 07/06, 07/14 |
6. Definition of "senior-level understanding" used throughout¶
For each topic you should be able to do all four:
- Explain it to a junior in plain words (the "In plain words" sections).
- Explain what happens under the hood (compiler, OS, kernel, storage engine).
- Write it from scratch (the code/ examples and the project).
- Debug it when it breaks in production (the "In production" sections and course 05).
Interviewers for 2 to 4 years of experience test 1 and 3 always, 2 often, 4 for systems roles. This plan targets all four.
7. Before you start (tonight)¶
- Open
01_Environment_Setup/README.mdand do the two modules. About 2 hours. - Create
MY_NOTES.mdhere. - Create a private GitHub repo
tcpkvnow (make it public at week 5 when it is green). - Put the daily schedule in your phone calendar with alarms.
- Read
11_Interview_Prep_Job_Search/README.mdonce so you know where this is going.