El costo oculto de hacer "copy-paste" al programar

Hola Pythonistas, les traigo una historia que ocurre cientos de veces cada día:

Pablo es un programador ávido que está trabajando en una función para encontrar los 10 archivos más antiguos en una jerarquía de directorios anidados.

Necesita resolver este problema para ayudar a automatizar una tarea complicada (manual) para uno de sus clientes, una firma contable.

Por lo tanto, Pablo abre su navegador y digita algunas palabras clave en la caja de búsqueda de StackOverflow. Cuando de repente, una respuesta aparentemente útil aparece ante el entre los primeros resultados de la búsqueda.

La “respuesta” implica alrededor de 20 líneas de código conciso de Python. Utiliza la función os.walk y el módulo heapq internamente.

Pablo no conoce mucho de eso, pero el sujeto que escribió la respuesta tiene una reputación de 49,717 en StackOverflow, así que debe ser correcta…

Pablo realmente necesita terminar esta funcionalidad de búsqueda de archivos pronto, así que copia las líneas pertinentes del código de la respuesta y las pega en su editor de código.

Un poco de renombrar y agregar imports más tarde y “¡Misión Cumplida!”, Pablo puede alejarse y tomar otra taza de café.

¡Buen trabajo!

Así es como se supone que la programación funciona estos días, ¿Verdad?

No estoy tan seguro…

Quedar “atascado” y necesitar hacer alguna búsqueda es una necesidad diaria para cualquier programador que conozco (Incluyéndome).

Pero cada vez que eso ocurre, puedes hacer una elección que tenga un impacto a largo plazo:

¿Escoges la primera respuesta de StackOverflow que aparezca e implementas lo que sea que sugieran ahí? O ¿Usas la respuesta como inspiración y te tomas el tiempo para aprender un nuevo concepto desde cero, el cual puedes usar para resolver el problema?

Cualquiera de las dos opciones resuelve el problema… y ambas tienen sus aplicaciones en la práctica.

Así es como me gusta pensar a la hora de tomar esta decisión:

Tomarse el tiempo para estudiar un problema es cómo “Mejorar tu vocabulario” en un idioma extranjero. Construyes un conocimiento a través del tiempo del cual puedes beneficiarte a largo plazo.

Copiar y pegar la primera respuesta que parece adecuada, por otro lado, es como “contratar un traductor”. Si, resuelve el problema inmediatamente, pero dependerás del traductor para siempre.

Hay un montón de consejos del estilo “Contratar a un traductor” por ahí en el mundo de la programación y esto juega a menudo en nuestra contra.

Mi intención no es atacar a StackOverflow, vale la pena aclarar. StackOverflow es un recurso que utilizo casi diariamente.

Pero mi punto es:

Cuando observas el panorama completo, la comodidad siempre trae costos ocultos. El camino más fácil no siempre es el más provechoso.

Así que, considero que, a largo plazo, “construir tu vocabulario” es la mejor estrategia para lograr la fluidez en la programación.

¿Estás de acuerdo con mi forma de pensar respecto a este tema? ¿Tienes un punto de vista diferente al mío?, te invito a que lo discutamos en la sección de comentarios.

¡Feliz día!

Traducción de un email del newsletter de Dan Bader.