- Los sistemas tecnológicos modernos han evolucionado hasta volverse tan complejos que una sola persona no puede comprender el conjunto completo
- A medida que aumentan el desarrollo de software y el uso de IA, también crecen los casos en que los desarrolladores construyen sistemas sin entender sus mecanismos internos
- Simon Wardley advierte sobre el riesgo de crear sistemas sin comprensión, Adam Jacob señala que la IA está cambiando la forma de desarrollar, y Bruce Perens sostiene que la complejidad ya superó el límite
- Louis Bucciarelli muestra, mediante el caso del sistema telefónico, que la tecnología está entrelazada en múltiples capas y que nadie puede alcanzar una comprensión completa
- El artículo enfatiza que la IA profundiza esta complejidad, pero que en realidad los humanos llevan mucho tiempo relacionándose con la tecnología desde una comprensión parcial
Complejidad tecnológica y los límites de la comprensión
- Tras el declive de Twitter, en LinkedIn se ha dado una discusión activa sobre la comprensión tecnológica y la complejidad
- Se presentan como temas conectados las publicaciones de Simon Wardley, Adam Jacob y Bruce Perens
- Wardley advierte sobre el riesgo de construir sistemas sin conocer los principios fundamentales
- La expresión “Magic” se usa de forma crítica para referirse a frameworks que ocultan el funcionamiento interno, y se menciona a Ruby on Rails como caso representativo
- Jacob señala que la IA está transformando de forma fundamental la manera de desarrollar software
- La IA mejora la eficiencia, pero también tiende a hacer que los desarrolladores trabajen sin comprender la infraestructura subyacente
- Perens afirma que la situación que preocupaba a Wardley ya se hizo realidad
- Debido a la complejidad de las CPU y los sistemas operativos modernos, muchos desarrolladores entienden mal cómo funcionan realmente
El caso del ‘teléfono’ de Louis Bucciarelli
- Bucciarelli analiza en su libro de 1994 Designing Engineers los límites de la alfabetización tecnológica
- La mayoría de las personas no puede explicar cómo funciona un teléfono a nivel físico
- Se entrelazan elementos de múltiples capas como el enrutamiento, el procesamiento de señales, la transmisión satelital, la operación empresarial y la estructura regulatoria de la red de comunicaciones
- Llega a la conclusión de que “nadie sabe por completo cómo funciona su teléfono”
- Esto simboliza que los sistemas tecnológicos complejos están más allá de la comprensión total humana
Entrevistas técnicas y los ‘límites del conocimiento’
- El autor recuerda una conversación con Brendan Gregg durante su etapa en Netflix
- Gregg decía que en las entrevistas evaluaba los límites del conocimiento del candidato y su reacción ante ellos
- Realizaba las entrevistas partiendo del hecho de que “nadie comprende por completo todo el sistema”
- Este enfoque muestra que reconocer lo que uno no sabe es tan importante como la capacidad técnica
La naturaleza de la complejidad y el impacto de la IA
- Las posturas de Wardley, Jacob, Perens y Bucciarelli revelan, desde distintos niveles, la inevitabilidad de la complejidad
- Wardley: el riesgo de construir sin entender
- Jacob: la eficiencia y el distanciamiento que trae la IA
- Perens: la realidad de una complejidad ya existente
- Bucciarelli: la imposibilidad de comprender el sistema completo
- El artículo reconoce que la IA profundizará este problema, pero también recuerda la larga realidad humana de tratar con la tecnología desde una comprensión parcial
Resumen del debate de los lectores
- En los comentarios, muchos expresan preocupación por que la IA debilita el aprendizaje y la comprensión
- Algunos señalan que “cuando los LLM escriben el código en lugar de nosotros, se rompe la cadena de comprensión”
- Wardley explica que “antes la comprensión se mantenía dentro de una cadena jerárquica, pero los LLM eliminan esa cadena”
- Otros lectores responden que “es apresurado afirmar que los beneficios de la IA son mayores que sus riesgos”
- En general, la pérdida de comprensión técnica en la era de la IA y la ruptura del aprendizaje emergen como los puntos centrales del debate
1 comentarios
Comentarios en Hacker News
Lo preocupante en la programación actual es que está aumentando el "desarrollo de capa intermedia": no se conoce ni la capa de arriba (el propósito del producto) ni la de abajo (cómo se implementa).
Antes quizá no se entendía el negocio, pero sí el significado del código; ahora parece que ni siquiera hace falta saber cómo funciona el código.
Cuando uso Claude, siento que poco a poco se deteriora mi capacidad de entender el contexto. En una cultura de desarrollo donde basta con que los tests pasen y el botón responda, siento que ya no queda nada que aprender ni a lo que yo pueda aportar.
Sobre todo en las grandes empresas falta transparencia. Hubo veces en que me quedé hasta tarde para cumplir una fecha límite y luego resultó que el calendario se había movido sin que yo lo supiera.
Si me van a tratar como una simple herramienta, entonces cumpliré solo ese papel. Pero si de verdad quieren ownership, necesito un lugar en la mesa donde se toman las decisiones.
Antes perdía tiempo en tareas repetitivas de configuración, pero ahora puedo enfocarme solo en la funcionalidad principal. Gracias a eso, logro mantener mejor en mi cabeza la estructura completa.
Por ejemplo, seleccionar unas líneas en el IDE y decir por voz: "cambia esta parte así", y que se aplique de inmediato.
Si la velocidad fuera lo bastante buena, el control con mouse + voz también sería excelente como herramienta de accesibilidad.
Incluso creo que los LLM podrían reducir parte de esa complejidad. Me gustan las abstracciones razonables, pero no me gusta no conocer en absoluto lo que hay dentro.
Este texto trata sobre el fenómeno de usar abstracciones (abstraction) sin conocer lo que ocurre por dentro.
Pero ese es un proceso natural de evolución. Alguien diseñó esas abstracciones y las hizo utilizables para la capa superior.
La lógica de "como no sé de drivers de Wi‑Fi, entonces tampoco necesito entender mi código" no se sostiene.
Antes se desarrollaba la capacidad de pensar lidiando directamente con la "complejidad necesaria"; ahora muchas veces uno solo hace de tubería.
La solución sería envolver la abstracción con un DSL (lenguaje específico de dominio) en lugar de usar un lenguaje general. Si es un SaaS, me parece mejor un enfoque DSL-first que API-first.
No creo que la IA sea necesariamente peor que eso. Lo importante es entender las abstracciones en las que uno se apoya.
El árbol de dependencias es en realidad lo que causa los problemas más serios.
Basta mirar proyectos de Node.js: tienen cientos de paquetes dependientes. En la mayoría de los casos no pasa nada por no conocer el interior, pero se vuelve peligroso cuando las interfaces se rompen con frecuencia.
Muchas veces los equipos ni siquiera siguen el EOL (fin de soporte) o las vulnerabilidades. La realidad es que a veces ni saben responder: "¿esto sigue teniendo mantenimiento?"
Pero incluso antes de la IA ya había muchos proyectos atrapados en el infierno de dependencias por conflictos de versiones.
No hace falta saberlo todo, pero sí creo que la ignorancia que hace perder los fundamentos es peligrosa.
Si lo comparamos con cocinar: no hace falta cultivar trigo, pero es un problema no saber ni freír un huevo.
Si las empresas prepararan y estandarizaran toda la comida por nosotros, la pregunta sería si eso es progreso o retroceso.
Si algún día los robots reemplazan por completo la producción de alimentos, entonces dejará de importar no saber cocinar.
Después de todo, tampoco hace falta conocer ciencia de materiales para evitar la dependencia, ¿no?
Las capas inferiores, como las instrucciones del CPU y la caché, llevan décadas de validación y documentación rigurosas.
En cambio, el código generado por LLM no es igual de confiable y quizá necesite refactorización mañana mismo.
Puede que yo no conozca el funcionamiento detallado de las capas inferiores, pero sí entiendo cómo funciona mi código.
No conocer la capa de abajo y no conocer el área de la que soy responsable son cosas completamente distintas.
Ahora el verdadero peligro es que aparezcan fragmentos de código que nadie entiende.
No estoy de acuerdo con la idea de que la IA empeore necesariamente la situación.
Al contrario, como los LLM han aprendido casi todo el conocimiento disponible, pueden explicar de manera estructurada preguntas como "¿cómo funciona un teléfono?"
Los humanos tienen la limitación de no saber siquiera qué es lo que no saben, mientras que un LLM puede abarcar casi todo conocimiento expresado en lenguaje.
Claro, son débiles para razonar o generar código, pero su capacidad de integrar conocimiento es superior a la humana.
No puede reemplazar documentación real. Aun así, es muy útil para decirte, como lo haría una persona, "qué deberías buscar".
Un buen diseño hace que el sistema funcione aunque no se conozca el todo.
El problema no es que el sistema lo haya hecho la IA, sino que todavía no entendemos bien sus modos de falla y límites.
Al final, lo clave es la capacidad de diseño organizacional para coordinar a humanos e IA y construir el sistema que hace falta.
No conozco por completo el interior de una computadora, pero resuelvo problemas con automatización práctica mediante scripts.
No necesito estudiar ensamblador x86 para administrar infraestructura con Python.
Pero sí creo que los desarrolladores con experiencia tienen la responsabilidad de compartir ese conocimiento. Yo también quisiera asumir ese papel algún día.
No hay que perder la curiosidad y hay que conversar activamente con desarrolladores más experimentados.
Pero frustra ver que, por más que uno insista en la importancia de la comprensión básica, lo ignoran.
Sí puedo responder preguntas como "¿qué pasa realmente cuando introduces una URL?"
Trabajé como técnico de reactores submarinos en la Marina de EE. UU., donde aprendí desde teoría electrónica hasta troubleshooting de sistemas.
Después me pasé a TI y mantuve la misma actitud de ir hasta el fondo mediante documentación y experimentación.
Gracias a ese hábito, al resolver problemas me ayuda mucho conectar conocimientos dispersos.
También vale la pena revisar la página de Wikipedia sobre VMEbus.
Eso sí, probablemente soy una excepción, porque no tolero no entender algo.