Logic will get you from A to B. Imagination will take you everywhere.
— Albert Einstein
After years trapped in the software factory and many long hours of bitter experience, software development becomes second nature. Once you are familiar with the syntax of your programming language, understand the concepts of program design, and have learnt to appreciate the difference between good and bad code, you find yourself naturally making reasonable coding decisions without discernible effort. Daily coding activities and “design in the small” become instinctive. Correct syntax flows from your fingers’ muscle memory.
A mindless “shoot from the hip” approach is symptomatic of the cowboy coder, but experienced programmers can work incredibly effectively without much deep thought. This is the benefit that experience brings you.
Have you reached this stage?
According to the Four Stages of Competence model, described in Live to Love to Learn, this idealic state is unconscious competence. It is an act we are able to do without needing to consciously think, a task we can perform effectively without even realising exactly what we’re doing and how difficult it is.
There are many activities in which we achieve a state of unconscious competence. Some are professional. Some are far more mundane: most humans can walk and eat without careful concentration. A common task in which people see their skills progress through the four stages of competency is driving a car.