Practicing Software Design — Updated Table with Resources

Written by

in

ApproachWhat it buildsTime per sessionWhen to useResources (books, articles, courses, tools)
Design katas / exercisesPattern recognition; tradeoffs30–90 minDaily/weekly focused practiceBooks: 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 reviewsSystem-level thinking; anti-pattern spotting1–3 hrsWeeklySources: 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 handling1–4 hrsWeekly/biweeklyGuides: RFC writing templates; “Documenting Architecture Decisions” (ADR) examples. Courses: System design interview courses (educational platforms). Tools: C4 model resources; draw.io.
Refactoring real codeIncremental design, safety nets, tests1–3 hrsOngoing on real projectsBooks: Refactoring by Martin Fowler; Working Effectively with Legacy Code by Michael Feathers. Tools: IDE refactor tools, unit test frameworks, mutation testing (Stryker).
Pair design / mobbingCommunication, consensus, real-world tradeoffs1–3 hrsWhen collaboratingPractices: 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 & patternsMental models, proven solutions30–90 minWeeklyBooks: 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-endFull lifecycle, ops, tradeoffsSeveral daysMonthly projectTutorials: 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.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *