Tag
Discussion of two approaches to software design, as documented on the C2 wiki.
A tweet argues that subagents are an antipattern in AI/software design.
A blog post discussing how excessive nil pointer checks in Go can indicate unclear code and poor error handling practices, advocating for early failure and explicit modeling of unavailable dependencies.
Kent Beck clarifies that the YAGNI principle is not about saving coding effort but about avoiding the costs of speculative structure—building code before it's needed. He argues that even correct guesses incur a penalty because they remove the option to build the right structure later.
A practical guide to writing effective software design documents, outlining key components and best practices drawn from the author's experience at Google and Microsoft.
The author shares lessons from designing a testing framework in Guile, focusing on how adding context to test definitions makes tests more reusable and improves developer experience.
The article argues that duplication is cheaper than the wrong abstraction, and advises developers to avoid forcing abstractions that later become complicated with conditionals.
A blog post arguing that every UI frame should be visually perfect, with examples of poor animations and transitions.
This article explores the design of Lispy domain-specific languages using SCSS, a Scheme-based CSS preprocessor, as a case study. It discusses how SCSS represents CSS as first-class values and the limitations of its implementation.
The author explores how software design might need to evolve when AI agents become regular users, discussing needs like durable state, collaboration rules, permissions, and audit trails.
A critical opinion piece argues that AI agents like Claude lack the contextual judgment and ability to say 'no' needed for real software architecture, warning against letting them design systems without human oversight.
The author details the process of designing a custom query language tailored for non-technical analysts to filter vehicle maintenance data, outlining user needs, data schema, and specific use cases.
A software engineer shares insights on learning software architecture, emphasizing the primacy of social and incentive structures over code, with examples from rust-analyzer and scientific code.
The article recommends Peter Naur's 'Programming as Theory Building,' arguing that programming is fundamentally about constructing and communicating a mental model of the software rather than just writing code.