Um bom programador sabe resolver problemas. (ou quase ponto final)
De forma eficiente, entendendo a necessidade do usuário, buscando o melhor caminho, otimizando custos (seja de desenvolvimento, seja operacional)
Um bom programador ensina aos seus suboordinados, coordena uma equipe, organiza um projeto.
Essa é a minha visão para uma pergunta um pouco ampla como a sua.