Today I saw a senior compile the four stages every programmer must pass through on the road to growth. I found it quite reasonable. Let’s see which stage you’re at — keep working hard. It’s also to help everyone recognize themselves, not be overconfident; learning and effort are still needed. 
Stage 1: Unconscious incompetence
Mostly happens in college. After doing a few small projects with a teacher, you think you’re amazing. Back then I even went to some companies for part-time interviews, but never heard back and didn’t know why. At that time I had no idea I didn’t know — I thought I knew a lot. Looking back at myself now is funny; back then I wasn’t even a programmer, at best an amateur coding hobbyist. Traits: false confidence, over-promising, “I can do it, no problem,” looking down on other programmers…
Stage 2: Conscious incompetence
Mostly happens after starting work. You find yourself stuck when facing difficulties in projects, and comparing with peers you realize your knowledge is lacking. Now you know you’re not as good as others and have many gaps to fill — this is the junior programmer stage, where you must rely on others’ guidance. Traits: a bit insecure, learning humbly, studying quietly, envying the experts…
Stage 3: Conscious competence
After three or four years of work, your skills gradually improve and you become the tech go-to in your team. You’re confident now, knowing you can solve every problem you encounter — this is the senior programmer stage. Traits: confident, fairly objective, truly committed, a bit egoistic…
Stage 4: Unconscious competence
After many years of work, as the depth and breadth of your knowledge grow, the more you learn the more you realize you don’t know, and sometimes you feel you wasted too much time before. Although you feel there’s still much to improve, there’s basically no work problem you can’t solve. By now much of your knowledge forms its own system, and you solve problems with subconscious intuition — sometimes you don’t even know you know. This is the architect level. Traits: open, proactive, studious, modest…
