I think developers are usually terrible at it only because they are way too isolated from the user.
If they had the chance to take the time to have a good talk with the actual users it would be different.