Corrigindo um erro que nunca causou um problema até agora

20

Recentemente, fiz uma alteração que fazia com que algum código fosse executado com muito mais frequência do que costumava ser. Isso levou à descoberta de um bug. Esse bug tinha o potencial de acontecer a qualquer momento em que o código era executado, mas porque era executado tão raramente que nunca aparecia.

Quando eu trouxe isso à atenção do desenvolvedor líder, ele queria que eu desfizesse a alteração que expunha o bug, em vez de corrigi-lo, citando o ditado: "Se não estiver quebrado, não conserte".

Está claro para mim que tivemos sorte até agora, mas ele não quis ouvir a razão.

Devo consertar mesmo assim?

Atualizar

O líder tecnicamente não tem nenhuma autoridade sobre mim. Apenas posse. Ele é o único desenvolvedor do projeto há vários anos, até um ano atrás, e acho que ele não aceita críticas construtivas muito bem. Pelo que vale a pena, não o critiquei. Eu apenas apontei que só porque o bug nunca apareceu não significava que não estava lá.

Kenneth Cochran
fonte
É um bug relacionado à segmentação ou algo mais?
TheLQ
3
Ele é o chefe por uma razão. Quando o cocô bater no ventilador, ele será o único assado. Se ele ficar assado porque você não fez o que ele pede, precisará de um remo grande.
Martin York
3
Você pode construir um caso em que o erro ocorre mesmo com a alteração desfeita? Se não, talvez não seja um bug, é uma limitação indocumentada.
precisa saber é o seguinte
3
Hmm, "Se estiver quebrado, solte outra coisa." - bem, é uma nova interpretação, eu darei isso a ele.
Orbling
1
"Se não está quebrado, não conserte"? Mas está quebrado.
StuperUser

Respostas:

26

Eu sugeriria que, se você possui rastreamento de bugs, envie-o. Se for crítico, eleve-o e leve-o à atenção dele. Deixe seu superior rebaixá-lo no rastreador. Quando as coisas derem errado, você terá a trilha do papel.

Ryan Hayes
fonte
9
Lembre-se: Cubra seu burro :-)
gruszczy
1
Não tem tanta sorte. Tudo é perfeito. Sem rastreamento de bugs, sem reunir requisitos, sem testes. Provavelmente nem teria controle de versão se a gerência não insistisse nisso.
Kenneth Cochran
18
Com base na descrição do seu ambiente de trabalho, você deveria ter concordado e sorrido quando o desenvolvedor principal disse para você não consertá-lo e, em seguida, seguiu em frente e fez o que queria fazer de qualquer maneira.
precisa saber é o seguinte
2
E não fazer essas perguntas próxima vez :-)
gruszczy
2
@ codeelegance: "Sem rastreamento de bugs, sem coleta de requisitos, sem teste. Provavelmente nem teria controle de versão se a gerência não insistisse nisso." - Doce Maria Mãe de Deus !! 1 !! Esse ambiente é totalmente irônico para o seu nome de usuário. :)
Bobby Tables
8

Pessoalmente, eu o consertaria, a menos que exigisse muito mais esforço do que valia. "Se não está quebrado, não conserte" é horrível aplicar ao software.

Se o seu desenvolvedor líder é o seu chefe e ele diz que não toque, nesse caso eu não faria.

jzd
fonte
2
A que horas do ciclo eles estão? Isso pode ser um potencial suicídio.
Job
8
"Se não está quebrado, não conserte" é uma regra perfeitamente boa para aplicar ao software - mas não quando o software está quebrado.
Steve314
Se não estiver quebrado, não conserte, aplica-se ao software, dependendo da definição de código quebrado. No momento em que você se senta e olha para o código que obviamente precisa ser corrigido, ele se quebra. O momento que você começar a soluções alternativas para código quebrado implementação, você está realmente para trás trabalhar e com o tempo o código quebrado será mais difícil e mais difícil de correção ...
Ernelli
2

A maioria das respostas e comentários sugeriu mitigar a responsabilidade pela decisão, criando um relatório de erro e permitindo que outra pessoa fizesse a ligação.

Como não tenho rastreador de erros (e duvido que alguém além de mim o usaria se o fizéssemos), fiz a próxima melhor coisa. Passei por cima da cabeça do desenvolvedor principal. Depois de explicar a situação à gerência, eles viram as coisas do meu jeito. Eles me disseram para corrigi-lo corretamente e ignorar a solicitação de demanda do lead . Eles disseram que alisariam qualquer plissado se ele descobrisse o subterfúgio e reclamasse.

Não é uma solução ideal, mas pelo menos o bug foi corrigido corretamente.

Kenneth Cochran
fonte
Você trabalhou dentro da cadeia de comando e, como tal, cobriu sua bunda. Usando o software de rastreamento de bugs é algo que sua empresa deve considerar, ajuda, pelo menos, manter o controle de coisas como esta, e solicitações de recursos, etc.
Berin Loritsch
2

Lembre-o de que a frase é: "Se não estiver quebrado, não conserte" e não "Se o cliente não percebeu, não conserte".

Dan Diplo
fonte
1

Que justificativa você tem para a mudança que fez? Se você não pode apontar quais mudanças o usuário experimentaria ou a dívida técnica foi removida, eu ficaria do lado do desenvolvedor líder em termos de dizer apenas de volta a mudança, pois isso está apenas piorando as coisas.


Você tem pelo menos algumas opções diferentes aqui em minha mente:

Se você apenas seguir em frente e consertar o erro, corre o risco de adicionar mais erros à mistura, o que poderia sair pela culatra. Dependendo da quantidade de experiência que você tem e da confiança de evitar alguma surpresa desagradável que provavelmente seria o meu guia aqui.

Se você faz o que foi instruído a fazer, é apenas culpa que seria o problema ou é mais do que isso? Estou me perguntando o que há de errado aqui, além das coisas conhecidas como princípios e valores. Quero dizer que, como uma piada, mas também um ponto honesto do que há de errado com essa ideia?

JB King
fonte
A alteração foi necessária para corrigir outro bug. O líder sugeriu que eu coloque condicionais que limitem a frequência com que o código é executado, em vez de corrigir a causa do bug. Tanto o bug que corrigi como o que descobri são rolha de exibição.
19411 Kenneth Cochran
3
Nesse caso, ele precisa ser devidamente corrigido. O uso de condições envolvidas em um problema simplesmente adia a catástrofe E adiciona mais código novo, o que pode levar a um erro. É uma solução ruim (até boba).
precisa saber é o seguinte
1

Enquanto meu instinto avassalador seria consertar os bugs para não esconder o problema, há situações em que eu segurava meu nariz e escondia o problema.

  1. O código é usado internamente e, ocasionalmente, para que as conseqüências do bug sejam gerenciáveis ​​dentro da empresa.
  2. Considerações comerciais impressionantes que exigiam remessa hoje, e uma correção de bug poderia ser lançada duas semanas depois, com consequências mínimas.

Profissionalmente, não gosto dessas respostas e deixaria claro internamente que o éter dessas situações estava ocorrendo.

Michael Shaw
fonte
0

Por fim, você não deve fazer nada que seu superior tenha dito explicitamente que não. Acredito que a melhor coisa a fazer em sua posição é criar um relatório de erro em qualquer banco de dados de rastreamento de erros que você tiver. Dessa forma, pelo menos todos estão cientes do problema e alguém com mais autoridade pode decidir o que fazer com ele.

Pemdas
fonte
0

Copie a função de buggy, aplique a correção, renomeie-a, talvez disfarce-a um pouco e chame-a.

Com base no seu comentário de dois bugs, sua melhor opção pode ser seguir a letra da lei, mas ignorar seu espírito.

Obviamente, há uma desvantagem da codificação de copiar e colar, mas parece que esse será o menor dos seus problemas.

Steve314
fonte
1
má ideia, se eu pegasse um dos meus programadores fazendo algo assim, eu o demitiria no local, é uma maneira garantida de causar danos ao código e para qualquer pessoa que precise mantê-lo.
Miki Watts
@Miki - neste caso, diga-me exatamente o que não é uma má ideia? Por favor, explique como colocar um bug de volta, porque tornou outro bug (que estava lá de qualquer maneira) mais visível é uma coisa boa. Quanto à coisa de disparar no local, eu argumentaria demissão construtiva, pois o desenvolvedor ficou com poucas opções.
precisa saber é o seguinte