“A good application is one on which a user can find a feature intuitively , even when they didn’t know where to find it in the first place. This can be attained only by creating intuitive, consistent patterns of navigations/actions mimicking the product domain as close as possible”
I completely agree with the first statement, but I would caution you against blind allegiance to the second statement. Simply mimicking competing user interfaces or modeling the real-world version of something isn’t necessarily the best way to make an application usable.
As an example, we’re currently working with a vendor who builds software to handle security cameras. The interface faithfully recreates the bank of TVs you’d see in a mall security office; working on the interface I’m always asking myself if the grid-based videos are laid out that way because it’s the best possible way for people to work with them or if they’re on our screen that way because they were easiest to wire in one area when they were physically on a wall. Maybe we needed to stay with what their users were used to, but maybe stopping and asking, “What do users need to do? How best could that be achieved?” would have led to a better interface. I think too often developers’ egos lead them to think the Average User is too dumb to get anything but what they know.