¿Qué compartimos todos los programadores, tanto novatos como expertos? Está claro que no el lenguaje de programación: algunos aman los de bajo nivel, mientras otros se divierten escribiendo en Python. Tampoco es la capacidad resolutiva para afrontar un problema, pues esta varía según la experiencia y, a su vez, del talento propio. ¿Será acaso el ego? Aunque extendido en todos los niveles —basta dar una vuelta por LinkedIn— no necesariamente es algo compartido por todos. ¿La pasión por escribir código? Ojalá, pero me temo que hay suficientes ejemplos de personas que no aman programar y están ahí porque no hallaron otra alternativa. No es, por tanto, una pregunta fácil de responder…
William Faulkner, el famoso escritor estadounidense, escribió: «Nunca pierdas el tiempo lamentando errores. Basta con que no los olvides». Un destino común entre todos los programadores es la vivencia de los errores. Errores de código. Todos han cometido errores en su carrera. Unos más evidentes, obvios, absurdos, simplones; y otros, más sofisticados e inverosímiles, que llevaron horas y horas de depuración hasta encontrar su causa. Los errores son instructivos pero no iguales. Lo que cambia es la forma de percibirlos, de vivirlos, de incluso corregirlos. Una vivencia subjetiva. De ahí nace una diferencia que radica en la experiencia y personalidad del programador.
Un error emerge de una arquitectura. Sí, una arquitectura. Una estructura que impone límites: podemos moldearla, pero no reestructurarla por completo. Los humanos tenemos una arquitectura cognitiva basada en procesos mentales y sistemas de mecanismos —producto de la evolución— que nos permite generar código, pero no exento de errores. Un error de tipeo, una confusión al entender el requerimiento de un cliente, la elección equivocada de una tecnología, o código que funciona (verificación) pero que no cumple lo requerido (validación). Todo ello puede deberse al cansancio, a sesgos cognitivos, a limitaciones de nuestra memoria de trabajo. Somos tan falibles como el software.
Puesto frente a nosotros, cara a cara, la IA generativa también genera código. Y si genera código, también genera errores. Al igual que los humanos, la IA generativa cuenta con una Arquitectura de Error —no biológica ni cognitiva sino artificial— que se basa en capacidades estocásticas y en patrones estadísticos. Sus errores suelen ser semánticos, producto de la ausencia de contexto y del peso y calidad de su conjunto de entrenamiento.
Lo que hace verdaderamente experto a un programador es la capacidad de conocer su propia Arquitectura de Error: sus propios límites. No sus aciertos ni la cantidad de proyectos exitosos que haya conseguido. Esos límites son los que marcan las decisiones de diseño e implementación. Y, a su vez, conocer otras Arquitectura de Error —como la de la IA generativa—, sus similitudes y diferencias en cuanto a errores, es esencial para construir ese nuevo territorio compartido: software híbrido, tejido por errores humanos y errores artificiales.
Quizá, hoy, convenga más aprender del origen de nuestros errores que de sus soluciones.
Si te interesa este tema, te invito a leer mi artículo en inglés:
Architectures of Error: A Philosophical Inquiry into AI-Generated and Human-Generated Code