Sobre a pergunta e usando o que o pessoal falou aqui…
Uma coisa que tem que verificar na pergunta, é:
- Você é um bom profissional? Ou você é um bom empregado?
Apesar de parecer a mesma coisa, acho que tem uma certa diferença. Exemplo: Um bom profissional não vai se sujeitar a fazer algo absurdo que não concorde. Um bom funcionário sim, porque ele atenderá aos interesses da empresa.
Um caso desses é do piloto de Formula 1, Nelsinho Piquet que aceitou provocar um acidente para favorecer a escudeira. Péssimo profissional, mas ótimo funcionário.
Concordo com o Leonardo3001 quando ele diz: “enxergar e criar abstrações” e “entender o que acontece por trás de suas ferramentas”. Ter visão das coisas é a base de um bom profissional.
Bird89du diz: “Ter comprometimento com seu trabalho/projeto;” Eu faço uma observação aqui. Um bom profissional terá comprometimento com seu trabalho, mas não quer dizer que vai concordar com tudo que é imposto pela empresa. Um funcionário que tem comprometimento com o trabalho no sentido de aceitar o trabalho que lhe é dado sem questionar é um bom funcionário.
Ainda Bird89du "Saber fazer as tarefas necessárias para que o projeto ande. " Esse quesito envolve tanto o bom profissional quanto o bom funcionário.
Sobre o que o ViniGodoy falou, “Para mim um programador competente é aquele que faz o seu código:”
- De maneira rápida; Isso implica em ter visão das coisas como o Leonardo falou, sem visão jamais um programador conseguirá desenvolver de maneira rápida
- De maneira limpa e organizada; Mesma coisa do item anterior
- Atento à necessidade da empresa. Acho que isso já cai na questão do bom funcionário. Mas um bom profissional pode exergar coisas que o diretor por exemplo nao enxerga. E o que é realmente a necessidade da empresa nesse caso? O que o diretor fala, ou o que o programador fala?
Hora da polêmica 
UMC diz
“Programador BOM! já nasce programador e não precisa fazer “curso pra aprender” curso só pra aperfeiçoar e Tira um certificação que é importante!”
O que o UMC diz aqui e eu concordo com ele, é que existe a questão de ter DOM para programar. Se a pessoa tem um raciocínio lógico bom, ela terá muito mais chances de ser um bom profissional.
Inclusive quem não tenha uma boa lógica, não será um bom programador. E não adianta esforço.
Então, para mim, o requisito mais básico para ser um bom profissional na computação, é ter lógica.
Programar envolve criatividade, e para mim o que envolve criatividade é arte. Logo, programar é uma arte. Como qualquer arte nascer com o dom influencia.
E assim como qualquer arte você pode treinar. Mas por mais que você treine, não será ainda melhor do que alguém que já nasceu com o dom.
Se não, o Barrichelo teria passado o Schumacher…
Ser um bom funcionário não é contra ser um bom profissional. Os dois podem andar juntos. O problema é quando um bom profissional está em uma empresa pouco profissional, aí o bom profissional para a empresa passa a ser um empregado ruim. Mas a culpa é dele? Acho que não…
Então um profissional é bom por si só. Um bom funcionário, vai depender da empresa onde ele estiver.