The mantra of moderately-to-very experienced computer users is "customization customization customization", but sometimes we forget how much the customization options built into software for "us" can destroy usability for the less experienced. I just spent 15+ minutes on the phone with an Internet Explorer user who managed to completely obscure his menus. He had all the useless "Sign up for Hotmail NOW!" and "Get Your Free MSN Shotglass" garbage in the toolbar, but the actual menu commands fo using the application were compressed into a tiny, nearly invisible corner of a toolbar with nothing but a couple of small angle brackets to indicate that they existed at all. Why? Because his mouse slipped the other day while he was hitting a link, and IE (ahem) helpfully allowed him to "customize" his interface into unusability. Even figuring out the problem took several minutes, because the visual indicator that IE uses to show that a toolbar is usable is subtle to the point of invisibility to anyone who doesn't know exactly what they're looking for. This led to uncounted repetitions of "look for the slightly raised vertical line next to the slightly smaller indented line next to the 'links' bar and move your cursor really slowly until it turns into a two-headed arrow... no, not that one, the _other_ links item..." I understand (well, not really, but for the sake of this argument let's pretend I do) why someone might want their program menus moved over to, say, the right hand side of a second level toolbar, but why not make it somewhat harder for the naive user to shoot themselves in the face with the option? Would a confirmation dialog be such a bad idea here?
Everything should be built top-down, except the first time.