By @ayoush
Four-month switch plan (Sept–Jan)
L4–staff prep: blank-file fluency, systems depth, AI/LLMOps, and interview conversion — four months, tickable.
Sign in to star or fork this path.
Follow along for free — sign in to star, fork, and tick nodes off as you go.
0/533 done
section
Month 1 — Reactivation (Sept–Oct)
section
1.1 Coding fluency from a blank file
topic
Cold-write artifacts
artifact
CLI argument parser
artifact
CSV parser (quoted fields, embedded newlines)
artifact
LRU cache with hand-rolled doubly linked list
artifact
Token-bucket rate limiter
artifact
Retry wrapper (exponential backoff + full jitter)
artifact
Connection pool (checkout, checkin, timeout)
artifact
Bounded work queue with backpressure
topic
Discipline
drill
One primary language (Python), one secondary (Elixir)
drill
Tests you wrote — empty input, capacity boundary, concurrency, timeout
drill
Error handling: timeout, partial read, closed socket, malformed input
drill
Clone a small repo; trace one request path end to end
section
1.2 DSA — core patterns
topic
Must-know tier
question
Arrays: two pointers, sliding window, prefix sums, Kadane
question
Hashing: frequency maps, grouping, set membership
question
Strings: parsing, palindromes, anagram patterns
question
Stacks/queues: monotonic stack, min stack, deque sliding window
question
Binary search: answer space, first/last, rotated array
question
Recursion fundamentals
question
Tree traversal: pre/in/post — recursive and iterative
question
BFS and DFS
topic
Method
drill
Pattern recognition over problem count
drill
Re-derive solved problems from scratch
drill
Solve timed; narrate out loud while coding
drill
~40 problems this month, each re-derived at least once
section
1.3 Linux foundations
topic
Process model
question
fork, exec, wait
question
PIDs, PPIDs, orphans, zombies
question
Process groups and sessions
topic
File descriptors
question
FD table vs open file descriptions vs inodes
question
dup, dup2; inheritance across fork
question
Redirection mechanics
topic
/proc interface
question
/proc/<pid>/status, /fd, /maps, /limits, /stat, /cmdline
question
/proc/meminfo, /proc/loadavg
topic
Signals
question
SIGTERM vs SIGKILL vs SIGHUP vs SIGSTOP
question
Handlers; why SIGKILL cannot be caught
question
Graceful shutdown semantics
question
Signal safety
topic
Memory
question
Virtual vs resident; RSS vs VSZ
question
Page cache, swap
question
The OOM killer
topic
Filesystems and permissions
question
Inodes, hard vs symbolic links, mount points
question
Why df and du disagree
question
Users, groups, mode bits, setuid
topic
Threads vs processes
question
Shared address space and debugging implications
section
1.4 CLI fluency
topic
Diagnostic tools
resource
ps / top / htop — what is running, what is consuming
resource
lsof — what holds this file or port; deleted-but-held files
resource
ss — socket states, listening ports, connection counts
resource
strace — syscalls this process is making
resource
df / du — disk full vs directory bloat
resource
free / vmstat — memory pressure, swapping, run queue
resource
iostat — disk saturation vs latency
resource
journalctl / systemctl — service state, logs, restart loops
resource
grep / awk / sed — log slicing, field extraction
resource
curl — full request control, -w timing, verbose TLS
resource
dig / nslookup — resolution path, TTLs, resolver
resource
tcpdump — what is on the wire
section
1.5 Elixir — language core
topic
Core syntax
question
Pattern matching, destructuring, pin operator
question
Guards and guard-safe expressions
question
Pipe operator idioms
topic
Types and polymorphism
question
Structs vs maps vs keyword lists
question
Protocols and polymorphism
question
Behaviours and callbacks
topic
Control flow and collections
question
with expressions and error chaining
question
Comprehensions and :into
question
Streams vs Enum; lazy evaluation
topic
Advanced language
question
Tail call optimisation and recursion
question
Binaries, bitstrings, binary pattern matching
question
Sigils
question
Macros, quote/unquote, AST
section
1.6 Target system — URL shortener scaffold
topic
Core service
artifact
HTTP API with deliberate ID generation strategy
artifact
Postgres schema with unique index
artifact
Redis cache layer
artifact
Config from environment
topic
Ops and observability
artifact
Docker Compose: app + Postgres + Redis, healthchecks
artifact
Structured logging with request IDs
artifact
/metrics and /healthz endpoints
artifact
Run as systemd unit on bare Ubuntu
artifact
Wire in your rate limiter from 1.1
section
1.7 Campaign track
topic
Week 1 — CV and targets
artifact
One-page CV (two variants: Elixir-first, AI/backend-first)
artifact
Target list with comp band, JD link, status columns
drill
Reverse-engineer JDs; tally skill frequency (≥60% = priority)
topic
Weeks 1–4 — applications
drill
All talent networks in Week 1
drill
All Elixir roles in Week 1
drill
6–10 targeted applications per week
drill
Apply within 5–7 days of posting; set standing alerts
section
Month 2 — Systems depth (Oct–Nov)
section
2.1 Networking for debugging
topic
TCP
question
Three-way handshake
question
Connection states: LISTEN, ESTABLISHED, TIME_WAIT, CLOSE_WAIT
question
Listen backlog; Nagle, keepalive
question
Ephemeral port exhaustion
topic
IP and DNS
question
Routing, MTU, fragmentation
question
Resolution path, resolv.conf, nsswitch.conf
question
Record types; TTL, caching; dig +trace
topic
HTTP and TLS
question
Status codes — especially 499, 502, 503, 504
question
Host header, Content-Length vs chunked
question
HTTP/1.1 HOL blocking vs HTTP/2 multiplexing
question
TLS handshake, cert chains, SNI; curl -v, openssl s_client
topic
Load balancers and reliability
question
L4 vs L7; health checks, upstream timeouts
question
X-Forwarded-For; where a 504 is generated
question
Timeouts, retries, idempotency, circuit breakers
question
Rate limiting: token bucket, leaky bucket, sliding window
question
Connection pool sizing; load shedding
topic
Packet level
drill
tcpdump capture filters
drill
Reading a handshake; retransmits and RSTs
section
2.2 The incident loop
topic
Ten-step loop
drill
1. Clarify impact — who, what, since when
drill
2. Establish scope — all users or some, one region or all
drill
3. Gather evidence — logs, metrics, traces, reproduction
drill
4. Form hypotheses — plural, ranked by likelihood × cheapness
drill
5. Test hypotheses — cheapest discriminating test first
drill
6. Identify root cause — trigger vs cause
drill
7. Fix — mitigate first, fix properly second
drill
8. Validate — with the same evidence that showed failure
drill
9. Communicate — impact, status, ETA, non-engineer language
drill
10. Prevent recurrence — detection, alerting, guardrail
topic
Communication skills
drill
Write a blameless postmortem
drill
Mid-incident status update
drill
Say "I don't know yet" without losing credibility
section
2.3 Failure mode catalogue
topic
Symptom → tools → distinction
drill
API 500s — journalctl, app logs, curl
drill
API 504s — ss, curl -w, upstream logs
drill
Database unavailable — ss, pg_isready, dig
drill
Redis unavailable — redis-cli ping, INFO memory
drill
DNS failure — dig, resolv.conf
drill
CPU spike — top, pidstat
drill
Memory leak — free, vmstat, /proc/<pid>/status
drill
Disk full — df, du, lsof +L1
drill
Pool exhaustion — app metrics, ss, pool config
drill
Replica lag — DB stats, iostat
drill
Queue backlog — broker metrics, consumer logs
drill
Deployment failure — systemctl status, journalctl -u
drill
Auth failure — logs, token inspection, clock check
drill
Third-party failure — curl, status page, retry config
section
2.4 Distributed systems
topic
Consistency and consensus
question
CAP vs PACELC
question
Consistency models: linearizable, sequential, causal, eventual
question
Paxos conceptually; Raft — leader election, log replication
question
Quorums, R+W>N, sloppy quorums, hinted handoff
topic
Time, replication, partitioning
question
Vector clocks, Lamport timestamps, hybrid logical clocks
question
Leader election, split brain, fencing tokens
question
Replication: leader-follower, multi-leader, leaderless
question
Partitioning: range, hash, consistent hashing, rebalancing
topic
Transactions and delivery
question
2PC, 3PC, saga pattern
question
Idempotency; exactly-once vs at-least-once vs at-most-once
question
Outbox pattern, change data capture
topic
Reliability and performance
question
Backpressure, load shedding, circuit breakers
question
Head-of-line blocking; tail latency p50/p95/p99
question
Little's Law, Amdahl's Law, queueing theory
question
Clock skew; failure detectors, gossip, phi accrual
question
CRDTs: G-counter, PN-counter, OR-set, LWW-register
section
2.5 PostgreSQL
topic
Query and indexing
question
B-tree, hash, GIN, GiST, BRIN — when each applies
question
Partial, expression, covering indexes; column order
question
EXPLAIN ANALYZE — seq vs index vs bitmap scan
question
Join types; statistics and planner errors
question
CTEs, window functions, lateral joins
topic
Transactions and concurrency
question
MVCC, tuple visibility, xmin/xmax
question
Isolation levels and anomalies each prevents
question
Row-level locking, FOR UPDATE SKIP LOCKED
question
Advisory locks; deadlock detection
topic
Operations
question
Vacuum, autovacuum, bloat, XID wraparound
question
PgBouncer modes; why connections are expensive
question
WAL, checkpoints, replication slots
question
Streaming vs logical replication; replica lag
question
Safe migrations: CONCURRENTLY, backfills, expand/contract
topic
Adjacent stores
question
Redis: structures, eviction, persistence, cluster
question
DynamoDB: keys, GSI/LSI, hot partitions
question
ElasticSearch: inverted index, shards, relevance
section
2.6 Containers and Kubernetes
topic
Docker
question
Layer model, build cache, image size
question
Multi-stage builds; distroless bases
question
Namespaces and cgroups — what isolates a container
question
Networking modes; volumes vs bind mounts
question
Resource limits; OOM-kill; PID 1 problem
topic
Kubernetes
question
Core objects: Pod, Deployment, Service, Ingress, etc.
question
Probes: liveness vs readiness vs startup
question
Requests vs limits; QoS; eviction and OOMKilled
question
Rollouts, rollbacks; Service networking
question
Debugging: CrashLoopBackOff, ImagePullBackOff, Pending, DNS in Pod
section
2.7 AWS by reasoning
topic
Core services
question
VPC — subnets, route tables, SG vs NACL
question
IAM — principals, policies, roles, assume-role
question
EC2 — families, EBS types, instance metadata
question
S3 — consistency, storage classes, presigned URLs
question
RDS/Aurora — replicas, lag, failover, PITR
topic
Serverless and messaging
question
DynamoDB — partition key design, hot partitions, GSI cost
question
Lambda — cold starts, concurrency, VPC penalties
question
SQS/SNS/EventBridge/Kinesis — selection, DLQs, FIFO
question
CloudWatch — metrics, logs, alarms, blind spots
topic
Infrastructure as code
question
Terraform — state, modules, drift
question
CI/CD — GitHub Actions, OIDC to AWS
question
Cost reasoning — compute vs storage vs egress, NAT gateway
section
2.8 Observability
topic
Signals and metrics
question
Three signals — strengths and weaknesses
question
Metric types: counter, gauge, histogram, summary
question
Cardinality explosion
question
Prometheus: scrape, PromQL, alerting rules
topic
Tracing and logging
question
Grafana dashboards; Loki, Tempo, Mimir
question
OpenTelemetry: SDK, collector, semantic conventions
question
Distributed tracing: spans, context propagation, sampling
question
Structured logging, correlation IDs, PII scrubbing
topic
SLOs and incidents
question
RED for services; USE for resources
question
SLI/SLO/SLA; error budgets; burn-rate alerting
question
Alert design: symptom-based; alert fatigue
question
On-call, severity levels, blameless postmortems
section
2.9 Elixir — OTP and concurrency
topic
Process model
question
spawn, link, monitor — differences
question
Message passing, mailboxes, selective receive
topic
OTP behaviours
question
GenServer: call vs cast vs info, handle_continue
question
Supervisor strategies; DynamicSupervisor
question
Task, Task.Supervisor, Task.async_stream
question
Registry; process naming and discovery
topic
Storage and flow
question
ETS: table types, when ETS beats GenServer
question
GenStage: demand and backpressure
question
Flow; Broadway
topic
Distribution
question
"Let it crash" and error kernel design
question
Node connection, :net_kernel, epmd
question
Distributed Erlang limitations; libcluster, Horde
section
2.10 DSA — should-know tier
topic
Patterns
question
Linked lists: reversal, cycle detection, merge
question
BST properties, LCA, diameter, serialise/deserialise
question
Heaps: top-k, merge k sorted, median of stream
question
Graphs: topo sort, cycle detection, union-find, Dijkstra
question
Intervals: merge, insert, sweep line
question
1D and simple 2D DP: knapsack, LIS, edit distance
question
Matrix: spiral, rotate, islands
question
Tries: prefix search, word break
topic
Volume
drill
~40 more problems; cumulative ~80
section
2.11 Campaign track
topic
Pipeline
drill
6–10 targeted applications per week
drill
Complete outstanding talent-network screening tests
drill
Have compensation answer ready before first recruiter call
artifact
Refresh GitHub: URL shortener public with README
artifact
LinkedIn headline and About match CV summary
section
Month 3 — AI engineering & system design (Nov–Dec)
section
3.1 LLM fundamentals
topic
Architecture and tokens
question
Transformer: attention, multi-head, positional encoding
question
Tokenisation: BPE, SentencePiece, cost implications
question
Context windows; attention cost scaling; context degradation
topic
Generation and tools
question
Sampling: temperature, top-k, top-p, repetition penalty
question
Structured output: JSON mode, constrained decoding
question
Function/tool calling protocols
question
Streaming responses and partial parsing
section
3.2 Retrieval and RAG
topic
Chunking and embeddings
question
Chunking: fixed, recursive, semantic; size vs recall
question
Embedding models, dimensionality, normalisation
question
Vector search: cosine, dot, L2; HNSW, IVF, PQ
topic
pgvector and hybrid
question
pgvector: HNSW vs IVFFlat, index parameters
question
Hybrid retrieval: BM25 + dense, reciprocal rank fusion
question
Reranking, cross-encoders
question
Query transformation: HyDE, multi-query, decomposition
topic
Advanced RAG
question
Metadata filtering; contextual retrieval
question
Parent-document and small-to-big retrieval
question
Graph RAG
question
Citation, grounding, attribution verification
question
Retrieval eval: recall@k, MRR, NDCG
question
When RAG is the wrong answer
section
3.3 Agents
topic
Patterns and tools
question
ReAct loop, plan-and-execute, reflection
question
Tool design: granularity, error surfaces, idempotency
question
Multi-agent: supervisor/worker, handoff, debate
question
MCP — servers, tools, resources
topic
Memory and safety
question
Memory: short-term buffer, summarisation, episodic, semantic
question
Context management and compaction
question
Sandboxing and permission boundaries
question
Failure modes: loops, tool thrash, hallucinated arguments
section
3.4 Prompting
topic
Techniques
question
Few-shot vs zero-shot; example selection
question
Chain of thought and its limits
question
Prompt caching mechanics and cost impact
question
Prompt injection and defences
question
System prompt design and instruction hierarchy
question
Prompt versioning and diffing
section
3.5 LLMOps
topic
Lifecycle
question
Data prep → fine-tune → eval → deploy → monitor → iterate
question
Experiment tracking; dataset versioning
question
CI/CD for models: canary, shadow deploy, rollback
topic
Evaluation
question
Golden datasets; rubric design
question
LLM-as-judge and its failure modes
question
Offline vs online eval vs A/B
question
Regression tracking and eval gating in CI
question
Measuring hallucination and conversational quality
topic
Training and serving
question
LoRA, QLoRA, adapters; when fine-tuning beats prompting
question
Quantisation: GPTQ, AWQ, GGUF; quality-latency tradeoff
question
Serving: vLLM, TGI, batching, KV cache, paged attention
question
GPU fundamentals: VRAM sizing, tensor vs pipeline parallel
topic
Production
question
Model routing and fallback chains
question
Cost modelling per request; token budgeting
question
Drift detection, guardrails, graceful degradation
question
Observability: trace a full turn, log prompts safely
section
3.6 Voice and real-time streaming
topic
Audio and transport
question
Sample rate, bit depth, PCM; codecs Opus, PCMU/PCMA
question
WebRTC: SDP, ICE, STUN/TURN, DTLS-SRTP
question
WebSocket audio transport, chunking, framing
topic
VAD and turn-taking
question
VAD: energy-based, WebRTC VAD, Silero; threshold calibration
question
Endpointing: silence thresholds, semantic endpointing, barge-in
question
Non-native speaker cadence; fixed silence thresholds fail
topic
Pipeline and latency
question
ASR: streaming vs batch, interim vs final, word timings
question
Latency budget: capture → VAD → ASR → LLM TTFT → TTS TTFB → playback
question
TTS streaming, sentence-boundary chunking
question
Backpressure; interruption and cancellation mid-generation
topic
Deliverable
artifact
Voice pipeline doc: architecture, VAD calibration, latency numbers, failure modes
section
3.7 System design — the method
topic
Seven-step method
drill
1. Requirements — functional, non-functional, out of scope
drill
2. Scale estimation — users → RPS → storage → bandwidth
drill
3. API design — endpoints, idempotency, pagination
drill
4. Data model — access patterns first, schema second
drill
5. High-level architecture — components and request path
drill
6. Deep dive — pick one component, go three levels down
drill
7. Bottlenecks, failure modes, tradeoffs
section
3.8 System design — building blocks
topic
Core blocks
question
Caching: cache-aside, write-through, invalidation, thundering herd
question
Database selection: relational vs document vs KV vs wide-column
question
Replication: sync vs async; replica lag; failover and split brain
question
Partitioning: hotspots, rebalancing, cross-partition query cost
question
Queues and streams: delivery semantics, DLQs, idempotent consumers
question
Consistency and availability tradeoffs
question
Security in design: authn vs authz, rate limiting, PII
section
3.9 System design — twelve reps
topic
Design reps (recorded, time-boxed)
drill
1. URL shortener — you built it, use real numbers
drill
2. Distributed rate limiter
drill
3. Notification / fan-out service
drill
4. Chat or real-time collaboration
drill
5. Newsfeed / timeline
drill
6. Distributed job scheduler
drill
7. Metrics / observability pipeline
drill
8. Voice AI interview platform
drill
9. Multi-tenant SaaS with per-tenant isolation
drill
10. LLM gateway with routing, caching, fallbacks
drill
11. IoT telemetry ingestion
drill
12. DNS resolver or service discovery
section
3.10 API and interface design
topic
REST and pagination
question
Resource modelling, status codes, verb idempotency
question
Pagination: offset, cursor, keyset
question
Versioning; error response design (problem+json)
topic
GraphQL, gRPC, real-time
question
GraphQL: schema, N+1 and DataLoader, complexity limits
question
gRPC: protobuf, streaming modes, deadlines
question
WebSockets vs SSE vs long polling
question
Webhooks: signing, retries, idempotency keys
topic
Auth and schemas
question
API auth: keys, OAuth2, JWT
question
OpenAPI and schema-first development
question
Backward and forward compatibility
section
3.11 Security and IAM
topic
Identity protocols
question
OAuth 2.0: auth code + PKCE, client credentials, device code
question
OIDC: ID token vs access token, discovery, nonce
question
SAML; SCIM provisioning
question
JWT: signing, alg:none attack, key rotation, JWKS
topic
Access control
question
Session management: cookie flags, SameSite
question
MFA: TOTP, WebAuthn/passkeys
question
RBAC vs ABAC vs ReBAC (Zanzibar)
question
SSO, IdP federation, JIT provisioning
topic
Application security
question
OWASP Top 10 — exploit and mitigation each
question
Injection, XSS, CSRF, SSRF
question
Deserialisation; supply chain: SBOM, SCA
question
Threat modelling: STRIDE
question
Crypto basics: hashing vs encryption, TLS, mTLS
section
3.12 DSA — maintenance
topic
Maintenance mode
drill
Re-derive Month 1 problems — delta is the proof
drill
~20 new problems; cumulative ~100–120
drill
Nice-to-know only if time: advanced DP, segment trees
section
3.13 Campaign track
topic
Interview prep
drill
6–10 targeted applications per week
drill
Two mock interviews this month
drill
Interview loops from Month 1–2 applications landing
drill
Start story bank now — rehearsed, not improvised
section
Month 4 — Execution and conversion (Dec–Jan)
section
4.1 DSA consolidation
topic
Buckets
question
MUST: arrays, strings, hashmaps, two pointers, sliding window, stack, queue, binary search, recursion, tree traversal, BFS/DFS
question
SHOULD: linked lists, BST, heaps, graphs/topo sort, intervals, 1D/2D DP
question
NICE: tries, union-find, advanced DP, Dijkstra
question
SKIP: segment trees, bit tricks, computational geometry, hard DP
topic
Method
drill
Re-derive, do not accumulate
drill
Every problem timed and narrated aloud
drill
Two per day, morning, before anything else
section
4.2 Practical and debugging rounds
topic
Practical coding formats
drill
Parse a messy file
drill
Build a small CLI
drill
Wire up an API integration
drill
Implement a rate limiter
drill
Build a minimal retrieval pipeline
drill
Debug a failing test suite you didn't write
topic
Debugging and integration rounds
drill
Given broken system — narrate investigation using Month 2 catalogue
drill
Integration round: deploy into customer stack under their constraints
section
4.3 The story bank
topic
Categories (90 seconds, one number each)
artifact
Performance optimisation — query optimisation, Azure migration
artifact
Distributed systems — ex-dns GenServer, Supervisor, GenStage
artifact
Complex integration — wallet/pass, serverless public-sector
artifact
Real-time systems — Phoenix Channels, rate limiting, auth
artifact
Learning fast across stacks — Elixir → Python → Node → AWS
artifact
Product ownership — founding and shipping solo
artifact
AI engineering — voice pipeline with Month 3 numbers
artifact
Debugging and incident response — Month 2 loop
artifact
Scaling with evidence — URL shortener load-test results
artifact
Infrastructure ownership — three-way deployment work
topic
Gaps to fill honestly
drill
Real technical disagreement and resolution
drill
Real instance of unblocking or teaching someone
drill
Real tight release under pressure
drill
Something you got wrong and what changed
section
4.4 Delivery craft
topic
Interview performance
drill
Think out loud without rambling
drill
Clarifying questions that reveal seniority
drill
Handle "I don't know" with credibility
drill
Whiteboard discipline: legible, structured, narrated
drill
Read interviewer hints; pivot without defensiveness
drill
International style: structured answers, visible reasoning
section
4.5 Compensation
topic
Negotiation
question
Anchoring — who names a number first, and when
question
Global-band vs location-adjusted; raise early
question
Evaluating equity: strike price, preference stack, dilution
question
Contract rate maths: hourly rate for ₹1 Cr target
question
Managing competing timelines without bluffing
question
Walk-away number before the first call
section
4.6 Mock interviews
topic
Six to eight total
drill
Mix: two DSA, two system design, two behavioural, one practical/debugging
drill
Fix exactly one gap per round — not five, one
drill
Record every one; re-watch is where value is
drill
Last two with someone who will be harsh
section
4.7 Spaced retrieval
topic
Re-derive and re-diagnose
drill
Re-derive Month 1 artifacts cold — rate limiter, LRU, pool, retry
drill
Re-diagnose Month 2 failure modes; time yourself
drill
Re-design a Month 3 system; notice the delta
section
4.8 Close measured gaps
topic
From LOG.md
drill
Read every LOG.md entry from Months 1–3
drill
List what you fumbled; group into 2–3 clusters
drill
Attack clusters directly — measured weakness, not guessed
section
4.9 Evidence consolidation
topic
Public artifacts
artifact
GitHub — URL shortener with performance report
artifact
Voice pipeline write-up
artifact
Resume rewrite — ownership verbs, measured numbers
artifact
Portfolio page linking artifacts and write-ups
section
4.10 Campaign track — closing
topic
Pipeline close
drill
Keep applying — do not stop because interviews started
drill
Re-apply to Month 1 roles that reposted
drill
Follow up on quiet loops after two weeks
drill
Negotiate from multiple offers if timing allows