...is the best of the FourLevelsOfCompetence. (Originally discussed in MysticalProgramming.)
A PromptingQuestion?: Is UnconsciousCompetence what happens when you are perpetually in the MentalStateCalledFlow? -- KyleBrown
No, but they're correlated. "UnconsciousCompetence" is when you know a field so well that you can tell how well something follows all the rules just by looking at it.
The expert walks in the room, looks at your code and says "the CodeSmells." He says you need to break a class into 2 or 3 classes, and gives you a rough plan for splitting the methods. Did he compute the coupling and cohesion of the modules? Did he compute statistics on the length of methods, like minimum lines, maximum, average, deviation, etc...? No. With substantial experience in the field, the expert has seen many instances of good and bad designs and has developed a "gut feel" for good design. The expert may "explain" their pronouncement by applying detailed rules, but that's an afterthought (a rationalization); they didn't come to their conclusion by working mentally through a whole bunch of detailed rules. -- JeffGrigg
So, to draw this all back to Patterns, what has happened is that (in Alexander's terms) the expert has an internal "Pattern Language" that he can express in this particular situation. --KyleBrown
Certainly the expert can detect the QualityWithoutaName. If they also have expertise mentoring they have a good pattern language they use to describe the code. If they aren't good teachers they'll just rewrite it for you, leaving you amazed and astounded. --SkipSailors
Sufficiently advanced UnconsciousCompetence is indistinguishable from magic.
I like it!... nice reference echo.
How can I tell whether I have UnconsciousCompetence or UnconsciousIncompetence? It seems to me that the two are only distinguishable by outside observers.
I would think that with UnconsciousCompetence, you at least know that you are good at the thing, you just don't know how to describe how you do it.
Haven't you ever met a programmer (particularly a young one) who thought they were "Gods Gift to Code", yet you didn't want them on your project if they were the last typist on Earth?
Where are people coding that competence is so common that it admits to several categories?
This topic is very Taoist - in particular, the concept of Te, the "natural" virtue in things and people. Here is Chuang-Tzu talking about UnconsciousCompetence (tr. H.A. Giles - ASIN 0404569153):
"Ch'ui the artisan could draw circles with his hand better than with compasses. His fingers seemed to accommodate themselves so naturally to the thing he was working at, that it was unnecessary to fix his attention. His mental faculties thus remained one, and suffered no hindrance."
This is the feeling I get when a programming project is going really well!