Design in software is deciding where to put the line of code, for every line of code.
Surprisingly, viewing your design as a bureaucracy offers great guidance: Let every subsystem or object say "Not my job" or "No need-to-know." With just these two phrases, our internal bureaucracy and anti-bureaucracy reflexes get triggered and we make a rather nice decomposition of responsibilities, making for both a good bureaucracy and good evolution characteristics.
Additionally, it turns out that the LLMs respond really well to these two phrases. Who would have guessed that they are all read up on bureaucracies??
In this talk, Alistair Cockburn refreshes domain- and responsibility-driven design with a razor that helps you decide if your objects are "in alignment" or not. Some older, some newer designs are examined to see how they naturally come from "not my job" and " no need to know."