Um gerente anunciou recentemente que estava gastando muito tempo corrigindo bugs. Eu acho que ele acha que devemos escrever código perfeito o tempo todo (embora ainda cumpra os prazos impossíveis, é claro!) E isso me fez pensar em qual era a média de tempo gasto no setor corrigindo erros ao escrever um novo código.
Então, alguém tem alguma métrica sobre o tempo gasto na correção de bugs no desenvolvimento de novos códigos? Ou existe alguma análise empírica do tempo de correção de bugs para a indústria como um todo? 50% dos erros gastos são consertados demais ou estão certos? Como cerca de 20% ou 33%?
Fico feliz em aceitar evidências anedóticas da experiência pessoal, pois isso faria parte de algumas estatísticas aqui nas quais eu poderia comparar nosso desempenho.
Respostas:
Acima parece muito ignorante. Leitura sugerida para casos como esse: Fatos e falácias de engenharia de software de Robert L. Glass, particularmente "Fato 43. A manutenção é uma solução, não um problema".
Artigo da Wikipedia menciona 80% dos esforços gastos em manutenção de software.
Hum, dado acima, eu também me esforçaria ao analisar se todos os pedidos que você faz são realmente erros .
Na minha experiência, era muito frequente que solicitações de aprimoramentos ou novos recursos fossem enviadas como bugs. Bons gerentes envolvem seus programadores em descobrir isso - gerentes ruins, bem, continuam reclamando por muito tempo corrigindo bugs .
fonte
A primeira pergunta a fazer é se a sua "correção de bugs" está realmente corrigindo erros de codificação ou algo mais. A correção de erros de código reais deve ser relativamente pequena na maioria dos casos, desde que você tenha uma boa base de código. Se você estiver trabalhando com uma base de código ruim, a correção extensiva de erros é inevitável.
No entanto, ao colocar um programa em produção, você encontrará requisitos que não foram documentados, atividade inesperada do usuário, anomalias de dados, incompatibilidades de hardware, problemas de instalação e outros problemas que não são estritamente erros de código. Freqüentemente, gerentes e usuários consideram esses problemas de suporte / manutenção de produção como bugs, pois geralmente exigem alterações de código.
Também encontrei gerentes que agrupariam o que deveria ter sido denominado como pequenas solicitações de aprimoramento como bugs. Freqüentemente, eles são inseridos em um sistema de rastreamento de erros ou de relatórios de problemas e isso pode tornar suas estatísticas de "erros" mais altas do que realmente são.
fonte
Depende de quanto código você tem por aí, há quanto tempo ele está lá, etc.
O tempo gasto na correção de bugs no software deve ser antecipado nos primeiros 6 a 12 meses do lançamento, no entanto, à medida que o tempo se aproxima do infinito, o tempo gasto em manutenção versus o tempo gasto no desenvolvimento inicial excederá 100% - é assim que as coisas acontecem. trabalhos.
Embora eu não tenha nenhuma estatística rígida (o Code Complete tem, mas não sei exatamente qual página / seção), na minha experiência, aproximadamente 40% do desenvolvimento (às vezes até 60%) é gasto em manutenção. É óbvio que quanto mais código você liberar, mais tempo de manutenção você terá. Os erros nem sempre são funcionais e resultam tanto da incerteza quanto de defeitos programáticos.
fonte
se você está usando um bom rastreador de tickets (como Jira, da Atlasian) e passou algum tempo inserindo todas as diferentes categorias, histórias de usuários, níveis de urgência corretamente e com o acordo de seus companheiros de equipe, calculando essas métricas (e mais) são incrivelmente fáceis.
Em um projeto anterior, usamos o Jira para gerenciar nossas listas de bugs / tarefas / tarefas e, no final, nos mostrou que a maior causa de atrasos e problemas acabou sendo práticas de gerenciamento ineficientes.
Estranhamente, quando essas informações foram divulgadas, de repente nos disseram que não usaríamos mais o Jira e que um novo produto seria trazido para substituí-lo.
Nesse meio tempo, todas as solicitações de dados a serem passadas por Jira precisavam ser enviadas à equipe de gerenciamento, e nosso acesso direto foi removido.
O que não foi notado foi que, como parte do cálculo das estatísticas, a equipe de desenvolvedores tinha Jira cutucando dados em um gancho da web, e esse gancho da web era usado para passar dados para um ponto final em alguns servidores internos, onde tínhamos código que criava esses relatórios automaticamente.
Começamos a monitorar o gancho da Web e descobrimos que, mesmo sabendo que o Jira não era mais usado, ele permaneceu vivo por um período considerável de tempo (mais de 6 meses para ser exato) e o abuso por parte da alta gerência foi simplesmente desenfreado com uso incorreto.
Claro, não precisa ser algo tão complexo quanto Jira.
Se você deseja uma solução de baixo rendimento, pode usar uma planilha do Google Docs e a API de notificação do GDocs para rastrear tarefas / tickets / bugs / solicitações de recursos etc.
O próprio GDocs agora pode emitir ganchos da web e todo tipo de coisa.
Junte isso ao Git e / ou Github e a alguns ganchos que são acionados quando o código é confirmado no seu repositório, e você tem um sistema de distribuição doméstica razoavelmente eficiente, capaz de registrar uma quantidade surpreendente de dados.
Em geral, no entanto, de 100% da vida útil natural de um produto, a divisão entre desenvolvimento greenfield e manutenção é geralmente 20/80, a maior parte do custo no ciclo do ALM (Application Lifetime Management) é gasto com custos de manutenção e suporte.
Não existe tempo demais para consertar bugs, porque simplesmente não é possível escrever código sem bugs.
Boas políticas de teste e integração contínua reduzirão o déficit, mas você nunca o erradicará completamente.
Qualquer um que acredite no contrário (IMHO) não tem conhecimento suficiente para fazer um julgamento preciso ou é cego (o caso mais comum) sobre o quão difícil é realmente escrever software.
Se o seu gerente está disposto a fazê-lo, e alguns deles estão, então você pode sugerir que ele o acompanhe por um dia, para que ele possa ver exatamente o que você faz e como o faz.
Iv'e trabalhou em algumas empresas onde esse tipo de trabalho foi incentivado ativamente, com funcionários de nível superior acompanhando funcionários de níveis inferiores e vice-versa, pode ser uma experiência de aprendizado muito, muito boa para ambas as partes envolvidas.
fonte