“The traits of a proficient programmer – Bridging the gap between competence and proficiency” is a good continuation of the recent “What is a Senior Developer?” discussion. This time, the question “Do you know what the difference between competence and proficiency is?” is asked and answered:
Competence means having enough experience and knowledge to get stuff done; proficiency involves knowing why you are doing something in a certain way, and how it fits into the big picture. In other words, a proficient practitioner is always a competent practitioner, but the opposite may not be true.
There are also some tips on how to become proficient.