Good description of the evolution of one’s programming knowledge. Stage 3 sounds really familiar and – imo – defines a promising programmer who has a keen interest:
Stage 3: Conscious competence
The other day he wrote 30 or 40 lines of code for a personal project of his. He can’t help but feel a little disappointed when, browsing the net a few days later, he sees an effortless and much more elegant execution in half as many lines. He wonders when he’ll be able to write solutions of that quality on his own, straightforwardly. However, after a bit of thought, he’s searching his files. He knows he has to rewrite that piece or he won’t sleep well that night. He won’t be copypasting it.
If one really knows his stuff and understands what he does (or tries to by looking stuff up and experimenting along the way), stage 4 is inevitable (and by that defines an excellent programmer).
Wha makes the article great is that I actually do know people that got stuck in the “YouKnowSh*tAboutItAndDontEvenRealizeIt” stage (stage 1) and – as the stage’s name describes – don’t even realize it. Pity.