It is hard to design one single interface to suit many different users...
Control labels:
-Basic users need verbose desciption to understand who, what, when.
-Advanced users prefer concision because it is unobstusive.
-Power users prefer brievity to roam faster in controls.
Feature access organisation:
-Basic users need assistants: few choices at a time, lot of help and advices.
-Advanced users prefer to be in control: menus and windows.
-Power users want as little actions as possible: mouse move/click, keypress, keyboard/mouse change, window spawn/dismiss.
Settings:
-Basic users need little choice. The program decides for them.
-Advanced users prefer more.
-Power users want control over everything.
A powerfull aproach would be to track user level and adapt interface accordingly.
But this raises it's own problems:
- User can't be asked his level.
The easily offended would claim to be expert, the beginner would not know.
This would have to be deduced from other choices, such as custom install, remote configuration or assistant cancelling.
- Support and help would have to account for the differences.
- Several interfaces would have to be designed.
A way out here would be to design interface in an abstract way (purely logical/organisational), and then automatically spawn control layouts from it:
Menu item=Action button=Ok/Cancel dialog.
Chekmark menu item=Chekbox=Yes/No dialog.
Grouped exclusive menu items=Radio buttons=Pick one and validate dialog.
Submenu=Fieldset=Button spawning other dialog.
Such unified interface system could adapt to any environment: extra-small display, text mode, remote control, voice interraction, automated management...
Going this far is clearly overkill and is rather a job for the operating system, just "keeping it as simple as possible" works great too.
And this is my point : to make interface simple, context menus and windows should have the same organisation.
I also made a topic about
Systray layout opinion.