Como a maioria das pessoas, penso em mim como um pouco acima da média em meu campo. Sou bem pago, recebi promoções e nunca tive um problema real de obter boas referências ou conseguir um emprego.
Mas já estive por perto o suficiente para perceber que muitos dos piores programadores com quem trabalhei pensaram que eram alguns dos melhores. Programadores ruins, cercados por outros programadores ruins, parecem ser os mais iludidos.
Eu certamente não sou perfeita. Eu cometo erros. Eu sinto falta de prazos. Mas acho que faço o mesmo número de movimentos que os "outros bons programadores" fazem. O problema é que eu defino "outros bons programadores" como "pessoas que são como eu".
Então, eu me pergunto, existe alguma maneira de um programador fazer algum tipo de auto-avaliação razoável? Como sabemos se somos bons ou maus em nossos trabalhos?
Ou, se termos como bom e ruim são muito mal definidos, como os programadores podem identificar honestamente seus próprios pontos fortes e fracos, para que possam tirar proveito do primeiro e trabalhar para melhorá-lo?
fonte
Respostas:
Um bom programador entende que eles precisam continuar aprendendo e crescendo. Eles se esforçam para fazer o melhor possível, admitir falhas e aprender com elas.
Eles são extraordinariamente comunicativos. Eles não apenas são capazes de explicar termos técnicos complexos a um leigo, mas também se esforçam para atuar como defensores do diabo em suas próprias idéias, para garantir que estão dando as melhores opções para seus clientes.
Os melhores programadores sabem e aceitam que há mais de uma maneira de fazer as coisas, que nem todo problema é uma unha e que, porque sempre há uma maneira melhor de fazer algo do que o que eles estavam planejando, eles constantemente procuram aprender novas técnicas. , tecnologias e compreensão.
Um bom programador adora programar e o faria em seu tempo livre, mesmo que já gaste mais de 80 horas por semana em programação.
Um bom programador sabe que não é um grande programador. Verdadeiros programadores não existem; existem apenas aqueles que afirmam ser ótimos e aqueles que sabem que não são ótimos.
fonte
Como Paul Graham aponta eloquentemente neste podcast , você não pode. Somente seus colegas de trabalho podem lhe contar.
fonte
Sempre achei que é mais fácil julgar seu desempenho fazendo duas coisas.
A questão, é claro, é encontrar bons programadores e, em seguida, ser um bom programador também não se trata apenas de codificação. Você precisa ser capaz de trabalhar bem em grupos, mas também trabalhar sozinho.
Agora, para sair do tópico, citarei Robert A. Heinlein e sua opinião sobre o assunto:
fonte
Esta é a Matriz de Competências para Programadores apenas para você: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm
fonte
Jeff tem um dos meus posts favoritos sobre este tópico ... Por que eu sou o melhor programador do mundo
"... não é nosso trabalho ser melhor do que qualquer outra pessoa; só precisamos ser melhores do que éramos um ano atrás."
fonte
Eu acho que o fato de você estar fazendo a pergunta prova que você não é um programador ruim, portanto, na minha opinião, você está no meio do caminho. :)
Programadores ruins sempre pensam que são ótimos programadores, na minha experiência.
fonte
A afirmação de Nick "Os programadores ruins sempre pensam que são ótimos programadores ..." é explicada pelo Efeito Dunning Kruger , que generaliza que as pessoas que sabem um pouco sobre um assunto geralmente superestimam o quanto elas realmente sabem.
Sendo um pouco ridículo ... quanto menos você pensa que sabe, mais provavelmente sabe ... a menos que seja um idiota realmente consciente.
Respondendo à pergunta original, embora eu costumo pensar que quanto mais influência (não controle) você tiver, geralmente é um bom indicador. Se você vir outros seguindo sua liderança ou adotando suas práticas, estará no caminho certo.
fonte
A resposta que obteve mais votos positivos é realmente angustiante. Basicamente, ele diz que você não tem vida fora da programação. E a família? Comunidade? Hobbies? Em que tipo de profissão estamos onde você precisa se preocupar até o ponto de obsessão para ser considerado "bom"? Eu realmente acho que precisamos ter alguma perspectiva aqui.
fonte
Você pode tentar competir nos concursos do algoritmo TopCoder .
fonte
Só essa percepção faz de você um programador melhor do que a maioria dos programadores ruins por aí.
Muitos dos piores programadores tendem a pensar que já sabem tudo o que há para saber e não estão cientes de suas limitações. Como resultado, eles nunca melhoram suas habilidades.
fonte
Se você olhar para o seu código de, digamos, um ano atrás, e pensar: caramba, eu poderia ter feito isso muito melhor, você provavelmente é bom :).
fonte
Aqui estão alguns exemplos reais de má programação. Obviamente, código semelhante estava em todo o lugar, copiando / colando em 100 locais. O cara foi demitido, mas ouvi dizer que ele conseguiu um bom emprego novamente. Desfrutar:
a)
b)
c)
d)
Se você criar esse tipo de código, pare a programação. Se você não vir nada estranho nesse código, pare a programação. Caso contrário, você não é ruim, então você pode até ser bom :)
Edição: Para responder aos comentários: Eu consegui emprego antes de me formar, e esse cara já tinha alguns anos de experiência em programação. Ele foi demitido alguns meses depois de eu ter trabalhado, então não estava em posição de orientar ninguém. Os exemplos acima foram do topo da minha cabeça - toda a paz de código que ele tocava era falha de várias maneiras imaginativas. A maioria das coisas começou a surgir depois que ele saiu da empresa, porque só então outras pessoas viram algumas partes do código. Ele geralmente é um cara legal, agradável de conversar, etc. Mas NUNCA será um bom programador, assim como nunca serei um bom pintor, escritor ou qualquer outra coisa.
Para contrastar isso com outro exemplo, o cara que veio substituí-lo também estava na graduação. Ele estudou faculdade mais famosa por administração do que por programação. Ele não é muito nerd no sentido de que programou qualquer coisa por diversão ou se sentava em casa e lia sobre java ou programação, mas está indo muito bem. Ele se ajustou rapidamente e começou a produzir código útil e de manutenção. Algumas pessoas podem fazer isso, outras não - basta perguntar diariamente.
fonte
instance
campo nunca é atribuído umType
exemplo e assim permanece semprenull
=)Existem algumas coisas que você pode tentar, para obter uma melhor avaliação de como você se empilha.
(Coloquei esse último porque, na minha última empresa, um programador recebeu "desenvolvedor do ano" duas vezes em três anos. Depois que ele saiu, encontramos pelo menos 20 trechos de código dignos de TDWTF. Ele desenvolveu o código rapidamente , mas não necessariamente bem A gerência simplesmente não sabia a diferença.)
fonte
Permita que outros desenvolvedores com quem você trabalhe ou vejam seu código.
As pessoas realmente usam o que você gosta e vêem o que pensam.
- Kevin Fairchild
fonte
Você consegue entender isso?
:-)
fonte
Apenas o simples pensamento de que você precisa se auto-avaliar faz de você um corte acima do resto.
Uma maneira de eu sempre me julgar é ouvir o que meus colegas de trabalho têm a dizer sobre mim. O truque é encontrar as pessoas certas.
fonte
É sempre subjetivo quem é um bom programador. Concordo com Nick que simplesmente fazer a pergunta é um passo na direção certa. Eu acho que o desejo constante de aprender mais e melhorar é o que faz um bom programador.
fonte
Para mim, os melhores programadores nunca estão procurando trabalho. Eles têm ofertas permanentes para novos cargos apenas com base em sua reputação. Portanto, um bom programador pode receber ofertas de empregadores anteriores, se assim o desejarem. Ou um bom programador teria perguntado a ex-colegas de trabalho sobre vir trabalhar para eles em uma nova empresa.
Em termos de pontos fortes / fracos, você provavelmente já os conhece. Caso contrário, pergunte a uma pessoa mais experiente de sua equipe. Nem precisa ser um desenvolvedor. Um bom gerente de projetos conhece os pontos fortes / fracos dos programadores. Além disso, as características que definem um bom programador não se limitam apenas ao código. Noções básicas sobre negócios, habilidades de comunicação, discernimento etc. são realizadas fora do seu IDE.
fonte
Eu acho que isso é como perguntar como você pode saber se você é uma pessoa legal.
Infelizmente, acho que a resposta é que apenas outras pessoas credíveis podem lhe dizer isso. Não acho que seja algo que você possa determinar com precisão (pelo menos é muito difícil - mas acho que pode ser impossível).
fonte
eu diria simplesmente: se você é apaixonado (quero dizer, REALMENTE apaixonado) pelo que faz, se é flexível (outro idioma, nova tecnologia, remake completo de um projeto antigo - vamos fazê-lo!), se continuar aprendendo e melhorando suas habilidades e nunca, nunca pense que você é bom o suficiente para parar - então você é um bom programador!
fonte
95% de todos os programadores acham que estão entre os 5% melhores programadores, os outros 5% são gerentes. Portanto, se você é um gerente, provavelmente não é um bom programador; caso contrário, provavelmente é.
fonte
Eu acho que é mais uma questão do que você faz com suas habilidades de programação. Ser um bom programador é bom, mas o que importa se você estiver codificando software bancário o dia todo (sem ofensas). Simplesmente não se soma.
Para realmente provar a si mesmo que você é um bom programador, assuma um projeto paralelo interessante e difícil. Isso mostra algumas coisas: você está interessado em programar em seu próprio tempo livre e realmente gosta do assunto - isso é essencial para ser um bom programador. Isso mostra versatilidade, pois você pode ampliar suas habilidades além do que faz no ambiente de trabalho. Também mostra motivação e criatividade: você definiu um problema por conta própria e está tomando medidas para resolvê-lo.
Todos esses aspectos definem um bom programador para mim.
fonte
Minha resposta será politicamente incorreta. No entanto, sou realmente o fundador de uma startup e meu trabalho é contratar os melhores programadores.
Como sei quais pessoas serão bons programadores ou podem ser bons programadores?
1 palavra: QI.
O QI é para programação, assim como a altura é para jogadores de basquete.
Eu colocaria as habilidades de matemática como outros indicadores mais politicamente corretos. Meus professores de ciência da computação me disseram que há um critério que prediz corretamente quem terá sucesso nos cursos de programação. Pontuações de matemática do ensino médio. Esses são efetivamente QI de qualquer maneira.
Isso pode ser uma surpresa. Dizem-nos que a programação é um trabalho de graduação. Adivinha, eu não me importo com o diploma. Eu me importo apenas com 3 coisas.
Infelizmente, o QI mede apenas uma coisa. Então eu faço alguns testes.
Eu faço perguntas às pessoas. Pergunta simples, espero que o garoto do ensino fundamental seja capaz de responder.
Eu faço perguntas como:
Se você olhar com cuidado, essas perguntas não requerem criatividade. Apenas senso comum. Qualquer criança do ensino fundamental com QI pode responder a isso.
A maioria dos graduados da faculdade não pode. Agora imagine se alguém não puder responder a isso? Ele pode programar? Pense nisso. Quantas vezes você terá que especificar o que ele deve fazer?
Você também pode fazer perguntas como a Microsoft que exigem criatividade. Você pode fazer perguntas sobre como pesar 8 bolas em uma balança para saber qual é a mais pesada. O problema com essas perguntas é que isso envolve sorte. No entanto, alguns são bastante fáceis, deve ser um requisito mínimo.
Conseguir um programador incrível pode melhorar a moral de outros programadores. Conseguir um programador legal pode diminuir o moral de todos os outros.
Depois que as pessoas podem responder perguntas como essa, o que é muito fácil, eu as faria escrever algum código do Google Jam.
Bons programadores podem resolver o código do Google Jam e prever quais problemas são mais fáceis.
fonte
imho você é um bom programador se
-você tem uma sólida formação teórica. reinventar a roda, assim como um algoritmo ou estrutura, é uma perda de tempo, na maioria das vezes.
-Você pode ver coisas e problemas de uma perspectiva distorcida às vezes. isso pode levar você a encontrar soluções inovadoras.
- você gasta tempo e dinheiro com esforços para atualizar as melhores ferramentas e as melhores habilidades.
-se seu código é fácil de modificar. se você criar um código limpo, elegante e compreensível, modificá-lo não será doloroso.
-se sua taxa de código / bugs for razoavelmente alta. Sei que isso pode parecer trivial, mas conheço muitos desenvolvedores criativos e qualificados que, no entanto, são muito propensos a fazer bugs triviais. isso prejudica enormemente sua eficácia e utilidade.
as pessoas ao seu redor sabem que você pode ajudar a decidir quais escolhas fazer
-Você pode resolver problemas usando ferramentas diferentes. programadores ruins continuam usando a mesma ferramenta (seja uma linguagem, uma tecnologia, uma arquitetura etc.) para qualquer problema que possam ter
- você continua aprendendo, é curioso.
- você se diverte programando, depois de todos esses anos
fonte
... minha conclusão é que bons programadores exigem um salário baixo e fazem pouco barulho ... :)
fonte
Melhor programador: conclua a tarefa com o menor número de instruções de código dentro do prazo.
fonte
Quantos bugs seu código possui por alguma métrica? (ou seja, bugs por linha) Quanto do seu código precisa ser recodificado quando novos recursos precisam ser adicionados? Seus colegas de trabalho têm problemas para modificar seu código?
Em última análise, é quase impossível responder à questão, uma vez que a questão do "o que é código de qualidade" ainda é um assunto muito debatido depois de todos esses anos.
fonte
Eu realmente gosto do que Adam V disse acima.
Além do que os outros disseram, observe o histórico de manutenção e suporte do seu trabalho. Se o seu código possui muitos requisitos de manutenção e está sendo constantemente corrigido ou é difícil de alterar, esses podem ser indicadores de sua qualidade. Mas esses também podem ser indicadores de requisitos insuficientes.
fonte
É muito difícil auto-avaliar. Pessoas incompetentes tendem a ter avaliações inflacionadas de suas próprias habilidades.
Uma boa métrica é se outras pessoas que você respeita como programadores desejam trabalhar / com o código que você escreveu. Dada a chance de trabalhar diretamente com você ou de herdar o código que você escreveu, será recusado? Concorda de má vontade? Ou aproveite a chance de aprender com seu trabalho? Essa técnica funciona ainda melhor se for um colega, não um subordinado ou alguém que acha que pode haver algum benefício em fazer você se sentir bem.
fonte
Se você realmente deseja descobrir, envie algum código para seus colegas e peça uma revisão (construtiva) do código. Na pior das hipóteses, você aprende algo. O simples fato de você estar aqui neste site buscando a iluminação já o diferencia das massas não lavadas. (a menos que você esteja aqui apenas para afagar o ego. :-)
fonte