Matfej Krajci (matklad) argues software architecture is learned by doing, and Conway’s Law outweighs any technical design principle.
Key Takeaways
Conway’s Law is the core insight: social and incentive structures determine software shape more than technical decisions.
rust-analyzer’s architecture was explicitly designed around contributor types: deep contributors for the compiler core, weekend warriors for isolated features guarded by catch_unwind.
“Scientific code” quality gap is explained by PhD publication incentives, not missing software knowledge.
Recommended resources: Gary Bernhardt’s Boundaries talk, Jamii’s Reflections on a Decade of Coding, Ted Kaminski’s blog, ZMQ Guide by Pieter Hintjens, and Ousterhout’s A Philosophy of Software Design.
Adapting to bad incentive structures is valid strategy, but the future is uncertain – rust-analyzer was a prototype that became a production compiler.
Hacker News Comment Review
Commenters broadly agree on learning-by-maintaining: supporting large, multi-team projects over multiple codebases builds architectural intuition faster than greenfield work.
Several commenters pushed back on the reading list as too general, recommending Shaw/Garlan’s classic architecture texts and “Architecture of Open Source Applications” for concrete structural examples.
Discussion on design vocabulary: commenters argued that fuzzy terms like “clean code” fail juniors; explicit, measurable goals (maintainability, testability, observability) are more actionable.
Notable Comments
@CSMastermind: Condensed cheat sheet including “data models outlive code” and “if your system allows it, people will do it.”
@miki123211: Recommends “Architecture of Open Source Applications” – maintainer-written chapters show constraints and history that shaped each design.
@deepsun: Argues project size in terms of people and teams, not lines of code, is the real threshold where architecture starts to matter.