I see many apps written by programmers who obviously don't use the program like the end customers in a production environment. This results in features that don't really make sense in practice, inferior ways of doing things, half-baked functionality, bad workflow, many tools doing similar things, etc.
But on the other hand, in rare cases you see the same end customers making similar apps in an effort to overcome these shortcomings, and they might not be as sophisticated code-wise as the ones written by programmers but they work much better and feel like it's written by someone who uses the program professionally just like the end customers.
So is software better designed and developed by people who will use it, people who have intrinsic knowledge of the domain the program will serve in?