Value Object and Primitive Obsession code-smell

The problem is that a “business domain” which is not allowed to have invalid state at any time is not a real thing that exists in the real world. It can only be constructed with extraordinary harm to the UX, which is what the article painstakingly explains with careful examples.

The perspective that you are coming from is very common. You imagine a situation in which the state is allowed to be invalid for a little while, as a treat, but once it reaches the backend it must necessarily be beaten into shape by validators and never allowed to deviate again. It is this mentality which Wittens argues, correctly, is incompatible with reality.

I say this as a user of computers, not as a programmer: I am absolutely sick of software that is built this way. “Enterprise” software, which has somehow escaped the enterprise and now terrorizes the rest of us everywhere we turn. It’s exhausting. We can do better.