paulserban.eu

Writing Edition

Paul Serban

Writing, snippets & book notes

Learning plan · Post

20-Hour Learning Plan

← Back to What is Software Architecture? A Beginner's Guide to Building Robust Applications

Extracted Topic

Drawing correct service/module boundaries (using Bounded Contexts, coupling/cohesion analysis, and communication-pattern choice) as the foundation for microservices, event-driven, and layered architecture decisions - this is the single load-bearing skill the post repeatedly returns to (it names "drawing service boundaries" as "the hardest problem," lists boundary/decomposition and communication style as the top two of its own "five decisions" that drive 80% of architectural outcomes, and shows the same concern - domain purity, event-vs-call coupling, layer contracts - playing out identically across the layered, microservices, and EDA sections).

The Vital 20%

20-Hour Plan

Session 1 - Explain what a "component," "connector," and "configuration" are, and classify 5 real dependencies in a codebase you know using that vocabulary

Session 2 - Draw a dependency-direction diagram for an existing feature and identify any layer/interface violations

Session 3 - Identify 2-3 candidate Bounded Contexts in a real or sample domain and justify why each deserves its own model

Session 4 - Given a monolith module list, decide which modules are extraction candidates and which should stay, with a one-line reason each

Session 5 - Trace one Conway's Law mismatch in your own org and propose a boundary change that would remove it

Session 6 - Choose sync vs. async for 4 realistic cross-service interactions and justify each choice by its coupling consequence

Session 7 - Design an idempotent consumer for a duplicate-delivery scenario

Session 8 - Diagnose one existing distributed-failure risk in a design (yours or a case study) and add one mitigation

Session 9 - Write a full ADR for a real boundary decision you've made or are facing

Session 10 - Plan a Strangler Fig migration for one bounded piece of an existing monolith

What This Plan Deliberately Skips

Container orchestration/Kubernetes mechanics, observability tooling setup (OpenTelemetry, Prometheus), CAP theorem proofs and formal consistency models, and general non-functional-requirement elicitation (performance/security tactics in the abstract) - all real per the post, but downstream of getting boundaries right, not prerequisite to it.