I find the reason it's hard to do both on the same project is that the engineer by definition knows the internals of the system. It's hard to un-know that and see things afresh from the user perspective. Thus one tends to create UIs that are intuitive to someone who already has a mental model of how the system works, but seem convoluted and arbitrary to everybody else.