Estudio de caso personal sobre los límites de la generación de código con IA y la pérdida del criterio humano
(github.com/jackdoe)- Biblioteca de implementación del protocolo SWD para depurar el núcleo RP2350 RISC-V, con una arquitectura en la que se usa una Raspberry Pi Pico2 para que otra Pico funcione como sonda
- Aproximadamente el 80% del código fue generado por IA (Claude); el autor creó un prototipo base con osciloscopio y documentación, y luego dejó que la IA expandiera el código
- Durante el proyecto, experimentó una fuerte repulsión y escepticismo debido a la estructura de tokens sin sentido del código de IA, la pérdida de contexto y la pérdida de sentido de propiedad sobre el código
- En cambio, obtuvo una experiencia positiva al usar la IA como herramienta de apoyo para análisis de documentación, decodificación de datos y generación de estructuras
- Este caso expone los problemas de calidad, criterio y propiedad del código generado por IA, y plantea preguntas fundamentales sobre la esencia de la programación y el papel del ser humano
0. VIBE CODE WARNING
- Aproximadamente el 80% de todo el código es generado por IA (vibe coded), y gran parte del README también fue generado automáticamente
- El autor implementó por su cuenta, apoyándose en un osciloscopio y en la documentación, elementos como SBA, lectura/escritura de registros, comandos abstractos y PROGBUF, y luego dejó en manos de la IA la conversión a biblioteca
- A medida que el código creció de 1,000 a 4,000 líneas, perdió por completo la estructura y el significado del código, y dejó de sentirlo como algo escrito por él
- La IA interpretó mal
dap_read_mem32, lo que provocó una gran cantidad de errores de protocolo y código ilógico - Como resultado, completó cerca de 10,000 líneas de código en 10 horas, pero sin ninguna sensación de logro ni de crecimiento
Diferencias entre el código humano y el código de IA
- El código escrito por humanos está compuesto por tokens con intención y propósito, por lo que puede entenderse; en cambio, los tokens del código de IA se leen como combinaciones sin significado y son difíciles de interpretar
- Algunas partes del código de IA muestran una calidad superior a la humana, pero la línea inmediatamente inferior puede ser código erróneo que solo parece convincente
- Esta falta de uniformidad y la pérdida de confianza perceptiva paralizan la capacidad de juicio del programador
- Cuanto más crece el código, más desaparece la sensación (taste) de distinguir si un código es bueno o malo, y se derrumban el modelo mental y el sentido de propiedad
Emociones humanas y dudas
- El autor se pregunta: “¿Esto es programar?”, y expresa repulsión y vergüenza
- En una era en la que la IA escribe código en lugar del humano, confiesa una confusión existencial sobre qué debe crear el ser humano y hasta dónde debe intervenir
- Ni siquiera tiene certeza de si simplemente “no escribir código” es progreso, o si “no modelar el problema” es eficiencia
- Menciona que todavía quiere construir algo por sí mismo, pero que en un entorno de desarrollo centrado en IA ese significado se ha vuelto difuso
Experiencias positivas de uso de la IA
- Evalúa como eficiente y satisfactoria la IA cuando se usa para análisis de documentación, decodificación de datos de osciloscopio y generación automática de estructuras en C
- En particular, sintió una verdadera sensación de logro al leer el primer registro y acceder a memoria mediante SBA
- Es decir, puede haber una experiencia positiva cuando se usa la IA no como autora del código, sino como asistente
Reflexión final
- La generación de código con IA es rápida, pero provoca la pérdida de significado, criterio y propiedad
- Cuando desaparece el “gusto” (taste) humano por el buen código, también se tambalea la esencia de la programación
- El autor espera que este fenómeno sea una fase transitoria, y concluye diciendo que ni siquiera él sabe qué sería una “programación mejor”
Las secciones técnicas posteriores del texto original (1~20) son una documentación detallada de implementación del protocolo de depuración RP2350 RISC-V, e incluyen una especificación técnica completa de toda la pila de depuración, como la jerarquía SWD, registros DAP/DAPC, ejecución de PROGBUF, acceso SBA, control de hart, tracing, reset y estructura de doble hart.
Sin embargo, el tema central es un estudio de caso personal (Vibe Code Warning) sobre la “desconexión entre el código generado por IA y el criterio humano”.
1 comentarios
Opinión de Hacker News
Entiendo el sentimiento de quienes dicen que “la IA le quitó la diversión a programar”, pero yo creo que es más importante ‘terminar las cosas’ que ‘hacerlas’
Antes, la gente que encendía faroles de gas perdió su trabajo por culpa de la luz eléctrica, pero al final lo importante era darle luz a la ciudad
Para mí, la IA es una herramienta para materializar ideas y producir resultados. Sigo invirtiendo tanto tiempo y esfuerzo como los ‘programadores de verdad’, pero el foco está en definir problemas, modularizar, probar, corregir bugs y mejorar iterativamente
Lo importante es crear un mundo donde los humanos puedan sentir significado, dignidad y disfrute.
Si voy a comer algo delicioso, pero quienes lo hicieron sufrieron para producirlo, o si fue hecho por robots de una fuerza malintencionada, no lo quiero.
La sociedad es para los seres humanos, no una simple lista de verificación de eficiencia
En proyectos personales puede estar bien, pero en entornos con clientes, usuarios o accionistas hacen falta resultados demostrables
La analogía del farol de gas no encaja. La IA no es un sistema físico como la electricidad, sino software.
Al final, lo importante es resolver problemas. Si no los resuelve, eso no es más que trabajo
Mucha gente no programa solo para hacer software útil, sino por el placer de crear
Los “programadores de verdad” también pasan su tiempo pensando, definiendo, probando y corrigiendo
Un “dispensador inteligente de hilo dental”, un comprador automático de papel higiénico o bots como Clippy son puro desperdicio de tiempo y energía
Más allá de simplemente obtener un resultado, hay una gran satisfacción en el proceso de aprender y entender
Al leer Adrift, 76 Days at Sea, sentí que el conocimiento profundo puede marcar la diferencia entre la vida y la muerte
Esto también se parece al dilema entre alojar tus propios datos o dejarlos en manos de un servicio centralizado
Cuando veo en internet un texto que expresa perfectamente lo que pienso, siento un verdadero consuelo
Gracias por hablar de la experiencia humana en vez de sumarte al ruido de “ajusta así tu prompt”
Para salir de ese estado, necesito dormir bien una noche
Te da respuestas casi correctas, pero psicológicamente tiene una capacidad de enganche parecida a la del juego
Alguien dijo que “escribió 10 mil líneas de código con IA en 10 horas y fue terrible”, pero esa experiencia cambia por completo según el enfoque
La estructura de los prompts, la planificación, la revisión, las pruebas y el control del ritmo varían de persona a persona
Muchos desarrolladores novatos prueban un enfoque improvisado al que llaman vibe coding y fracasan
El cansancio es grande, así que estoy tomando un descanso, y algún día pienso construir mis propios agentes
Siento que es peligroso dejar esto en manos de grandes tecnológicas como OpenAI, Microsoft o Anthropic
Al final me parece que no pasa de ser una palabra de moda
Se siente como huir hacia la gestión del proyecto para no tener que aprender una librería nueva
Incluso el famoso artículo “Just Talk to It” se quedaba corto en los detalles
Cuanto más improvisado es el proceso, más planificación rigurosa hace falta. ¿Ese es el punto que querías marcar?
El código público ya dejó de ser, en muchos casos, algo hecho por humanos
Si ese código vuelve a entrar como dato de entrenamiento, existe el riesgo de que el mundo se llene de aún más resultados sin sentido
Ya hubo casos en investigación lingüística donde recolectar datos dejó de tener sentido porque había demasiado texto generado por máquinas
En la mayoría de los casos, la dirección todavía la pone una persona
Claro, si un niño de 12 años escribe “yolo 3d game now”, sí da un poco de miedo, aunque también suena genial
Leer código hecho con vibe coding se siente como leer “English as She is Spoke”
La gramática está bien, pero no parece código escrito por un ser humano
Yo pienso algo parecido
Normalmente, cuando desarrollo una app, paso varios días formando un modelo mental en mi cabeza, y hasta en la ducha sigo replanteando la estructura
Pero con el vibe coding ese contexto interno desaparece, y leer el código se vuelve doloroso
En cambio, leer código que yo mismo escribí sí me da gusto
Entiendo las conexiones entre sistemas y el flujo de datos, pero los detalles de implementación se me vuelven difusos
A mí me pasó algo parecido. Los LLM le quitaron parte de la diversión a programar
Mi rutina ahora es una secuencia de “escribir prompt → esperar un poco → repetir → revisar código”
Entiendo la estructura del código, pero como ya no lo trabajo directamente con las manos, la profundidad de mi comprensión se vuelve más superficial
Tal vez con el entrenamiento adecuado se pueda hacer bien, pero todavía no llego a ese punto
Sí me sirve para generar tests. Escribo yo mismo un buen test y le encargo el resto a la IA para ahorrar tiempo
Así puedo entender sus límites y luego reescribirlo con un mejor diseño de sistema
Incluso el código verboso del LLM me parece mejor que el código rarísimo que dejaron algunos desarrolladores del pasado
El texto exagera un poco, pero igual me identifico
Los LLM sirven para entender y resumir código existente, para autocompletado y para que personas no desarrolladoras hagan prototipos, pero
nunca deberían usarse para escribir código de producción
La solución es hacer grounding del modelo
En código, la forma de hacerlo es con desarrollo guiado por pruebas (TDD)
Primero escribes los tests, confirmas que fallen, verificas por qué fallan y luego haces que escriba el código
Así se crea una especificación de comportamiento del código, que después sirve como documentación para personas o agentes
Leí completo el README en GitHub y el autor admitía que 3/4 del código era generado por IA, pero aun así reclamaba copyright
Ya existen precedentes legales que dicen que el contenido no creado por humanos no puede recibir protección de copyright