- When a problem occurs varying data structures is easier than varying logic workflow structures.
- Data Transfer Objects should be coarse grained and contain no logic.
- Immutable data objects promote isolation, predictability, and readability.
- Logic structures should avoid inheritance as much as possible and use a composition workflow logic structure. The workflow can be altered replaced and reordered. Watch for attempts to make the workflow a plugin architecture that will instantly transform a robust system architecture into a fragile easy to break system.
- Optimization before completion of a working system is premature always. Complete minimal viable architecture and verify all test cases pass before optimization