I concur with another poster: it would be better to use the term "developer" in this context. I also agree with Klev (Kleo Petrov, see his post) that EXPERIENCE is the most important quality. In addition to experience is the ability to learn and the ability to UNLEARN when new techniques supplant old ones (clinging to MSDOS command line programming in these days of Javascript is silly, for example). Lastly, I think it is vastly important to have the characteristic of humility and practice "egoless programming": NEVER assume that one is always right, always be open to new approaches & ideas & constructive criticism.