The four stages of competence model describes the phases you go through when acquiring a skill:
- Unconscious incompetence: You don’t know what you don’t know.
- Conscious incompetence: You know what you don’t know.
- Conscious competence: You know what you know.
- Unconscious competence: You don’t know what you know.
I’ve applied this model to assess competence in binary floating-point arithmetic; let’s see where you stand:
$19.24 plus $6.95 equals $26.189999999999998; you are
- Unconsciously incompetent when you think there’s a bug in your programming language.
- Consciously incompetent when you realize that most decimal fractions are infinite in binary.
- Consciously competent when you study and apply the principles discussed in “What Every Computer Scientist Should Know About Floating-Point Arithmetic.”
- Unconsciously competent when you know to use decimal or integer arithmetic instead of binary floating-point.