Problem with modern user interfaces is that they usually have waay too many buttons/options!
Every user interface is actually two user interfaces, one in the mind, and one on the screen. Every image on the screen first goes trough the "filter" in your brain, and this filter is different for everyone. But if you make a large part of the user interface a part of the "filter" in your mind, you also gain a better understanding of what you're doing. Would you think it would be better if while programming you had a button for "for loop" "while loop" "new method", a button for everything? Learning programmling like that would be very annoying.
It's a bit like the "command line" vs "user interface" debate. You trade a slightly higher learning curve for a better understanding and usage later on. If you're gonna build a WYSIWYG interface with all the capabilities of the normal interface, it'll probably end up more complicated than the normal interface.
Look, I'm not saying abstractions are bad, they're very important, but you have to put those abstractions in the mind of the user, not on a screen as buttons.