Interview Prep Hub

Continuous Improvement Plan

Passing interviews requires a structured approach to learning. Once you land the job, leveling up from Mid to Senior requires a shift from "writing code" to "architecting systems" and "multiplying the team's output."

Structured Weekly Study Plan

  • Monday: Data Structures & Algorithms (1 hour) — Solve 2 medium problems on Leetcode (Focus on patterns: Sliding Window, BFS/DFS, Two Pointers).
  • Tuesday: System Design (1 hour) — Watch a breakdown video (ByteByteGo) or sketch out a system on a whiteboard/Excalidraw.
  • Wednesday: Deep Work (1.5 hours) — Build a small side project, implement a complex pattern from scratch (e.g. a rate limiter in Go, or an LRU cache), or read source code.
  • Thursday: Database Internals (1 hour) — Practice SQL, understand query execution plans, read about B-Trees, LSM trees, or isolation levels.
  • Friday: Architecture & Trends (45 mins) — Read an engineering blog post (Stripe, Uber, Cloudflare) to see how big tech solves problems.
  • Saturday: Mock Interview (1.5 hours) — Do a timed mock interview with a peer, or use platforms like Pramp or Interviewing.io.
  • Sunday: Rest & Review — Review notes, update your resume.

Leveling Up: Mid to Senior Engineer

What differentiates a Senior engineer from a Mid-level engineer?

  • Scope of Ambiguity: Juniors are given tasks. Mids are given features. Seniors are given open-ended business problems and asked to define the technical solution.
  • Force Multiplier: Seniors improve the whole team. They write good documentation, set up CI/CD pipelines, mentor juniors, and establish coding standards.
  • Trade-off Awareness: Mids want to use the newest, coolest tech. Seniors know that boring technology (like Postgres) is usually the best choice, and can articulate the exact cost of adopting a new tool.
  • Business Alignment: Seniors understand why a feature is being built and push back on product managers if a technical compromise can save weeks of work.

Practical Habits to Adopt Today

1. Read Open Source Code

The fastest way to write better code is to read great code. Don't just read tutorials. Go to GitHub and read the source code of the libraries you use.

  • Golang: Read the standard library (net/http, sync, context). It is the gold standard of Go code.
  • Node/React: Read the source for Express.js, Zustand, or simple utility libraries.

2. Keep a "Brag Document"

Never wait until performance review season or an interview to remember what you did. Keep a living document updating it every two weeks with:

  • Features shipped and their business impact.
  • Bugs squashed (especially tricky ones).
  • Documentation written and processes improved.
  • Colleagues mentored.

3. Write Design Docs (RFCs)

Before writing code for a large feature, write a 1-page tech spec. Outline the problem, the proposed solution, alternative solutions considered (and why you rejected them), API schemas, and DB models. Ask for feedback. This single habit builds system design skills instantly.

Recommended Resources (The "Must Reads")

CategoryResource
System DesignDesigning Data-Intensive Applications by Martin Kleppmann (The Bible of backend engineering).
System Design Interview by Alex Xu (ByteByteGo).
GolangEffective Go (Official docs).
100 Go Mistakes and How to Avoid Them by Teiva Harsanyi.
PostgreSQLPostgreSQL Up & Running.
Use the Postgres official documentation (it is exceptionally well written).
AlgorithmsGrokking the Coding Interview: Patterns for Coding Questions.
Neetcode 150 (Leetcode list sorted by pattern).
Behavioral / CareerThe Staff Engineer's Path by Tanya Reilly.
Cracking the PM Interview (Behavioral section is excellent for engineers too).
Engineering BlogsStripe, Cloudflare, Discord, Uber, Netflix TechBlog.