I was working on some drawings last night when my delete key suddenly stopped working. An incorrectly placed dimension on an AutoCAD drawing just wouldn't disappear.
Troubleshooting mode on!
Select the object, press delete. Nope. Select the object, press backspace. Nope. Try it in a text editor- yep, the key's working. Back to AutoCAD. No luck. Try restarting AutoCAD. Nope.
I've never tried to delete an object from the command line in AutoCAD, that's what the key is for. What could the command be? DELETE. Nope. DEL. Nope. ERASE? Valid command, but it didn't delete the object. It did, however, prompt me to select an object to be erased. Odd, since the object's already selected.
Well, it turns out there are multiple forums (and probably several entire racks of index servers at Google) dedicated to "weird nonsensical quirks of AutoCAD that we came across while trying to get our work done". This particular one is from a system variable called PICKFIRST, which when set to 1 makes everything behave normally, and when set to 0 prevents the command you're about to enter from acting on the object you just selected. And it's been known to spontaneously change itself for no apparent reason.
Troubleshooting mode off. Back to work, and file another tick in the "reasons to find a new CAD environment" list.
Options shouldn't override user expectations
Computer users, particularly technical users, do like to customize their environments somewhat. There is, however, always an expectation that the basic models of interaction are going to be approximately consistent from one program to another. (That link and the series it belongs to are mandatory reading for any UI designer.) File > Open, or Ctrl O, or the opening-folder icon, should always bring up a file open dialog. A scrollbar is an up arrow, a down arrow and a thumb slider in a tray, with standard behaviours. A music or video player has a right-pointing triangle for Play, two vertical bars for Pause, double-left and double-right arrows for Previous and Next. Commands in any program always operate on the currently selected object. As a UI programmer, you deviate from established standards at your own peril.
AutoCAD, like many technical software packages, has a host of configuration options to allow any given user or workgroup to tune the program's interface and behaviour to suit their workflow. That's all well and good; I don't need landscape architecture libraries taking up toolbar space any more than a landscape architect would need digital circuit schematic libraries on theirs.
A great many options, though, simply have no reason to exist. PICKFIRST, for example, also known confusingly in a config box somewhere as "Noun/Verb Selection", has 22,300 Google results. Most of them are on forums and blogs in response to some variant of "What the hell just broke my select tool?"
When you're designing a user inteface, give serious thought to what features actually need to be exposed and configurable. No programmer should ever trust his own judgment here; a far better way is to bring in a few random people who have never seen the program and ask "What would you do to make ___ happen?"
Very few users actually want a flashy new interface; they usually want something stable, predictable and intuitive in the context of their previous experience with similar programs. Very few users, when presented with the ability to completely reconfigure the UI, will do anything more than pin their favourite commands to the toolbars; if they go beyond that, it's usually to change bad default behaviours to something more consistent with related software and with the rest of their system.
Take the time to test your software's workflows with real users, and stick to customization options that make sense for what they're trying to do with it. Provide default settings that are consistent with normal behaviour on that class of system. A bland, predictable interface will, in the long run, make for happier users and more repeat customers than will a shiny, flashy, customizable interface that never works quite the way your users expect.