¿Podría la IA del futuro escribir aplicaciones completas y quitarle el trabajo a los programadores? Entendamos de manera realista lo que la IA puede y no puede hacer a partir de 2024.
Probablemente, has escuchado a personas hablar sobre ChatGPT y otros nuevos chatbots de inteligencia artificial. Conversan sorprendentemente bien sobre diversos temas. Y sí, también pueden resolver muchos problemas de programación.
¿Pero es la inteligencia artificial una amenaza existencial para las carreras de los desarrolladores? ¿O se convertirá simplemente en otra herramienta para aumentar las capacidades de los programadores?
En esta guía, examinaremos las realidades de las habilidades actuales de la inteligencia artificial en el desarrollo de software, dónde la tecnología aún tiene limitaciones y cómo puedes proteger tus habilidades en este paisaje en constante cambio.
ChatGPT Y LLMs: Entendiendo La Tecnología IA
Los chatbots como ChatGPT no son programas que “piensan”. No comprenden el lenguaje ni la programación. Predicen respuestas con apariencia inteligente, encontrando patrones en enormes cantidades de datos de texto en línea.
Los programadores los llaman “modelos de lenguaje grandes” (LLMs), una palabra elegante para un predictor de texto potenciado con esteroides.
Para poner en perspectiva lo “grande”, ChatGPT fue entrenado con un conjunto de datos de texto que varía desde 570GB hasta 45TB, que incluye fragmentos de texto de foros en internet, libros y escritos en línea, y mucha información fue obtenida directamente de Reddit.
Este inmenso conjunto de datos de texto permite a ChatGPT generar pasajes, responder preguntas e incluso escribir código basado en indicaciones de texto. Su conocimiento proviene completamente de estos textos preexistentes, no a través de una comprensión real del mundo.
Así que, aunque ChatGPT parece hábil en la conversación, su inteligencia tiene limitaciones.
- Solo puede mantener contexto para hasta unos pocos miles de palabras.
- No tiene experiencia en el mundo real.
- No puede razonar ni hacer saltos intuitivos.
- Le cuesta entender código complejo.
Sin embargo, esta tecnología sigue avanzando rápidamente. Entonces, ¿cómo se desempeñan ChatGPT y otros LLMs en las tareas de programación hoy en día?
¿GPT Puede Escribir Código Funcional?
ChatGPT puede generar código en ejecución en JavaScript, Python, SQL, Bash y otros lenguajes cuando se le da la indicación adecuada. Es como un programador novato, pero puedes seguir dándole indicaciones para corregir errores y obtener un código funcional.
Para problemas de programación simples, ChatGPT ofrece una versatilidad impresionante y te permite ahorrar tiempo creando código básico que, de lo contrario, harías manualmente. En estos casos, los LLMs definitivamente ahorran tiempo a los programadores.
Sin embargo, su código a menudo es ineficiente o pasa por alto casos excepcionales porque no tiene el contexto completo del problema. De hecho, a veces, ChatGPT incluso advierte que su código de ejemplo requiere una revisión exhaustiva antes de su aplicación.
Entonces, sabemos con certeza que los LLMs aún no están completamente desarrollados. Pero solo podemos imaginar cuán buenos serán en el futuro, porque los LLMs avanzados tienen solo un año de existencia (ChatGPT se lanzó el 30 de noviembre de 2022).
“Si la inteligencia artificial continúa progresando a este ritmo, en los próximos 30 años, la mayoría de la humanidad enfrentará problemas en lo que respecta a los empleos, no solo los programadores”, dijo un usuario de Reddit en el subreddit /r/learnprogramming/.
Tareas de Desarrollo que la IA Puede Manejar
Aunque ChatGPT no puede reemplazar a un desarrollador senior, ofrece utilidad directa al hacer que los programadores sean más eficientes. Veamos cómo ChatGPT puede complementarte como programador y eliminar los procesos regulares más laboriosos.
Automatización de Tareas Repetitivas
Para los desarrolladores experimentados, escribir aplicaciones CRUD, scripts simples y código básico de infraestructura de backend se encuentra entre los aspectos más tediosos del trabajo.
Con la inteligencia artificial, puedes eliminar esta tediosidad a través de la generación automatizada de código. En lugar de codificar manualmente sistemas básicos de registro de usuarios una y otra vez, un modelo de IA podría producir instantáneamente prototipos funcionales adaptados al esquema de base de datos de cada proyecto.
La utilidad de la IA en la codificación repetitiva seguirá creciendo a medida que las abstracciones de nivel superior sigan ingresando en el uso común a través de frameworks como React y Django.
Procesamiento del Lenguaje Natural
A menudo, los gerentes de productos redactan especificaciones en un lenguaje cotidiano, como “Los usuarios deberían poder actualizar su información de pago guardada”. Programar comportamientos tan vagamente definidos deja mucho margen para desalinearse con las expectativas de las partes interesadas.
Con potentes modelos de lenguaje como ChatGPT 4, la inteligencia artificial puede ayudar a interpretar las solicitudes libres de formato de los clientes para establecer requisitos técnicos detallados.
Utilizando documentos y conversaciones de clientes, los modelos de lenguaje pueden ayudar a traducir solicitudes en semántica ejecutable para los programadores. Los modelos de lenguaje pueden ayudar a identificar ambigüedades para abordarlas de antemano, en lugar de en medio del proyecto, a medida que optimizas tus indicaciones.
Detectando Bugs
Los modelos de IA entrenados en volúmenes de código fuente abierto también pueden sobresalir en la revisión de software en busca de defectos. Los investigadores de Microsoft han construido redes neuronales especializadas para detectar errores, logrando una precisión mayor que la de los programadores humanos en algunas pruebas.
Como programador, podrías emplear a este compañero de IA para analizar rápidamente commits en busca de lógica defectuosa, errores de obsolescencia debido a dependencias desactualizadas e incluso fallos de seguridad. En lugar de revisar manualmente miles de líneas, obtendrás sugerencias anotadas sobre lo que necesita corrección.
Predicción de Problemas
Más allá de la detección reactiva de errores, una IA suficientemente avanzada puede predecir problemas antes de que surjan, basándose en el código que estás escribiendo. Puede hacerlo mediante la verificación continua del código e identificando si podría fallar en algún punto durante la ejecución.
O, para bibliotecas y frameworks con muchos dependientes, los compañeros de IA pueden detectar cambios importantes próximos antes de las versiones. Esto te ayuda a suavizar las transiciones y minimizar las interrupciones de manera proactiva, sin utilizar recursos adicionales.
Mejor Estimación de Proyectos y Plazos
Hablando de uso de recursos, las personas suelen subestimar crónicamente cuánto tiempo llevarán los proyectos de software. Tendemos a ser demasiado optimistas u olvidamos los riesgos. Esto hace que los proyectos terminen excediendo el presupuesto y el cronograma.
Las herramientas de IA están comenzando a ayudar al analizar datos de proyectos anteriores para ver cuánto tiempo tomaron proyectos similares. Por ejemplo, CloudBees recopila información de tus herramientas y la analiza para ti. Luego puede utilizar esta información para estimar los plazos de entrega de software.
Por supuesto, la IA no puede predecir todo lo que puede salir mal, pero considerando la cantidad de datos que analiza antes de estimar los plazos, puede ser un buen punto de partida. Con el tiempo, a medida que las herramientas obtengan más datos, las estimaciones deberían mejorar.
Optimización de tu Código
Es genial contar con un segundo par de ojos para tu código. Puede ayudarte a identificar problemas con la lógica del código, encontrar formas mejores y más simples de obtener el mismo resultado e incluso optimizar la velocidad.
Mientras los programadores continúan invirtiendo esfuerzo en refinar sistemas para velocidad y eficiencia, ajustar el código mediante prueba y error se vuelve tedioso.
Los LLMs pueden proporcionar sugerencias de optimización para ayudarte a optimizar y refactorizar rápidamente el código.
En lugar de adivinanzas a ciegas, tendrás IA que identifica fácilmente las mejoras más evidentes para obtener ganancias máximas. Puede aconsejar dividir monolitos en microservicios, agregar índices para consultas costosas o actualizar frameworks para seguir las mejores prácticas modernas.
Las Limitaciones de las Herramientas de IA en el Desarrollo
¿Deberían sentirse amenazados los desarrolladores por la utilidad de la IA en la automatización de la programación rutinaria y tareas complementarias de desarrollo?
La tecnología actual ha demostrado ser insuficiente incluso para trabajos de programación moderadamente complejos. Como resultado, aspectos fundamentales del flujo de trabajo de desarrollo parecen destinados a seguir siendo impulsados por humanos en el futuro previsible.
Código de Baja Calidad
El código generado completamente por ChatGPT u modelos similares tiende a tener fallos sutiles. Si bien es utilizable, el código no tiene en cuenta la variedad de casos especiales que podrías conocer, y sin razonamiento lógico, se basa únicamente en lo que le pides que haga.
Aquí tienes un experimento realizado por un usuario de GitHub. Puedes ver que ChatGPT hace un gran trabajo explicando y descomponiendo un problema:
Pero luego proporciona un código parcialmente correcto en el que omite la lógica para establecer la respuesta en 0 cuando n es igual a 1.
Para asegurarse de que se atiendan todos los casos especiales, el código necesitaba que agregáramos esta condición ‘if’, como puedes ver en la captura de pantalla a continuación.
Por lo tanto, el código creado con ChatGPT generalmente resulta en aplicaciones inestables que se dañan en producción debido a excepciones no gestionadas.
Hasta que la inteligencia artificial avance de manera radical, el código generado seguirá siendo demasiado deficiente para la mayoría de las aplicaciones del mundo real sin una supervisión y edición intensiva.
Riesgos Potenciales de Seguridad
Junto con los problemas de estabilidad, el código escrito por modelos de lenguaje introduce riesgos de seguridad alarmantes. Dado que la IA no siempre puede considerar los casos especiales, tu código puede abrirse a errores explotables y riesgos de seguridad.
Por ejemplo, si estás desarrollando una aplicación web y no limpias adecuadamente las entradas de usuario, los hackers pueden aprovecharlas para acceder a tu base de datos a través de inyecciones SQL y ataques XSS.
No Puede Resolver Problemas Nuevos
Para reemplazar a los programadores humanos en lugar de ayudarles, la IA debe abordar nuevos problemas. Los modelos actuales simplemente asocian indicaciones con soluciones encontradas durante el entrenamiento. En un estudio independiente, los investigadores encontraron que ChatGPT falló en un 52% de las preguntas de codificación al proporcionar código parcial o incorrecto.
Sin embargo, los usuarios aún eligieron la respuesta de ChatGPT el 39,34% del tiempo debido a su globalidad.
Solo cuando los modelos puedan deducir soluciones razonables y pensar más allá de los pasos básicos, como las personas, podrán impulsar el desarrollo de forma autónoma. Hasta entonces, su valor seguirá limitado a acelerar tareas conocidas en lugar de abrir nuevos caminos.
La IA No Tiene Comprensión Real
La IA existente no tiene una comprensión adecuada del código ni la capacidad de razonamiento abstracto; simplemente reconocen patrones en las indicaciones de entrada y proporcionan salidas relevantes “aparentes”. Sin comprensión contextual, sus soluciones a menudo pasan por alto restricciones críticas o toman decisiones irracionales que ningún ingeniero haría.
Considera la analogía de un bot médico entrenado para diagnosticar pacientes mediante la coincidencia de síntomas con enfermedades registradas. Podría desempeñarse decentemente al recomendar tratamientos comunes, pero podría recetar quimioterapia catastróficamente para un lunar en la pierna solo porque apareció un lenguaje superficialmente similar que los vinculaba.
La ingeniería, por otro lado, depende de la racionalidad y el juicio humano para crear diseños coherentes. Entonces, hasta que se logre una IA mejor, los desarrolladores pueden beneficiarse de la IA para mejorar sus flujos de trabajo de codificación existentes.
El Futuro Papel de la IA en la Programación
Aunque la IA tiene limitaciones significativas en la actualidad, el ritmo de crecimiento en este espacio es fenomenal. La IA pasó de una escritura incomprensible a una prosa impecable, indistinguible del texto escrito por humanos en tan solo un año.
En un futuro cercano, la IA podría reemplazar a un programador principiante al manejar automáticamente tareas de codificación básicas. De hecho, según las evaluaciones internas de OpenAI, GPT-4 supera significativamente a sus versiones anteriores en todas las evaluaciones, incluyendo tareas relacionadas con la codificación.
“Será una herramienta en el kit del desarrollador que hará que su trabajo sea más rápido y fácil, al mismo tiempo que introducirá un nivel de complejidad y opacidad que sin duda causará nuevos problemas”, dice Lawjarp2, un usuario de Reddit.
La naturaleza de la programación ya está evolucionando, como vemos con GitHub Copilot, CodeWhisperer de Amazon y muchos otros.
La programación pasará de ser una escritura manual a trabajar de manera sinérgica con sistemas generativos de IA, donde las personas proporcionarán contexto, visión, supervisión y resolución de problemas.
Este modelo híbrido permite que la IA se encargue del trabajo tedioso de codificación, mientras los desarrolladores se centran en la arquitectura de sistemas de alto nivel, la resolución de problemas complejos, la creatividad y la prevención de problemas.
Entonces, aunque las tareas cambien, los constructores de software no serán reemplazados por completo. Sin embargo, la profesión lucirá radicalmente diferente en varios años.
Cómo Proteger tu Carrera en la Programación para el Futuro
En lugar de entrar en pánico por la toma de control de la IA, los desarrolladores aspirantes y actuales deben reconocer a los modelos de lenguaje por lo que son: asistentes en lugar de reemplazos. Aquí tienes algunos consejos para mantener tus habilidades relevantes:
Aprende la Ingeniería de Prompts
Maximizar la utilidad de ChatGPT y GitHub Copilot depende de una composición efectiva de indicaciones. Desafortunadamente, la ingeniería de indicaciones es actualmente más un arte que una ciencia.
Pero esperar que los ingenieros codifiquen todo manualmente, como hacían las generaciones anteriores, ya no tiene sentido. Es mejor permitir que los nuevos desarrolladores aprovechen las nuevas herramientas disponibles.
Los desarrolladores experimentados deben dedicar tiempo a experimentar con modelos de lenguaje utilizando diferentes entradas y desarrollar intuición sobre lo que funciona. Recuerda que cada LLM tiene un estilo único, y es bueno comprenderlos, considerando que se están convirtiendo en parte de los flujos de trabajo diarios.
Perfecciona Tus Habilidades de Resolución de Problemas
La creatividad y la intuición humanas siguen siendo indispensables, ya que el desarrollo de software aborda problemas sin una solución clara. No se trata solo de traducir mecánicamente especificaciones técnicas en código.
Ninguna cantidad de velocidad de codificación cruda puede sustituir la elaboración de soluciones perspicaces o la creación de arquitecturas simples en entornos complejos. Así que concéntrate en el conocimiento, la creatividad y la comprensión profunda de tu industria mientras delegas el trabajo mecánico a tus contrapartes de IA.
Aprende a Empatizar con los Usuarios
Recuerda que el código se escribe para satisfacer deseos y necesidades de las personas. A medida que la IA se vuelva más capaz de asumir tareas de programación de nivel inferior, los desarrolladores deberían enfocarse en sus fortalezas, que las máquinas carecen, como la empatía.
Prioriza roles como los gerentes de productos o diseñadores de experiencia de usuario (UX) que enfatizan la comprensión de las audiencias y la creación para los seres humanos. Mantén el enfoque en el usuario, incluso al colaborar con codificadores de IA en detalles de implementación.
Estudia Machine Learning
Para aquellos emocionados por empujar límites, explorar el aprendizaje automático ofrece una visión de los últimos avances en IA con aplicaciones generalizadas. Las redes neuronales ahora respaldan soluciones desde el procesamiento de imágenes hasta la analítica predictiva.
Comprender cómo funcionan los modelos, cómo se entrenan y cómo interactúan con sistemas de software también puede ayudarte a abrir nuevas posibilidades en tu carrera. Considera complementar los fundamentos de la informática con cursos de ciencia de datos y aprendizaje automático.
Preguntas Frecuentes
¿Reemplazará la IA a los programadores en 5 años?
No. En cinco años, es probable que la IA maneje tareas de codificación más repetitivas, pero no reemplazará por completo el juicio humano y la supervisión en la creación de sistemas de software complejos. Es posible que los roles de los desarrolladores cambien con la ayuda de la IA, pero seguirán diseñando soluciones y restricciones.
¿La IA reemplazará alguna vez a los desarrolladores?
Una sustitución completa parece improbable incluso con una IA avanzada en el futuro, dadas las demandas en constante evolución del software y la creatividad intrínseca para resolver problemas novedosos. La codificación simple eventualmente se vuelve una mercancía, pero no el pensamiento estratégico de alto valor. Los desarrolladores que aprendan a aprovechar la IA en lugar de competir contra ella, seguramente seguirán empleados.
Al final del día, no temas la toma de control de las máquinas. Da la bienvenida a los compañeros de IA que mejorarán la productividad más allá de lo que cualquier ingeniero o algoritmo solo puede lograr. El desarrollo de software avanza demasiado rápido para que cualquier cambio único domine para siempre. Y especialmente en el contexto tecnológico, la adaptabilidad es la habilidad más crucial.
Entonces, en lugar de preocuparte por si el código será escrito por manos biológicas o de silicona a largo plazo, cultiva la versatilidad sin importar las herramientas que surjan.
¿Cuál es tu opinión sobre los asistentes de codificación de IA?
Los vientos del cambio están indudablemente acelerándose en la ingeniería de software. A medida que la IA evoluciona rápidamente, lo que alguna vez consideramos el dominio de la cognición humana ahora puede ser subcontratado a máquinas.
¿Permitiremos que la ansiedad por el futuro paralice el progreso? ¿O reimagnaremos activamente nuestros roles mientras nos beneficiamos del poder exponencial de esta tecnología?
Los competidores más formidables suelen ser aquellos que adoptan rápidamente la tecnología más reciente en lugar de luchar contra el cambio. Pero la clave sigue siendo equilibrar juiciosamente la ingeniosidad humana y la inteligencia artificial como fuerzas complementarias en lugar de campos opuestos.
Y así, mientras el software continúa dominando el mundo, los programadores harían bien en dejar de lado el temor y trabajar con confianza en proyectos más complejos y desafiantes.