This all comes down to developer discipline.
Good systems are like sauces, it’s all in the folding and reduction
The Early Abstraction turns into a Worm - Software by Design in a Functional Programming World (part 2)
Abstractions are the way we manage to deliver complex software systems and therefore are a tool we need to apply judiciously.
Behaviour first- Data first class
TDD is one tool… Like all good tools, it has sharp edges and if you misuse it, it can cut you that’s not a reason to leave it in the toolbox.
… a fine grained tool, and as such should be used where appropriate but it’s not a religion.
Everything looks like a nail
Property based testing (PBT) is a powerful technique that discovers edge cases more thoroughly than traditional ‘example’ based testing