Eu tinha lido uma entrevista com um grande programador (não está em inglês) e ele disse que "um grande programador pode ser 10 vezes melhor do que um medíocre", justificando o porquê de bons programadores serem muito bem pagos e por que empresas de programação oferecem muitas facilidades para seus funcionários. A idéia era que há uma demanda muito grande por bons programadores, por causa do motivo acima e é por isso que as empresas pagam muito para trazê-los.
Você concorda com esta afirmação? Você conhece algum fato objetivo que possa apoiá-lo?
Edit: A questão não tem nada a ver com experiência; se você fala de um grande programador com 1 ano de experiência, ele deve ser 10 vezes mais produtivo do que um programador medíocre com 1 ano de experiência. Concordo que, a partir de certos anos de experiência, as coisas começam a se dissipar, mas esse não é o objetivo da pergunta.
fonte
Respostas:
Uma visão geral e análise bastante detalhadas da pesquisa sobre diferenças de produtividade é fornecida em dois artigos escritos por Steve McConnell :
Variações de produtividade entre desenvolvedores de software e equipes: a origem do "10x"
Origens de 10X - Qual a validade da pesquisa subjacente?
O primeiro artigo ( Variações de produtividade ... ) declara:
Este artigo também tem uma observação interessante:
O segundo artigo ( ... Qual a validade da pesquisa subjacente? ) Foi escrito principalmente para tratar da revisão crítica do primeiro por Laurent Bossavit :
No segundo artigo, na seção Um mergulho mais profundo na pesquisa “10x”, McConnell verifica novamente mais detalhadamente as referências usadas no primeiro artigo e conclui:
Por uma questão de integridade, a lista de referências usadas nas variações de produtividade ... também é citada abaixo:
fonte
Um programador genuinamente terrível pode ter uma produtividade abaixo de zero (os erros que eles introduzem levam mais tempo para serem corrigidos do que levaria apenas para fazer todo o trabalho deles).
E um programador genuinamente excelente pode fazer coisas que os programadores pobres e medianos simplesmente nunca conseguiriam, independentemente de quanto tempo você lhes desse.
Portanto, por esses motivos, é difícil falar em "10x como produtivo" ou "100x como produtivo".
O que deve ser lembrado, porém, é que a maioria dos empregadores de programadores não precisa executar tarefas difíceis que os programadores comuns não conseguem gerenciar. A maior parte do código que está sendo escrito é de sites, aplicativos de linha de negócios, aplicativos de intranet etc., muitos dos quais realmente não são tão difíceis. O programador produtivo nesse ambiente é aquele que melhor entende e implementa as necessidades dos usuários, não quem pode escrever o código mais inteligente.
De fato, a maioria dos empregadores de programadores estaria melhor com um bom programador do que com um bom programa, porque o grande simplesmente fica entediado e vai embora. Preciso encontrar uma boa correspondência entre programadores e trabalhos.
fonte
Fatos e falácias dos estados de engenharia de software (Fato 2, disponível na visualização amazon):
(procure a lista de fontes para pesquisa)
Obviamente, se você comparar a produtividade de um não programador (ou um programa muito ruim) com o bom (em termos de experiência e conhecimento), a diferença pode ser infinitamente grande (
n/0 == infinity
para qualquer positivon
), mas não é justo nem comparação sensata.Seu salário pode depender de vários fatores (em ordem aleatória):
juntamente com o seu pessoal ...
fonte
Minha resposta é "sim, mas tenha cuidado ao usar essa métrica".
Um programador que, digamos, está funcionando da melhor maneira possível, é aquele que cria funcionalidade e causa menos erros que precisam ser corrigidos do que seu irmão de desempenho inferior. Não acho difícil acreditar que essas pessoas possam ter uma produtividade 10 vezes maior do que as outras, principalmente quando você considera que uma única escolha boa ou ruim feita em uma hora pode ter 10 horas de impacto e os programadores fazem muitas dessas escolhas. maioria dos dias.
Mas...
Você tem cuidado ao medir isso. Realmente não confio na maioria das medições de produtividade, pois já vi casos intermináveis em que quase todas as métricas conhecidas não consideram algo que considero vital para a produtividade da equipe. Então, eu geralmente odeio números tão difíceis por "produtividade". Aqui estão alguns exemplos:
Muitos sistemas de medição tentaram levar esses fatores em consideração, mas ainda tenho que ver que há um que leva todos esses problemas em consideração. Por isso, nunca estou muito impressionado com fatores como "um bom desenvolvedor é 10 vezes mais produtivo do que um medíocre ", porque tenho que me perguntar se a métrica é realmente responsável por todo o trabalho necessário para um produto contínuo bem-sucedido ou uma equipe próspera e bem-sucedida.
Então, minha grande ressalva é: o que você fará com essa métrica? Usarei algo assim para estar ciente de que as ferramentas e o talento certos podem causar uma grande diferença na maneira como o trabalho é realizado, mas se você tentar otimizar para uma equipe em que cada indivíduo produz 10 vezes a produção "típica", você está pronto para um caso de frustração. Melhor é encontrar uma maneira de fazer com que sua equipe faça 2 a 3 vezes o que eles estavam fazendo antes, trabalhando melhor juntos.
fonte
Em seu livro Os Duendes da Engenharia de Software , Laurent Bossavit descreve a pesquisa da reivindicação de produtividade de 10x. Ele descobriu que não há números sólidos por trás disso - a alegação passou de especulação para "fato estabelecido" por um jogo telefônico de alegações sucessivamente mais concretas na citação. A postagem do blog que compreende o capítulo sobre a afirmação 10x e inclui as citações e citações incorretas relevantes, é fato e folclore na engenharia de software .
O que ele descobriu é algo assim: alguém em 1968 fez um estudo comparando pessoas resolvendo um problema específico de depuração e descobriu que alguns deles o faziam 10 vezes mais rápido que outros. A partir disso, podemos concluir que algumas pessoas são 10 vezes melhores na solução desse problema , ou podemos concluir que algumas pessoas tiveram sorte ou uma grande variedade de coisas diferentes. Algumas pessoas optaram por citar isso como (estas são todas paráfrases) "um estudo (Sackman et al, 1968) descobriu que alguns programadores trabalham 10 vezes mais rápido que outros". Em seguida, tornou-se "estudos demonstraram que bons programadores são 10x melhores que a média" e, finalmente, "é de conhecimento geral que a produtividade do programador varia em 10x entre os indivíduos". Então alguém coleta todas essas citações, citando incorretamente uma fonte original para dizer "muitos pesquisadores acreditam ...".
Obviamente, não seria um jogo por telefone se apenas a veracidade da afirmação mudasse: o multiplicador passa para 11 e além .
fonte
" O programador produtivo nesse ambiente é aquele que melhor entende e implementa as necessidades dos usuários, não aquele que pode escrever o código mais inteligente. " (Da resposta Carson63000 )
Esse ponto-chave, juntamente com bethlakshmipontos de faz um ponto enorme. Um grande desenvolvedor pode ser ótimo em sua fatia da realidade, mas se desfaz assim que o mundo muda. Ser capaz de acompanhar as necessidades da empresa é muito mais importante do que qualquer outra coisa. No final do dia, a menos que seu negócio seja tecnologia, ele não se importa com tecnologia; eles precisam de soluções. Portanto, ser bom com padrões de design não significa agachamento para usuários finais que precisam apenas de um despejo de dados para exibir em uma página da web. Vi desenvolvedores medíocres garantirem um emprego, atendendo às empresas que os apoiam, enquanto grandes desenvolvedores ficam entediados e vão embora em busca de um desafio sem fim. Dependendo da sua organização e projeto (s), é possível alimentar esses desenvolvedores famintos por desafios, mas provavelmente haverá um momento no qual você simplesmente não não precisa dessa quantidade de poder de processamento. Esses desenvolvedores não gostam de ficar ociosos como um processador. Eles vão desligar e reiniciar em outro lugar.
Por fim, direi que não há problema em saber quem são seus "principais" artistas, mas uma "equipe" de desenvolvimento ainda é uma equipe. Para reiterar bethlakshmi, "o que você fará com essa métrica?"Se você precisar de uma equipe que se comporte como uma equipe, eu não focaria em métricas como essas. Eu perceberia que mesmo o menor jogador ainda é uma parte importante da equipe. Mesmo com 60% menos da produtividade da sua chave jogador, esse jogador pode estar dando ao seu time o que ele precisa. Descubra o que é e tente multiplicá-lo. Não queime seu principal jogador, assumindo que ele deve liderar o time, encontre maneiras de multiplicar sua saída também, contaminando os outros jogadores com essa grandeza. Isso requer um pouco de criatividade, e não apenas números. No final, você pode aprender que o que faz um bom programador não é nem mesmo esse programador; podem ser seus colegas, suas oportunidades no local de trabalho ou pode até ser você.
fonte