In addition to my opinion that coding excellence is more akin to personal discipline, a la yoga, I think that software has an intrinsic escape hatch/built-in flaw (so to speak).
The feedback loop on software is often simply whether the client was happy with the feature. (Or the boss being happy with the work effort.)
Now, if the developer gets positive feedback even though they might not have coded it as good as an expert, what would drive them to think they need to do better that that? I submit: only an internal drive to push yourself, to stretch your mind, to see if there are alternative ways to do things more effectively. And that is not the norm in most professions, and quite probably not the norm in the software profession.
Most folks are satisfied at doing a “good job” as defined by their “clients.” And why shouldn’t they be?
Were our profession more like woodworking or even music, I think we would have an easier time spotting the difference between a mediocre woodworker, a competent woodworker, and a master craftsman woodworker. In woodworking or music, lousy technique is very evident — even to the lay person. From poor design aesthetic, to poor construction technique, to bad finishing.
So, we continue to struggle to show the downstream impact of today’s decisions. How can we improve this?