I'm starting to think that it might be better to make the user choose explicitely to avoid errors/wrong inputs.
Sometimes what to do is mandated by law exactly to prevent this kind of errors. Imagine you're a nurse working in Emergency and you have to fill the gender field of a form, if it is pre-compiled and you're working under high stress then you may accidentally leave the field with the wrong predefined value.
I don't know what your application is for (and you should consult your PM and/or QO about this) but you may have no choice.
I think it might be possible to divide the inputs into two groups, one where we would want a useful default value and others where we want the user to choose explicitly.
Assuming the you can provide a default then you should not even think about this, a useless default should NEVER be provided. Does make any sense to have 0 for the field weight? Or actually any other value? Never ever provide arbitrary defaults that operator will always need to change. As a rule of thumb, when applicable, I do not even consider to provide a default unless its frequency is at least 80%.
But shoudn't we act consistently within the same component? If I had two mandatory select lists on the same form, one with an empty value and one without, this would confuse me. How can I handle this problem?
No, it's not confusing if defaults you provide are really the most common choice. In every other case then they're just another source of errors. You may like to read Designing Adaptive Feedback for Improving Data Entry Accuracy , not just for their suggestion in itself but for their bibliography and acquired data. These entries are (IMO) especially useful:
- S. Day, P. Fayers, and D. Harvey. Double data entry: what value, what price? Controlled Clinical Trials, 1998.
- R. M. Groves, F. J. Fowler, M. P. Couper, J. M. Lepkowski, E. Singer, and R. Tourangeau. Survey Methodology. Wiley-Interscience, 2004.
- J. M. Hellerstein. Quantitative data cleaning for large databases. United Nations Economic Commission for Europe (UNECE), 2008.
Additional care should be taken when you change them, after some time users will remember those defaults and a change will go unnoticed (causing wrong data to be entered.)
Note that defaults may also be used to drive user choice (for example to accept to receive a weekly newsletter...), that's the evidence the should be used cum grano salis.
Obviously you should be careful both choosing which defaults you provide and which fields will have them, it's not something you can decide alone, do it with your PM and with some user testing and telemetry data.
What you may consider to do (if applicable) is to design your forms to be filled with templates. User will prepare few templates for most common scenarios and instantly apply them when required (like browsers autocomplete for credit card payments.)