11336 shaares
398 private links
398 private links
Generic software design: It’s “designing to the problem”: the kind of advice you give when you have a reasonable understanding of the domain, but very little knowledge of the existing codebase. [...] When you’re doing real work, concrete factors dominate generic factors.
In large codebases:
- consistency is more important than "good design". Read Mistakes engineers make in large established codebases.
- Real codebases are typically full of complex, hard-to-predict consequences.
- Large shared codebases never reflect a single design, but are always in some intermediate state between different software designs. How the codebase will hang together after an individual change is thus way more important than the "north star"
The majority of software engineering work is done on systems that cannot be safely rewritten.
- Generic software design advice is useful for building brand-new project
- Generic software design advice is useful for tie-breaking concrete design decisions.
- Generic software design principles can also guide company-wide architectural decisions.