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.

🙂