cursos:sdd:opinion
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| cursos:sdd:opinion [2026/11/09 01:12] – Nueva página: mi opinión sincera sobre cómo programar con IA (a partir del artículo «La factoría la crea uno mismo») claude | cursos:sdd:opinion [2026/11/09 11:39] (actual) – [La arquitectura también se descubre] Lorenzo | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== | + | ====== |
| - | Lo que aprendí construyendo una aplicación Angular sin escribir una sola línea de código. Resumido en una frase: | + | //Lo que aprendí construyendo una aplicación Angular sin escribir una sola línea de código// |
| - | <note important> | + | ===== La promesa ===== |
| - | **La //software factory// la pueden usar los agentes, pero la factoría la crea uno mismo.** | + | |
| - | </ | + | |
| - | ===== 1. La promesa ===== | + | Cuando empecé a usar agentes de IA para programar, la idea que tenía en la cabeza era la que se ve en todos los vídeos: la software factory. Uno describe los requisitos de la aplicación, |
| - | La idea que se ve en todos los vídeos: describes los requisitos, los agentes se reparten el trabajo y a las pocas horas sale la aplicación terminada. El programador pasa a ser cliente de su propia fábrica: describes, esperas, recoges. | + | Me parecía plausible. Los modelos ya escriben código mejor que la mayoría de nosotros |
| - | Me pareció plausible. Si un modelo escribe una función, escribe un componente; si escribe un componente, una pantalla; y si escribe una pantalla, ¿por qué no la aplicación entera? | + | Así que me puse a montar |
| - | ===== 2. Lo que intenté y no funcionó | + | ===== El intento |
| - | * **Agentes especializados**: un arquitecto, un programador de Angular, un experto en Material | + | Empecé por donde empiezan los vídeos: agentes especializados. Un arquitecto, un programador de Angular, un experto en Material, un revisor. Cada uno con su prompt, sus referencias |
| - | * **[[cursos: | + | |
| - | * **Más reglas a los agentes**: cada regla era una decisión mía colada por detrás en un prompt. Estaba **programando a los programadores en lugar de programar**, en un bucle lento (ver el fallo, deducir la regla, escribirla, probar) y poco fiable, porque el agente seguía interpretándola | + | |
| - | Al final hice lo que debí hacer desde el principio: pedir las cosas en [[cursos: | + | El resultado fueron |
| - | ===== 3. Un teclado muy listo ===== | + | Pensé que el fallo estaba en la especificación. Si los agentes hacían cosas raras era porque no les había dicho bien qué quería. Así que pasé al desarrollo dirigido por especificaciones, |
| - | Ya no estaba | + | El siguiente paso lógico era mejorar los agentes. Más contexto, mejores referencias, |
| - | * Crea este servicio. | + | Al final hice lo que probablemente debería haber hecho desde el principio. Dejé de intentar |
| - | * Ahora una interfaz para cada vista que devuelve | + | |
| - | * Ahora un componente | + | |
| - | * Ahora refactoriza para que el componente de tabla reciba las columnas como configuración. | + | |
| - | No piqué ni una línea, literal. Pero tampoco delegué nada. **Me ahorraba mucho tiempo y a la vez iba lento.** | + | Y en ese punto, paradójicamente, es cuando empezó |
| - | ===== 4. Lo que la IA no puede saber ===== | + | ===== El primer choque |
| - | El problema | + | Lo primero que noté al trabajar así es que ya no estaba usando agentes. Estaba usando un teclado muy listo. La IA hacía exactamente lo que yo le pedía, y lo hacía bien, pero yo le pedía las cosas una a una. Crea este servicio. Ahora una interfaz para cada vista que devuelve el API. Ahora un componente que pinte una ficha. Ahora refactoriza esto para que el componente de tabla reciba las columnas como configuración. Paso a paso, con la precisión |
| - | * Cada // | + | No piqué ni una línea. Eso es literal. Pero tampoco delegué nada. La diferencia entre lo que hacía y lo que me habían vendido era enorme, y me producía una sensación incómoda: me estaba ahorrando mucho tiempo, pero iba lento. Las dos cosas a la vez. |
| - | * Los componentes compartidos tienen exactamente esa granularidad y no otra. | + | |
| - | * Los nombres van en castellano. | + | |
| - | * El framework CSS es propio, no uno de los habituales. | + | |
| - | Ninguna se deduce de los requisitos: son **decisiones de gusto con consecuencias**, | + | La tentación en ese momento |
| - | ===== 5. Cada vez más rápido | + | ===== Lo que la IA no podía saber ===== |
| - | Seguí paso a paso y apareció algo que no esperaba: **cada vez iba más rápido**. No porque la IA aprendiera, sino porque había más piezas hechas. Con la tabla, la ficha, los mensajes, la tarjeta resumen y el //layout// de página ya hechos, una pantalla nueva dejó de ser un proyecto | + | Ahí empecé |
| - | Empecé a pedir pantallas enteras y salían bien a la primera, porque la IA ya no tenía | + | La arquitectura que yo quería no estaba escrita en ningún sitio. No estaba en los requisitos de la aplicación, que hablan de qué tiene que hacer y no de cómo. No estaba en la documentación de Angular, |
| - | * Un documento con el contexto | + | Que cada controller |
| - | * Las decisiones de arquitectura: | + | |
| - | * [[cursos:sdd:08-skills-agentes|Skills]] | + | Pedirle a la IA que acertara la arquitectura |
| + | |||
| + | ===== La curva que no esperaba ===== | ||
| + | |||
| + | Seguí trabajando paso a paso, resignado a que así era como funcionaba esto. Y entonces apareció un fenómeno que no había previsto: cada vez iba más rápido. | ||
| + | |||
| + | No porque la IA aprendiera, sino porque había más piezas hechas. Cuando ya existía el componente de tabla, el de ficha, el de mensajes, el de tarjeta resumen y el layout de página, una pantalla nueva dejó de ser un proyecto para convertirse en una combinación. La carpeta del API, la carpeta de la feature con sus cuatro ficheros, la ruta, la entrada en el menú lateral. Todo predecible. Todo igual que la anterior. | ||
| + | |||
| + | Empecé a pedir pantallas enteras. Y la IA las hacía bien a la primera, sin que yo interviniera, | ||
| - | <note tip> | ||
| Cada vez que tenía que intervenir en una pantalla, anotaba qué había tenido que decir y lo añadía a la skill. Unas pantallas después, dejé de intervenir. | Cada vez que tenía que intervenir en una pantalla, anotaba qué había tenido que decir y lo añadía a la skill. Unas pantallas después, dejé de intervenir. | ||
| - | </ | ||
| - | ===== 6. La fábrica la estaba construyendo | + | ===== El cambio de perspectiva ===== |
| + | |||
| + | Fue en ese punto cuando el pensamiento se me dio la vuelta. Durante semanas había sentido que estaba lejos de la software factory porque tenía que guiar la arquitectura a mano. Y de repente vi que no estaba lejos. Estaba dentro. Lo que había estado haciendo todo ese tiempo no era construir la aplicación. Era construir la fábrica. | ||
| + | |||
| + | La fábrica | ||
| + | |||
| + | Las demos de agentes autónomos que había visto funcionaban por una razón que entonces no supe ver: la arquitectura ya venía decidida. Proyectos nuevos, stack estándar, convenciones del framework por defecto, cero legado. Ahí la IA no decide nada, solo instancia los patrones de Angular tal como vienen. La fábrica la había construido otro, el que diseñó el framework. En mi caso, con un backend propio, un CSS propio y una forma concreta de hacer las cosas, la fábrica la tenía que construir yo. | ||
| + | |||
| + | ===== ¿Se puede delegar la construcción de la fábrica? ===== | ||
| + | |||
| + | La pregunta natural es si ese trabajo también se puede automatizar. Si la IA puede, a partir de los requisitos, crear no solo la aplicación sino la arquitectura de detalle que la sostiene. | ||
| + | |||
| + | Mi respuesta, después de vivirlo, es que puede proponerla pero no puede acertarla. Y la distancia entre proponer y acertar es exactamente el trabajo que hice yo. Hay tres razones. | ||
| - | Ahí se me dio la vuelta el pensamiento. Llevaba semanas sintiéndome lejos de la //software factory// por guiar la arquitectura | + | La primera es que la arquitectura |
| - | La fábrica no es la IA. Es el conjunto de **componentes | + | La segunda |
| - | <note important> | + | La tercera es que las buenas abstracciones salen de casos reales, no de descripciones. El componente |
| - | Las demos de agentes autónomos funcionan porque **la arquitectura ya viene decidida**: proyecto nuevo, //stack// estándar, convenciones del framework por defecto y cero legado. La IA no decide nada, solo instancia los patrones | + | |
| - | </ | + | |
| - | ===== 7. ¿Se puede delegar la construcción | + | Alguien me sugirió que en vez de dictar |
| - | La IA puede **proponer** la arquitectura de detalle, pero no **acertarla**. Y la distancia entre proponer y acertar es justo el trabajo que hice yo. Por tres razones: | + | ===== Reducir |
| - | * **Es la parte sin plantilla.** Una pantalla | + | Si el coste es la transmisión, entonces lo que se puede optimizar es el canal. Yo transmití |
| - | * **Los errores de arquitectura | + | |
| - | * **Las buenas abstracciones salen de casos reales.** La tabla tiene la forma que tiene porque la usé en tres pantallas | + | |
| - | ¿Y pedirle a la IA que proponga la arquitectura | + | Es transmitir una sola vez y reutilizar. Cada decisión |
| - | ===== 8. Contarlo una sola vez ===== | + | Eso no elimina el trabajo de arquitecto. Elimina la fricción de contarlo dos veces. |
| - | Si el coste es transmitir, lo que se optimiza es el canal. Yo usé el más caro: conversación, | + | ===== La idea central ===== |
| - | Eso no elimina el trabajo de arquitecto: elimina | + | Si tuviera que resumir todo esto en una frase, sería |
| - | ===== 9. La idea central ===== | + | > **La software factory la pueden usar los agentes, pero la factoría la crea uno mismo.** |
| - | Lo que nos venden es la primera mitad de la frase: agentes | + | Lo que nos venden es la primera mitad. Agentes |
| - | No es una limitación de los modelos actuales que vaya a desaparecer con el siguiente: **es un problema de información**. La fábrica codifica un criterio, y el criterio solo lo tiene quien lo ha formado. | + | No es una limitación de los modelos actuales que vaya a desaparecer con el siguiente. Es un problema de información. La fábrica codifica un criterio, y el criterio solo lo tiene quien lo ha formado. |
| - | <note warning> | + | Cuando alguien afirme |
| - | Quien diga que su herramienta saca de los requisitos una arquitectura de detalle como la tuya vende una de dos cosas: | + | |
| - | </ | + | |
| - | Lo que yo quería es lo que tengo ahora: una fábrica que produce exactamente lo que yo habría programado, sin que yo programe. Y esa la tuve que construir yo. | + | ===== La arquitectura también se descubre ===== |
| - | ===== 10. La arquitectura | + | Podría cerrar diciendo que, si volviera a empezar, escribiría toda la arquitectura en un documento el primer día y me ahorraría el tiempo de dictado. Pero no sería verdad. No tenía toda la arquitectura |
| - | No diré que, si volviera a empezar, escribiría toda la arquitectura en un documento el primer día. No sería verdad: no la tenía entera en la cabeza. **Tenía criterio, y el criterio no es lo mismo que el diseño.** | + | Cierto componente no nació con la forma que tiene ahora. Nació como un HTML para una pantalla concreta. Cuando apareció la segunda pantalla con ese mismo HTML, vi qué era común y qué no. Cuando apareció la tercera, vi la abstracción que necesitaba y no un conjunto de etiquetas sin conexión. Cada pantalla construida me enseñaba algo sobre la pieza que la sostenía, y refactorizaba la pieza. Sin escribir código, pero decidiendo cada cambio. |
| - | La tabla no nació con la forma que tiene: | + | Eso es, creo, lo que siempre hemos llamado metodología ágil, aunque aquí no haya sprints ni tableros. Construir algo pequeño que funcione, mirarlo, ver dónde se puede mejorar y mejorarlo. |
| - | - Nació como la tabla de una pantalla concreta. | + | Así que no haría nada distinto. Volvería a ir paso a paso, porque es el paso a paso lo que me enseña |
| - | - Con la segunda pantalla con tabla, vi qué era común y qué no. | + | |
| - | - Con la tercera, vi que la configuración de columnas tenía que ser un objeto | + | |
| - | Cada pantalla me enseñaba algo sobre la pieza que la sostenía, y refactorizaba la pieza. Eso es lo que siempre hemos llamado **ágil**, aunque no haya //sprints// ni tableros: construir algo pequeño que funcione, mirarlo y mejorarlo. La arquitectura no se diseña entera por adelantado; **emerge de los casos de uso ya construidos**. Lo nuevo es que el ciclo de construir, mirar y refactorizar dura minutos en lugar de días, porque la ejecución es de la IA. Lo que sigue siendo mío es mirar y decidir. | + | //Lorenzo González// |
| - | Así que no haría nada distinto. Volvería | + | //Artículo redactado con IA a partir |
cursos/sdd/opinion.1794183129.txt.gz · Última modificación: por claude
