Some time ago, I stumbled upon the Dreyfus Model of Skill Acquisition. It describes the stages through which a student moves on the road to mastery of a certain skill. That skill could be baking, fencing, programming, or even teaching.
I think that it stands to be a well-suited framework through which we can analyze certain aspects of the always-evolving profession of software engineering.
The Dreyfus Model of Skill Acquisition breaks the process of learning a skill down into six stages. My intuition is that these stages are not discrete blocks of time, but rather segments on a continuous trajectory. That is, there isn’t a specific moment we can point to and say, “that’s when stage one becomes stage two!” Instead, there are broad segments of time that compose each stage.
When a student first learns a skill, they almost always learn it from a teacher or from some kind of written resource. When this happens, they are given a specific set of rules they need to abide by, regardless of the situation.
When you are learning to ride a bike, you are told to keep pedaling, keep your hands on the handlebars, and turn by moving the handlebars in the intended direction. These are explicit rules that the learner must abide by in order to continue.
In stage two, the learner begins to notice some nuances in when or how to apply each rule. They see that some aspects of the skill in question can depend on the situation.
When you are learning to ride a bike, you very quickly learn that you should not be pedaling at the same speed all the time. If you want to go faster, you pedal with more rigor. If you are already going a speed you are comfortable with, you ease back. This is stage two.
At stage three, the student is finally competent enough that the core traits of the skill can be delegated to the subconscious, freeing up the conscious mind to focus on higher level analysis and planning.
When you have mastered the skill of balancing a bike and pacing your pedaling, you can finally free up your mind to focus on route. You can expend energy on figuring out where and how you want to get to your destination, and much less about how to stay upright. If you encounter unusual terrain, you still need to fall back to the plain rules you were taught in the beginning.
Stage four is much like stage three, but with very little to no conscious effort required for the atomics of the skill, even in unfamiliar situations. Learners are becoming more comfortable doing higher level analysis subconsciously.
It no longer takes mental effort to plan bike routes or to navigate complex terrain.
All actions involved in the skill are now mostly unconscious, even high level ones. Learners are able to invent new behaviors and adjust to new conditions on the fly without deliberation.
Bikers in this stage can perform tricks or navigate dangerous new terrain without practice or pause. If asked to perform a new trick or choose one of a number of possible routes through a complex course, they can do so without hesitation. If asked what went into their decisions, they will say that they simply made the obvious choices.
Stage six is mastery.
There is no aspect of the traditional skill that cannot be done unconsciously. The conscious mind is only needed to explore frontiers of the skill that no one has ever done before. Masters can compose two or more aspects of the traditional skill into more abstract never-before-seen complex maneuvers.
Bikers in this stage are no longer biking. They view their skill as a craft. They seek nontraditional machinery and seek to transform the bike + man system into something much grander and more beautiful.
The obvious observation here is the connection between the Dreyfus model and the Daniel Kahneman’s Nobel Prize winning work on his version of dual processing theory. In essence, both authors believe that human cognition falls squarely into two baskets:
I think this is broadly true, and it’s a lens through which software engineers rarely view skill acquisition. Some aspects of our profession are not so rigorously intellectual, while others are.
The vast majority of the software industry today seems split between two extremes:
I think this is a false duality, typical of a population in stage one of the Dreyfus model. Both of these rules are entirely context free and non-situational. Abiding by them too strictly demonstrates a novice-level understanding of software engineering.
I believe more highly skilled engineers would consider whether there are situations where they should use an LLM, and situations where they should not.
Of course, the available tools are changing so quickly, as they always do, so it is a difficult skill to learn.
While I did connect to LLMs in this post against my better judgment, I think this is a topic that gets quite under-discussed. Instead of solely thinking about how LLMs are destroying your critical thinking skills consider the nuances of skill acquisition on the whole. Perhaps, consider whether you are actively learning to intuit aspects of your profession, rather than leaving it all to the conscious mind. Are there ways you can train yourself to do this? I am not sure.
Published September 25, 2026 at 6:57 PM
Proofread by Harper.
Back in my day, we used math for autocomplete.
I have been seeing an increasingly prevalent trend of people showing up in online spaces flaunting that they are writing with the assistance of AI. They seem to be proud of this. They shouldn't be.
It didn't work for me, and if you reading this, it probably won't work for you either.