Há muitas histórias sobre códigos intencionalmente incorretos, não apenas no TheDailyWTF, mas também no SO. Os casos típicos incluem:
- Tendo uma construção inútil que desperdiça tempo (por exemplo, um loop vazio com um valor enorme), para que os programadores possam "acelerar" o aplicativo facilmente, removendo-o quando for solicitado.
- Fornecer documentação intencionalmente enganosa, incorreta ou inexistente para gerar solicitações de suporte caras.
- Rapidamente gerando erros, ou pior, gerando, mesmo que tudo funcionasse bem, bloqueando o aplicativo para que uma chamada de suporte cara seja necessária para desbloquear.
Esses pontos exibem uma atitude mais ou menos maliciosa (embora às vezes por acidente), especialmente o primeiro ponto ocorre com bastante frequência.
Como lidar com essas construções? Ignorar o problema ou apenas remover o código incorreto? Notificar o gerente ou falar com a pessoa que introduziu o "recurso"?
Respostas:
A maioria dos códigos ruins é devido à falta de entendimento e a solução é a educação.
O código intencionalmente incorreto é totalmente diferente, devido a algo completamente não relacionado à experiência do codificador ou ao restante do projeto. Como tal, você precisa descobrir por que eles estão sabotando o código de propósito e lidar com esse problema. Isso significa, com mais frequência do que isso, a política do escritório, e isso raramente é uma situação agradável para ninguém.
Como eu lidaria com o lado político depende de muitas circunstâncias (não declaradas acima). Como eu lidaria com o código é primeiro garantir que não sou o único mal-entendido - que realmente é um código ruim - e depois corrigir as deficiências óbvias. Se for razoavelmente possível, escreva testes de que o código incorreto falhará. Verificar duas vezes que entendi corretamente significaria conversar com a pessoa que escreveu o código. Isso deve ser feito de uma maneira muito agradável e educada, sem assumir a intenção e pode ajudar a encontrar a razão (política) subjacente necessária posteriormente.
O envio é mais importante que a perfeição da torre de marfim, mas há dois pontos que vale a pena abordar. A correção de deficiências óbvias gera 80% dos resultados com 20% do esforço, e esse tipo de fruta baixa raramente vale a pena ignorar. Porém, o mais importante é que, se você não abordar a razão (política) subjacente, é provável que, mais intencionalmente, um código incorreto seja gravado e cause mais problemas - e possivelmente impeça o envio.
fonte
Nunca (em 20 e tantos anos) me deparei com códigos intencionalmente ruins, mas os exemplos que você cita parecem (pelo menos para mim, mas IANAL) tentativas de fraudar um empregador ou um cliente; portanto, você provavelmente tem um advogado obrigação de indicar ao seu gerente.
fonte
Depende da cultura da empresa. Na maioria das vezes, simplesmente não é seu trabalho corrigir e limpar todo o código incorreto.
De Coders at Work , o pensamento de Jamie Zawinski sobre a superengenharia, que também pode ser aplicado nessa situação:
Existem muitos codificadores e códigos ruins por aí, e simplesmente tentar consertá-los todos à medida que você os encontra, às custas do projeto / tarefa atual, pode simplesmente não valer a pena se o produto "estiver funcionando". Com muita freqüência, somos todos apenas programadores de fita adesiva.
Veja também o post de Joel Spolsky: The Duct Tape Programmer
fonte
Essa atitude é o sintoma de algo pior.
A gerência está incentivando a competição do desenvolvedor?
Onde está o espírito de equipe?
As tarefas são atribuídas por outra pessoa que não a própria equipe?
...
De qualquer forma, remover o código incorreto não é suficiente. Reclamar com o gerente certamente não ajudará a melhorar o espírito de equipe.
Eu tentava falar diretamente com a pessoa e tentava entender o porquê fazendo muitas perguntas sem julgá-la. Toda a equipe tem que fazer isso sem agressividade.
Na maioria dos casos, esse comportamento construtivo coloca o problema real (o pior) em evidência, e você pode trabalhar nele.
Se realmente não funcionar. Remova esse desenvolvedor da equipe.
fonte
Se eu pensasse que era intencional, provavelmente demitiria o cara! Se for o resultado de alguém não ser um programador suficientemente bom, eu trabalharia em suas habilidades. Se estivesse sendo empurrado de cima, provavelmente começaria a procurar um novo emprego.
fonte
Dependendo do contexto, qualquer um desses pode ser o mais apropriado. Outras possibilidades incluem pedir para transferir para um projeto diferente, conseguir um novo emprego e vários atos de moral e / ou legalidade questionáveis.
No entanto, como não conhecemos os fatos reais e as pessoas reais envolvidas, não há como alguém na posição que você está descrevendo estar prestando muita atenção aos nossos conselhos / 2 centavos.
Se você está falando de uma situação real, pode valer a pena conversar com seu gerente, pedindo conselhos sobre o que você deve fazer. Se possível, tente conversar sobre o que você pode / deve fazer, não sobre apontar o dedo. Se possível, não nomeie nomes. Há uma boa chance de que seu gerente já tenha uma idéia do problema.
Mas o outro lado é que você pode estar soprando isso fora de proporção. Pense muito sobre isso antes de fazer qualquer coisa. Pense nas consequências, incluindo a possibilidade de que quaisquer medidas que você tome possam sair pela culatra ... muito.
fonte