Rodrigo Strauss :: Blog
Programando melhor: evite criticar o código alheio
Uma das situações comuns na vida de um escovador de bits é a necessidade de editar código escrito por outras pessoas. E essa é uma situação com a qual muitos programadores não estão preparados para lidar, pois envolve muito mais o lado pessoal do que o lado técnico. Mas, tecnicamente, verdade seja dita: é difícil ler e entender código dos outros. Pelo simples fato da linha de raciocínio ser diferente. É difícil, mas algo que precisamos aprender a lidar.
Todo programador segue uma linha de raciocínio para implementar uma funcionalidade em um software, linha essa que foi moldada com anos de programação. Independente de design patterns ou padrão de codificação, a forma de resolver problemas é algo muito pessoal. Tudo que o programador lê ou aprende sobre algoritmos é absorvido e empregado de formas diferentes. Patterns e standards ajudam a minimizar isso, mas não modificam a forma como as coisas são.
Criticar código dos outros, principalmente para seus colegas de trabalho, é chato e pode te causar problemas. A pessoa que escreveu o código pode ser quem senta do seu lado, e talvez ele não goste muito de ser criticado (alguém gosta?). Além disso, todo código escrito tem uma história, e no contexto dessa história tudo tem um bom motivo para ter sido feito daquela forma. Você não pode julgar cegamente algo só por aquilo que você está vendo.
Um bom motivo para um código aparentemente ruim é a inexperiência de quem escreveu. Você não pode exigir de um programador iniciante a mesma qualidade de algoritmo de alguém com dez anos de experiência. Você já foi iniciante um dia, e acredito que quando lê um código que você escreveu a alguns anos atrás chega a sentir vergonha. Mas é assim que funciona, as pessoas aprendem, ninguém começa sabendo. Além disso, se um programador iniciante foi colocado para fazer uma parte crítica do sistema, a culpa é de quem o alocou para essa tarefa.
Você nunca sabe a situação que levou à criação de um certo código. Talvez o código não tenha sido feito da melhor maneira possível porque era véspera de feriado e o programador queria ir embora. Justificável ou não, é um bom motivo. Se o programador ficou enrolando a semana inteira e resolveu fazer uma gambiarra às 17:30 de sexta é um problema dele com o gerente dele, não é um problema seu. Talvez o gerente inventou um prazo maluco sem consultar os programadores, o que é a coisa mais comum desse planeta. O fato é: você não sabe.
Nós somos pagos para resolver problemas, certo? Resolva os problemas e evite criar outros. Criticar código alheio só cria problemas, raramente resolve alguma coisa. Já conheci gente com bom conhecimento técnico mas que ninguém suportava, tudo devido à esse costume de criticar todo o código que aparecia pela frente. Espero que todo mundo saiba que só conhecimento técnico não resolve.
Na frase "código feio que está funcionando em produção", a parte que importa é a "...está funcionando em produção...". Pense bastante antes de refazer algo que está funcionando, e não critique o código. Fale em "reestruturação para facilitar a manutenção" e não em "refazer aquele troço nojento que eu não entendo". Afinal, como você pode refazer algo que não entende?
Em 06/12/2007 16:50, por Rodrigo Strauss





Você tocou em um ponto muito importante da programação que é: não estamos sozinhos. Quase nunca o código vai ser 100% nosso, e mesmo que seja, quase sempre o construímos em cima de algum framework, biblioteca ou modelo já inventado há milhões de anos.
E desse tópico importante, o mais importante que você disse foi: entender o código do outro. É muito fácil criticar um sistema operacional que você não conhece, uma linguagem de programação nova ou o código de um colega que não está mais entre nós; difícil é reconhecer que se estava errado, rever seus conceitos e entender o que incomoda no código, se é preconceito ou tem justificativa lógica (exemplo: isso pode dar problemas na condição X).
PS: que bom que você está voltando sua velha freqüência de postagens. Eu já estava achando que eu estava postando demais da conta =).