The four stages of programming competence
One of the basic pillars of the study of human psychology is the analysis of the subconscious and conscious mind. Sigmund Freud was one of the first to clearly identify and characterize the ‘areas’ where our psychic energy flows. During the first part of his notable life he stated that these were the ’subconscious’, ‘preconscious’ and ‘conscious’ mind.
If we wanted to get an idea of how each of them is involved in our ideas, feelings, thoughts, decisions and motivation (which are key in our daily and professional lives), we should picture ourselves as an iceberg. The tip of the iceberg, the only part we see from the surface, is the conscious mind. It’s logical, organized, and we can control it, but still small. The vast and voluminous underlying mass is the unconscious mind. It’s disorganized, illogical, irrational, but defining in how we act.
Modern psychology has attempted to classify how good we are at a certain skill by observing how deep it perforates that iceberg. It thus describes four stages of competence an individual can achieve. In this article I’ll try to apply this simple scheme to the skill we practice everyday: programming.