- Em 1982, a equipe de software do Lisa da Apple introduziu uma política de rastrear o número de linhas de código semanais de cada desenvolvedor para lançar o software
- Bill Atkinson defendia que linhas de código eram uma métrica equivocada de produtividade de software
- Ele reescreveu completamente o motor de cálculo de regiões do Quickdraw, reduzindo cerca de 2.000 linhas de código e melhorando o desempenho em 6 vezes
- Atkinson escreveu -2000 no formulário de gestão em que precisava reportar a quantidade de código
- No fim, os gestores deixaram de exigir que Bill enviasse o formulário
A equipe de software do Lisa em 1982 e a política de rastreamento de linhas de código
- No início de 1982, a equipe de software do Lisa começou a se concentrar na meta de lançar o software nos 6 meses seguintes
- Alguns gestores decidiram que acompanhar o número de linhas de código escritas por cada engenheiro toda semana ajudaria no progresso
- Para isso, foi introduzido um formulário no qual, toda sexta-feira, os engenheiros registravam e enviavam a quantidade de linhas de código escritas
A visão de Bill Atkinson sobre critérios de produtividade
- Bill Atkinson, que projetou o Quickdraw e a interface do usuário, considerava que o número de linhas de código não podia ser um critério de produtividade de software
- Ele enfatizava que o objetivo era tornar os programas o menores e mais rápidos possível
- Havia a percepção de que medir linhas de código poderia, ao contrário, incentivar código bagunçado e ineficiente
Refatoração e otimização do motor de regiões do Quickdraw
- Atkinson havia recentemente reescrito por completo o motor de cálculo de regiões do Quickdraw com um algoritmo mais simples e genérico
- Como resultado da otimização, a velocidade das operações de região melhorou em até 6 vezes
- Nesse processo, cerca de 2.000 linhas de código também foram naturalmente eliminadas
O relatório de -2000 linhas de código e a reação dos gestores
- Ao preencher o formulário de gestão da primeira semana, Atkinson escreveu -2000 no campo referente ao número de linhas de código
- Não está claro como os gestores reagiram a esse número
- Algumas semanas depois, disseram a Bill que não precisava mais enviar o formulário, e ele recebeu isso com satisfação
1 comentários
Comentários do Hacker News
O commit de que mais me lembro como o meu melhor foi quando apaguei cerca de 60 mil linhas de código e substituí um “servidor” inteiro, que mantinha todo o estado em memória, por uma lógica enxuta de umas 5 mil linhas
Na época da faculdade, trabalhei para uma empresa cuja política gerencial era a de que calouros conseguiam escrever bom código, e no fim eles acabaram virando um caso de fracasso não comprovado
Sobre esse tema, alguém reuniu threads populares do Hacker News sobre “código de -2000 linhas” em um link
O projeto de web UI pelo qual fui responsável tinha 250 mil linhas de código, sem contar o backend
addEventListenerpor toda parte. Eu até brincava dizendo que “esse é o tipo de código que sai se você der a um monge um livro de JavaScript e dez anos de solitária”switch/case/if/else/ternárioaninhados, SQL misturado com JS/HTML/HTML embutido em JS, e zero testes automatizadosHá uma tirinha do Dilbert sobre uma estrutura de recompensa infinita: o chefe do Dilbert promete recompensa em dinheiro para cada bug corrigido, e o Wally diz “acho que hoje vou programar pelo menos uma minivan!”
Compartilhamento de um caso real de remoção de 64 mil linhas no repositório
dotnet/runtimeSempre que vejo estatísticas dizendo o quanto LLMs aumentaram a produtividade dos desenvolvedores, lembro dessa história clássica
Não sou formado em Ciência da Computação; aprendi tudo na prática, trabalhando
Ao olhar minhas estatísticas no monorepo interno da empresa antes da avaliação de fim de ano, descobri que eu tinha virado uma pessoa “negativa” em saldo líquido de código
Há muito tempo, fiquei chocado com um caso lamentável de KPI em um grande projeto onde os líderes técnicos mantinham manualmente, offline, e colavam na parede a contagem de bugs por desenvolvedor (bugs corrigidos e bugs causados)