Los large-language models (LLM) han mejorado muchísimo sus capacidades para la generación de código, provocando que cada vez más desarrolladores de software se apoyen en herramientas como GitHub Copilot en su día a día. Herramientas como Devin AI de Cognition AI incluso prometen ser un ingeniero de software totalmente autónomo.
Ese avance hace que surja un debate muy interesante, una pregunta de difícil respuesta y que genera temor en muchos: ¿podrá la IA reemplazar a los desarrolladores de software?
Hoy, la IA como un asistente, ¿y en el futuro?
La forma de desarrollar software ha evolucionado increíblemente a lo largo de los años. No hay necesidad de remontarnos hasta las tarjetas perforadas, podemos situarnos más cercanos en el tiempo. Seguramente, los desarrolladores más jóvenes no se imaginen cómo se programaba en el pasado cuando no existían IDEs capaces de sugerir o autocompletar código. Tampoco cómo se hacía antes de que existiera StackOverflow.
De la misma manera, muy probablemente, los desarrolladores dentro de algunos años no concebirán el desarrollo sin asistentes virtuales tales como GitHub Copilot, que los ayuden a escribir código más rápido y con menor esfuerzo.
Hoy en día, aún es común que dichas herramientas generen código de dudosa calidad, cometan errores o alucinen, y requieran de prompts precisos y del buen criterio del desarrollador para que el código llegue a buen puerto. Los modelos se entrenan a partir de código existente, que no siempre es de alta calidad, y tienen limitaciones para generar ideas que vayan más allá de ese conjunto de datos de entrenamiento. El pensamiento crítico y la resolución de problemas no son aún capacidades con las que cuenten.
Pero al ritmo vertiginoso al que evolucionan, no sería inverosímil imaginarse que las limitaciones actuales vayan desapareciendo en los próximos años, por lo que surge la pregunta: ¿llegará acaso un momento donde no concibamos que una persona escriba el código de una aplicación en lugar de que lo haga directamente una IA a la que le especifiquemos lo que necesitamos? A fin de cuentas, los modelos están entrenados a partir de millones de repositorios de código, en más tecnologías y frameworks que los que un programador podría aspirar a dominar a lo largo de su carrera.
Explorando el futuro de la programación a través de las perspectivas de John Carmack
Recientemente, dos tweets de John Carmack han captado la atención de quienes se realizan esa pregunta, ofreciendo perspectivas interesantes sobre la evolución de la programación en la era de la inteligencia artificial. Para quienes no lo conocen, John Carmack fue cofundador de id Software y el programador líder detrás de videojuegos icónicos como Commander Keen, Wolfenstein 3D, Doom y Quake. Tras su influyente carrera en el mundo de los videojuegos, Carmack fue CTO de Oculus VR, antes de fundar una startup dedicada al desarrollo de inteligencia artificial general (AGI).
En su primer tweet, Carmack comparte una conversación privada con una persona que está considerando una carrera en ingeniería de software. La persona expresó su preocupación de que la IA podría hacer que su futuro trabajo quede obsoleto incluso antes de terminar sus estudios. La respuesta de Carmack subrayó la importancia de desarrollar habilidades centradas en el producto, recordando que el software es simplemente un medio para satisfacer necesidades de las personas. Ya sea escribiendo código manualmente, aprovechando la ayuda de un asistente, o guiando a una IA para que haga el trabajo, cada enfoque sigue siendo un método válido para generar valor de negocio.
En el segundo tweet, Carmack responde a un fragmento de un discurso de Jensen Huang, CEO de Nvidia. Huang sugirió que en lugar de que todos aprendan a programar desde una edad temprana, la tecnología debería evolucionar para resolver los desafíos de la programación utilizando lenguaje natural. Carmack reafirma que el verdadero valor no reside en la programación en sí, sino en la capacidad de resolver problemas. Aquellos que puedan abordar problemas complejos continuarán añadiendo un valor significativo, sin que las habilidades de programación resulten una barrera.
El desafío de agregar valor en el mundo que viene
Me parece sumamente interesante pensar en la programación como una herramienta más, como un medio más para resolver problemas, la verdadera habilidad de un desarrollador de software. La generación de código mediante IA permitirá mejorar la productividad, ahorrando muchísimo tiempo en código estándar, en lo repetible, en lo automatizable, en donde el desarrollador aporta menos valor.
No tengo claro si en un futuro la IA logrará desarrollar requerimientos complejos, con integraciones entre sistemas y otras dificultades semejantes. Pero sin lugar a duda, va a resultar cada vez más crítico el conocimiento específico del negocio, el entender las necesidades de los usuarios particulares y cómo agregarles valor. Difícilmente la IA pueda desarrollar un producto a medida, que se salga de lo establecido, que sea un diferencial respecto a lo existente y en lo que la IA está entrenada.
La IA nos ayudará a resolver problemas más rápido y de forma más eficiente, pero no lo va a hacer por nosotros. Por lo tanto, la IA podrá hacer que la programación en sí sea menos relevante, y seguramente cambiará la forma de trabajar, de la misma forma que las abstracciones y lenguajes de alto nivel lo hicieron en el pasado. Pero me animaría a responder la pregunta original diciendo que no: la IA no va a reemplazar a los desarrolladores de software. A fin de cuentas, ya sea programando totalmente a mano o apoyándonos en una IA, vamos a seguir aplicando tecnología para mejorar la vida de las personas.
Por Christian Smirnoff, Software Head Architect de Baufest.