A principle emerging from agentic coding: verification steps that pass should produce no output; failures should dump everything. Simple idea, but it matters more than you'd expect when an LLM is the one reading the output.
My Composition over Inheritance YouTube video is listed as a learning resource on the roadmap.sh Software Design and Architecture roadmap.
Matt Pocock argues your codebase is the biggest influence on AI output, not your prompt. His solution is deep modules from John Ousterhout's A Philosophy of Software Design. It maps perfectly to how CQRS already works — each service boundary is a deep module with commands and queries as its interface.
Solid resource for understanding design patterns with good explanations and examples.