Hace unos días, me encontré con un título intrigante en LinkedIn que mostraba una declaración audaz: "La empresa tecnológica tiene como objetivo aumentar la productividad de los programadores en un 50 % con GitHub Copilot". Lo que hizo que la situación fuera aún más curiosa fue que el autor de la publicación no era programador.
A pesar de la osadía del titular, creo que este tema puede dar lugar a un interesante análisis y discusión.
No se puede negar las impresionantes capacidades de las herramientas de IA disponibles para el público hoy en día. En el campo de la programación, ya están ayudando significativamente a los desarrolladores, optimizando sus rutinas y aumentando la productividad. Con las herramientas adecuadas, los problemas se pueden resolver a un ritmo más rápido.
Sin embargo, para aquellos que no están familiarizados con la programación, estas herramientas de IA pueden parecer casi místicas, dando la impresión de que pueden resolver cualquier problema de forma rápida y automática. Pero sabemos que la realidad es bastante diferente.
El entusiasmo que generan estas herramientas está plenamente justificado, y antes de formarse una idea equivocada de mí, sepan que yo también soy uno de ellos. Sin embargo, creo que no todos entienden completamente de qué son capaces estas herramientas en realidad.
Por un lado, tienes a los principiantes en programación que temen ser reemplazados por máquinas.
Por otro lado, tienes directores ejecutivos que buscan soluciones mágicas para reducir costos o aumentar la productividad, quizás sin una comprensión clara del trabajo real que realiza un programador.
"ChatGPT (o Copilot), cree una página para vender entradas para un espectáculo en Node.js. El backend debe estar preparado para un promedio de 2000 solicitudes por segundo y ser resistente a fallas. Configure un balanceador de carga para distribuir solicitudes entre servidores. Asegúrese de que los cachés sean funcionales y realmente reduzcan la carga del servidor. Instrumente herramientas de monitoreo en tiempo real. Y, por supuesto, la base de datos debe estar agrupada con una buena estrategia de replicación".
El ejemplo es demasiado exagerado, lo sé. Pero ilustra la complejidad detrás de implementar algo que puede parecer simple para alguien que no es programador.
Escribir código es solo una parte del trabajo de un programador, y estoy seguro de que las IA generativas sobresalen en eso, pero no es todo lo que hace un programador.
Nosotros, los programadores, pasamos una parte importante de nuestro día sin escribir una sola línea de código. Primero es necesario comprender los requisitos de las nuevas funciones, participar en conversaciones y ajustes con las partes interesadas, diseñar la arquitectura técnica y, finalmente, traducir toda esa información en código.
Y no olvidemos que este código debe escribirse en contexto, teniendo en cuenta cómo encaja con el resto del código base existente.
Lo que quiero decir es que estas herramientas de IA, aunque muy útiles, no hacen magia. Pero pueden ser buenos asistentes para los programadores.
Una de las lecturas que amplió enormemente mi perspectiva sobre la ingeniería de software fue el libro clásico "El programador pragmático" de Dave Thomas y Andrew Hunt. Uno de los capítulos habla de una curiosa técnica de depuración: el patito de goma.
La idea básica detrás de la programación del patito de goma es explicar el código o el problema al que te enfrentas en voz alta como si se lo estuvieras explicando a un patito de goma. Al verbalizar el problema o describir el código paso a paso, a menudo se encuentra una solución o se obtiene una nueva perspectiva del problema.
ChatGPT es excelente para conversar y, además, para conversar en contexto. ¿Podría esta inteligencia artificial ser la evolución del patito de goma de Dave Thomas y Andrew Hunt?
Ya hay extensiones para Visual Studio Code que se integran con ChatGPT, usándolo como un patito de goma. Puedes consultarlos aquí .
Me gusta cómo GitHub eligió nombrar su producto Copilot, y eso se alinea con el concepto del patito de goma. La herramienta pretende ser un copiloto en lugar del piloto real. Es el asistente del programador, su patito de goma.
Este mensaje es para aquellos que están ansiosos y preocupados por el futuro de sus carreras de programación: ¡relájense! Pero no te relajes tanto porque la dura realidad es que son los fundamentos de la ingeniería de software los que hacen a un buen programador, no solo el código.
Con la popularización de las computadoras para el público en general en los años 70 y 80, los profesionales de la contabilidad y las finanzas se sintieron amenazados por el software de hojas de cálculo. Una máquina que pudiera almacenar miles de filas y columnas y nunca cometer errores de cálculo. ¿Quién rechazaría eso?
Es cierto que las hojas de cálculo eran y siguen siendo poderosas, y representaban una amenaza para los trabajos de los "escritores de hojas de cálculo". Sin embargo, aquellos que interpretaron los datos, entendieron el contexto empresarial y aplicaron los conceptos contables ciertamente sabían cómo usar las hojas de cálculo en lugar de criticarlas.
Los programadores no son meros escritores de código. No temas a tu nuevo patito de goma; en cambio, úsalo. Y gracias, ChatGPT, por ayudarme a armar este artículo.
También publicado aquí