Design heuristic: Challenge your own assumptions...
#dddesign
Developer: "Scenario X puts our system into an invalid state... so we should avoid."
SME: "Actually, our domain allows that. We usually just run a report at the end of the month and manually reconcile."
(Thread)
#dddesign
Developer: "Scenario X puts our system into an invalid state... so we should avoid."
SME: "Actually, our domain allows that. We usually just run a report at the end of the month and manually reconcile."
(Thread)
Dev: "I thought that was what we were trying to prevent?"
SME: "No... The benefit of this software is that it actually can give us that end-of-month report...
SME: "No... The benefit of this software is that it actually can give us that end-of-month report...
... Before, we had to pull in multiple spreadsheets and do some complex matric logic to figure out where the 1% of inconsistencies were.
Now, this system does all that up-front prep for us."
Now, this system does all that up-front prep for us."
Dev: "So what I thought was an invalid state... actually IS. But our system isn't the one to enforce that."
SME: "Exactly."
Dev: "How much time do you spend on that end-of-month reconciliation?"
SME: "Exactly."
Dev: "How much time do you spend on that end-of-month reconciliation?"
SME: "Before, it took a week to combine those spreadsheets. Now, it's usually only an extra 30 min of work to reconcile."
Dev: (Thinking to self) "Now I see the main goal of this system
"
Dev: (Thinking to self) "Now I see the main goal of this system

This is why collaboration and hashing things out with domain experts is so important!