Software Design X-Rays

Adam Tornhill ยท epub ยท 2018-03 source โ†— Reader ๐Ÿ–ฅ๏ธ

AI-Friendly Code (Code Health for Agents)Behavioral Code AnalysisCoordination CostMental Models & UnderstandingModularity & CouplingSociotechnical ArchitectureTechnical Debt
The real cost and risk in a large codebase is invisible in the code's current structure and can only be recovered by mining version-control history as a behavioral record of how people actually work on it โ€” and once recovered (as hotspots, change coupling, code age, developer fragmentation, and knowledge maps), that record should drive both technical refactoring priorities and the alignment of team structure with system structure (Conway's Law), because most expensive software problems are organizational problems wearing a technical disguise.

practical ยท mixed โ€” A practical, technique-driven book (how to mine version control and act on the results) built on a theoretical spine borrowed from cognitive and social psychology (schemas, the forgetting curve, diffusion of responsibility, process loss), and carried throughout by real open-source and commercial case studies (ASP.NET Core MVC, Linux, Android, Scala, nopCommerce, Spinnaker) that function as evidence, not decoration.

Structure

PartRole
Preface: The World of Behavioral Code Analysiscontext
Part I, Ch.1 โ€” Why Technical Debt Isn't Technicalpremise-setting
Part I, Ch.2 โ€” Identify Code with High Interest Rates (Hotspots)method
Part I, Ch.3 โ€” Coupling in Time (Change Coupling)method
Part I, Ch.4 โ€” Pay Off Your Technical Debt (Patterns)method/evidence
Part I, Ch.5 โ€” The Principles of Code Agemethod/evidence
Part II, Ch.6 โ€” Spot Your System's Tipping Pointmethod (scaling up)
Part II, Ch.7 โ€” Beyond Conway's Lawcore argument
Part II, Ch.8 โ€” Toward Modular Monoliths through the Social View of Codemethod/evidence
Part II, Ch.9 โ€” Systems of Systems (Multiple Repos/Microservices)method/evidence
Part II, Ch.10 โ€” An Extra Team Member (Predictive and Proactive Analyses)conclusion / synthesis
Appendices (Code Maat, data mining with Git/cloc/CodeScene, exercise solutions)tooling reference

Key terms

Propositions

Arguments

Technical debt should be prioritized using version-control-derived hotspots, not static code-quality scores alone. strength: high
Explicit premises:
Implicit premises:
Inferences:
Above a certain organizational size, architecture should be organized around problem-domain features/components rather than technical layers. strength: high
Explicit premises:
Implicit premises:
Inferences:
Organizations should run knowledge-loss simulations proactively, before a departure, rather than discovering the gap after the fact. strength: medium
Explicit premises:
Implicit premises:
Inferences:

Narratives

Questions addressed

Gaps

Closes gaps elsewhere

Related documents