[quote name='Antheus' timestamp='1328282586' post='4909195']
When I hire a plumber I don't expect them to ask me what kind of pipe to use.
I'm sorry, but he damn well better ask me what kind of pipe to use, because if he comes into my house and tries to run copper, he is going to get an ear full. Double wall flex-line with an insulator sheath only.
[/quote]
I see the issue here very clearly. I understand the underlying problem. Let me explain.
Scenario A: As Antheus described it, he implied that he was not a pipe expert. He doesn't care, doesn't know what pipe types there are and how to fix them. He hires an expert, and asks the expert to use his own judgement in this situation,
precisely because Antheus knows the expert will make a better decision and trusts him.
The plumber, in this case, represents the software developer who is a larger expert. He makes the decision, i.e. the
optimized default value and the user uses it (since he doesn't care, nor can he make a better decision).
Scenario B: Luckless describes a similar situation, with a huge exception. In this case, he implied that he is the expert in pipes. He cares about which pipe is used, and he understands the pipe material choices. It is
important to him. He wants to have control and override the optimzied default (whether that means to change its value, or to keep using the default which happens to coincide with his preference).
The plumber represents the software developer who is a lesser expert in this
particular issue for this
particular user. The developer makes an optimized default value, but this user chooses to override it.
Do you guys see how my idea of overriding defaults works to cater to both situations here?
OTOH, if traditional checkboxes were used, it would be impossible to optimize towards both scenarios. If there is a UI element to let the user control pipe material choice, it's good for Scenario B but not good for A. If there is no such UI element, it's good for user in Scenario A, but HORRIBLE for user in Scenario B. The developer has to make a very hard decision here - cater to Scenario A vs. B. Using my idea, the developer wouldn't have to.
Remember, you are a programmer. You are not god, you do not know everything. Do not assume that you have all the answers upfront, and be sure there will be easy ways to do things differently than you initially expected.
Exactly. You are a programmer. You don't know everything. But you can make much better decisions for many optional things for the average user, things that the average user doesn't care about/understand. Now, don't forget the power users who need/want to change certain things - provide a system that'll allow them to. But when doing that, don't punish the average user by increasing the number of checkboxes they have to look at.