Building for Humans
The gap between software that works and software that feels right is not a technical gap.
There is software that does exactly what was specified and still feels wrong to use.
No bugs. Passing tests. Correct logic. And yet something breaks.
The problem is usually the model of the user we build for.
We imagine someone patient, focused, contextless. A person who reads error messages carefully and knows exactly why they opened this screen. That person does not exist.
Software built for the imaginary user fails the real one.
I used to think this was an empathy problem. Care more about users and the software improves.
It is actually a discipline problem.
Empathy without discipline becomes: I would feel this way, so they probably do too. But you know too much. You cannot un-know it. The only fix is watching real people use the thing, and being willing to see what they actually do instead of what you assumed.
The question worth asking is not: does this work correctly?
It is: does this feel right to a person, in the moment they are in?
That second question has no clean answer. That is why most software skips it.
New posts, straight to your inbox.