| Approach | What it builds | Time per session | When to use | Resources (books, articles, courses, tools) |
| Design katas / exercises | Pattern recognition; tradeoffs | 30–90 min | Daily/weekly focused practice | Books: Design It! by Michael Keeling; 97 Things Every Programmer Should Know (design entries). Sites: GitHub repos for design katas; Exercism (design-style exercises). Articles: “System Design Primer” repo. Tools: whiteboard (Miro, Excalidraw). |
| Code reading & architecture reviews | System-level thinking; anti-pattern spotting | 1–3 hrs | Weekly | Sources: High‑quality open-source projects (Redis, Nginx, Kubernetes). Reads: Martin Fowler essays; architecture blog posts on High Scalability. Tools: GitHub, Sourcegraph for code navigation. |
| Designing from requirements (sketch → review) | End-to-end design, constraints handling | 1–4 hrs | Weekly/biweekly | Guides: RFC writing templates; “Documenting Architecture Decisions” (ADR) examples. Courses: System design interview courses (educational platforms). Tools: C4 model resources; draw.io. |
| Refactoring real code | Incremental design, safety nets, tests | 1–3 hrs | Ongoing on real projects | Books: Refactoring by Martin Fowler; Working Effectively with Legacy Code by Michael Feathers. Tools: IDE refactor tools, unit test frameworks, mutation testing (Stryker). |
| Pair design / mobbing | Communication, consensus, real-world tradeoffs | 1–3 hrs | When collaborating | Practices: Mob programming guides; pair design checklists. Platforms: Tuple, VS Code Live Share, Zoom + Miro. Reads: “The Art of Readable Code” (team practices). |
| Study canonical systems & patterns | Mental models, proven solutions | 30–90 min | Weekly | Books: Design Patterns (GoF); Patterns of Enterprise Application Architecture by Fowler; Designing Data-Intensive Applications by Martin Kleppmann. Blogs: High Scalability, ACM Queue. |
| Build small systems end-to-end | Full lifecycle, ops, tradeoffs | Several days | Monthly project | Tutorials: Build-a-service guides (e.g., microservice from zero to prod). Platforms: Heroku, Render, Docker, Kubernetes tutorials. Courses: Cloud provider architecture labs (AWS, GCP, Azure). |
How to use the resources (quick notes)
- Design katas: Use the System Design Primer repo for kata prompts and sample solutions; sketch on Excalidraw, then compare with community solutions.
- Code reading: Pick a small, well-documented OSS project (Redis, Nginx, Kubernetes) and read its architecture docs first, then trace code paths for a feature.
- Requirements → design: Follow C4 diagrams and write an ADR for each major decision; use RFC templates from established teams as examples.
- Refactoring: Work through examples in Refactoring and apply tests before/after; use mutation testing to validate test effectiveness.
- Pairing: Run a 60‑minute session: 30 min design, 20 min critique, 10 min decision record; use Live Share or Miro to collaborate.
- Patterns & systems: Read one chapter from Designing Data‑Intensive Applications each week and map examples to systems you know.
- End-to-end builds: Follow a cloud provider’s “build and deploy” tutorial, then add observability (Prometheus/Grafana) and a simple chaos test.
Leave a Reply