Nota: Traducido de la versión original en Inglés.
Esta es la historia de un tal Sr. W. J., un desarrollador amable y simpático que trabajaba para una empresa de TI en una ciudad cosmopolita. Él estaba a cargo de otros cinco desarrolladores. Yo era uno de ellos.
Probablemente era mi segundo día en la empresa y me asignó una tarea de programación. Estaba trabajando en ella, tratando de descifrar de qué diablos trataba ese software que iba a ayudar a mantener durante los próximos meses. Entonces, el Sr. W. J. quiso “pedir prestado mi cerebro” por un segundo. Como no lo estaba usando, se lo presté. “¿Crees que ésta es una buena implementación?” preguntó el Sr. W. J. desconcertado, mirando la pantalla, luego a mi cara, de nuevo a la pantalla y luego al infinito. “Ummm… Yo diría…” apenas logré balbucear cuando me interrumpió. “Creo que también puedo hacer esto…” dijo y de inmediato comenzó a seleccionar toda una clase con cien líneas de código o más. Copió el código. Pegó el código. Lo pegó en un archivo vacío, cambió ligeramente el nombre de la clase e hizo algunas modificaciones en un par de líneas. Ejecutó la aplicación, probó algo en la pantalla y dijo “gracias” sin rastro alguno de ironía.
No pude resistir mi curiosidad. “Entonces… ¿vas a subir ese código?” pregunté desconcertado, mirando la pantalla, luego a su cara, de nuevo a la pantalla… “¡Sí!” respondió rápidamente sin darme la oportunidad de mirar al infinito. Pensé que sería Algo Bueno™ explicarle que el Desarrollo Orientado a Copiar y Pegar™ es algo Malo™ a veces. Explicarle a un desarrollador junior por qué esa técnica debería evitarse no es lo mismo que explicárselo a tu jefe*, así que decidí contarle al Sr. W. J. una historia sobre copiar y pegar en el desarrollo de software.
“Es curioso”, empecé a decir. “Hace algunos años, estaba trabajando en una empresa e hice algo como lo que tú hiciste”, continué. “Copié una gran porción de código, la pegué en otro lugar e hice un pequeño ajuste”, agregué. “No me di cuenta de que mi jefe estaba ahí cuando me dio una palmada en el hombro y me dijo «no hagas eso de nuevo»”, finalicé de manera convincente**. “¿Por qué dijo eso?” preguntó el Sr. W. J. desconcertado, mirando la pantalla, luego a mi cara, de nuevo a la pantalla. “No sé…” respondí derrotado mientras miraba la pantalla, luego a su cara, de nuevo a la pantalla, y luego al infinito…
* Depende mucho del jefe y del desarrollador junior en cuestión.
** Cambié los roles mientras contaba esta breve historia para ser más empático con el Sr. W. J. ¿Pensaste que yo era un maniaco de copiar y pegar? Creo que el Sr. W. J. lo era. A veces lo vi copiando y pegando identificadores de 2 o 3 caracteres de longitud.