Aceitar o código de outros

Nos primeiros 10+ anos de minha carreira de programação, trabalhei
quase que exclusivamente em meu próprio código . Às vezes eu lia o código de outras pessoas, mas raramente
precisava alterá-lo.

Por alguns anos, trabalhei com outro colega de trabalho, mas nos juntávamos
regularmente e o código que escrevíamos geralmente era projetado por nós dois. Portanto,
embora não fosse totalmente meu código, era um código que eu entendia e
com o qual concordo .

No meu novo trabalho, juntei-me a uma equipe com um grande número de
projetos pré-existentes , que agora ajudo a manter. Definitivamente, esse código não é
meu e trabalhar com ele exige uma mudança contínua de atitude de minha
parte.

Uma abordagem que tentei algumas vezes é dizer: “Vou apenas substituir
esse outro código pelo meu código, então tudo ficará bem.” ‘Bem’ não foi
assim que as coisas aconteceram, em parte porque o código se mostrou resistente à
refatoração fácil e em parte porque eu abordei o código de um lugar de
arrogância – “Oh, este código não é meu e como o meu é obviamente superior I não preciso entender o que esse código está fazendo, só preciso
substituí-lo. “

E, como descobri, se você tentar substituir um código que não
entende totalmente , provavelmente está fadado ao fracasso. Eu descobri isso mais
de uma vez, na verdade. Sugerindo que talvez eu não seja o melhor aluno.

Minha habilidade que falta aqui, eu acho, é empatia. Empatia com os
programadores que escreveram o código que agora mantenho e, estranhamente, com o
próprio código. Não sei exatamente como alguém pode ter empatia com o código, mas
é o melhor termo que tenho para o desejo de investigar e compreender
o propósito e o significado do código.

A empatia com os programadores é mais fácil de explicar do que a empatia com
seu código. Não sei as circunstâncias que levaram a este código: que
pressões de tempo foram enfrentadas, que conhecimento os programadores tinham ou não,
que requisitos mudaram na reunião da manhã, etc.

Claro, posso olhar para um método enorme com if-loops aninhados e dizer: “Isso
deve mudar.” Mas acho que algo em que preciso trabalhar não é dizer:
“Isso foi mal feito e só a minha solução é a certa.”