Nadie te lo cuenta: el trabajo real empieza después de que la IA dice 'listo'
Estoy construyendo mi primera app iOS sin saber Swift. Claude Code montó todo el andamio en una noche. Luego abrí el Simulador, y comenzó el trabajo real.
Nunca he abierto Xcode en mi vida.
No sé Swift. No sé SwiftUI. No sé qué hace un macro @Observable ni por qué AVAudioSession necesita una categoría. Hace dos días, si me hubieras preguntado qué era StoreKit, habría adivinado que era una app de muebles.
Y aun así estoy construyendo una app iOS nativa — y descubriendo que el código generado por IA te lleva aproximadamente al 60% del camino. El 40% restante, la parte donde una base de código se convierte en un producto, es enteramente trabajo humano. Eso es lo que ninguno de los posts de "construí X con IA" menciona jamás.
La app es para DIALØGUE — mi generador de podcasts con IA. No un wrapper web. No React Native. Una app SwiftUI real con Apple Sign-In, compras dentro de la app, un reproductor de audio con controles en la pantalla de bloqueo y localización en 7 idiomas.
¿Por qué ahora?
El 3 de febrero, Apple anunció que Xcode 26.3 soportaría codificación agéntica — con el Anthropic Claude Agent SDK integrado. No solo autocompletado. No solo sugerencias turno a turno. Agentes completamente autónomos que pueden explorar la estructura de tu proyecto, buscar en la documentación de Apple, capturar Xcode Previews para ver lo que están construyendo e iterar a través de compilaciones y correcciones por su cuenta.
Claude Code ahora puede hablar con Xcode a través de MCP. Puede ver el Simulador. Puede leer advertencias de compilación y mensajes de error. Puede ver cómo luce realmente la interfaz y decidir si necesita cambiar.
Eso cambió el cálculo para mí. Llevaba meses pensando en una app iOS nativa pero seguía postergándolo porque no sé Swift. Con Claude Agent en Xcode, la pregunta pasó de "¿puedo aprender Swift suficientemente rápido?" a "¿puedo describir lo que quiero con suficiente claridad?"
Todavía no está terminada. Todavía estoy en la fase final de pulido, todavía encontrando cosas que no funcionan bien, todavía aprendiendo Swift leyendo el código que Claude escribió para mí. Pero la historia hasta ahora — muy parecida a mi reconstrucción de DIALØGUE en 14 días — ha reforzado la misma lección incómoda.
¿Qué construyó realmente Claude Code en una noche?
Así es como luce mi historial de git:
| Fase | Qué ocurrió | Commits |
|---|---|---|
| Documento de diseño + plan de implementación | Decisiones de arquitectura, 12 tareas | 2 |
| Claude construye "toda la app" | Andamio → auth → biblioteca → detalle → estudio → StoreKit → accesibilidad | 6 |
| El humano abre el Simulador | Corregir, probar, rediseñar, corregir, probar, rediseñar | 12+ (y contando) |
La primera fase — Claude Code montando el andamio de toda la app — fue genuinamente impresionante. En una noche, pasé de un proyecto vacío en Xcode a una app que compilaba con:
- Apple Sign-In, Google OAuth, autenticación por correo/contraseña y MFA
- Un asistente de creación de podcasts en 5 pasos
- Una biblioteca de podcasts con búsqueda y actualización con deslizamiento
- Reproducción de audio con
AVPlayer - Compras dentro de la app con StoreKit 2 y verificación del lado del servidor
- Studio (gestión de programas recurrentes)
- Localización en 7 idiomas
- Webview del blog y etiquetas de accesibilidad
69 archivos Swift. 7,568 líneas de código. Escribí aproximadamente cero de ellas.
Este es el punto donde termina todo post de blog sobre IA. La captura de pantalla triunfal. El momento de "mira lo que construí". El recuento de commits y líneas y el cronograma que no debería ser posible.
Pero yo no tenía una app. Tenía una base de código que compilaba.
¿Qué se rompió cuando realmente usé la app?
Toqué por aquí y por allá. Las cosas cargaban. Algunas pantallas se veían bien. Pensé: "Quizás esto en realidad va a funcionar."
Luego intenté crear un podcast.
El botón "Done" descartaba tu trabajo
El editor de guiones te permite editar líneas de diálogo individuales antes de generar audio. Hay un botón "Done". Edité una línea, toqué Done y... mis ediciones desaparecieron.
El botón salía del modo de edición antes de guardar. Se veía correcto en el código — editMode = false — pero la secuencia era incorrecta. Guardar, luego salir.
Este es el tipo de bug que hace que los usuarios tiren el teléfono. Y la IA lo escribió porque la lógica es técnicamente válida — solo al revés.
Los datos reales crashearon la app
Navegué a un podcast que había sido generado por el backend de producción. Crash. El campo research_facts llegaba como un array de objetos ({fact, source, reference, confidence}), pero el modelo Swift esperaba un array de strings. El mismo patrón en todas partes — los enums de estado eran case-sensitive (completed vs COMPLETE), así que cada insignia de estado mostraba "Unknown."
Claude construyó lo que decía el documento de diseño. La base de datos de producción no estaba de acuerdo. Este es el tipo de cosa que solo descubres con datos reales, no con datos de prueba.
El WebSocket de Realtime simplemente... no conectaba
En la web, Supabase Realtime funciona genial. En iOS, la conexión WebSocket fallaba silenciosamente. Sin error, sin crash. Solo... sin actualizaciones.
La solución fue un enfoque de doble seguro: mantener la suscripción de Realtime pero agregar un fallback de polling de 5 segundos que se ejecuta sin importar qué. No es elegante, pero es confiable. Las redes móviles son impredecibles, y a tus usuarios no les importará cómo lleguen las actualizaciones de estado — solo que lleguen.
Toda la app usaba colores del sistema
Cada pantalla era el azul y gris predeterminado de iOS. Modo claro. La app web tiene una estética de modo oscuro cuidadosamente diseñada — ámbar y dorado sobre carbón, lo que llamo "Studio Warmth". Claude había construido fielmente cada pantalla, pero en colores del sistema.
Tuve que tocar los 24 archivos de vistas. Reemplazar cada Color.accentColor con Theme.brandPrimary. Forzar .preferredColorScheme(.dark) en la raíz.
Esto no es un bug. La IA hizo exactamente lo que era razonable. Pero "razonable" y "bueno" son cosas diferentes.

La revisión del guion era un botón que decía "Approve"
El flujo de generación de podcasts tiene una etapa interactiva: la IA genera un esquema, y tú lo revisas antes de continuar. En la web, esto es una interfaz de tarjetas expandibles que muestra la descripción de cada segmento, puntos de discusión y fuentes de investigación.
En iOS, Claude construyó un botón que decía "Approve." Eso era todo. Sin contenido del esquema. Sin forma de ver qué estás aprobando. Lo mismo para la revisión del guion — un botón, no un editor.
El audio no reproducía
El reproductor de audio se veía correcto. Botón de reproducción, barra de progreso, controles en la pantalla de bloqueo. Pero tocar reproducir no hacía nada. La cadena de resolución de URL estaba rota — las URLs de descarga firmadas fallaban en el entorno de desarrollo, y las URLs de respaldo usaban nombres de host de Docker internos que el Simulador no podía resolver.
Después de arreglar el audio y rediseñar la página de detalle del podcast con controles de reproducción integrados, la barra persistente del mini reproductor en la parte inferior de cada pestaña era redundante. La eliminé. Eliminar código que funciona pero no debería existir — ese es un juicio puramente humano.
¿Cómo luce el código generado por IA vs un producto real?
El código generado por IA es arquitectónicamente sólido pero experiencialmente vacío. No me quejo — lo que hizo Claude Code es notable. ¿Pasar de "no sé Swift" a una app que compila con auth, compras dentro de la app, reproducción de audio y localización en 7 idiomas en una noche? Eso me habría tomado meses.
Pero hay una narrativa ahí afuera — en posts de blog, tweets, videos de demos — de que la IA escribe la app y tú solo la revisas. La publicas. Listo.
Eso no fue lo que pasó. Esto es lo que en realidad pasó:
-
Claude construyó un andamio arquitectónicamente sólido. La decisión de ir Supabase-directo (sin capa API personalizada) significó que la app iOS habla con el mismo backend que la app web. Auth, base de datos, realtime, almacenamiento — todo reutilizado. Solo necesité un nuevo componente del lado del servidor (una Edge Function
verify-ios-purchase). Esa elección arquitectónica fue brillante y ahorró un tiempo enorme. -
Claude acertó en las partes difíciles. Apple Sign-In con un nonce criptográfico vía CryptoKit. Flujo de compra de StoreKit 2 con verificación del lado del servidor. Configuración de
AVAudioSessionpara reproducción en segundo plano. Estas cosas me habrían tomado días descifrarlas desde la documentación sola. -
Claude falló en las partes del producto. No erróneas en cuanto a bugs — erróneas en cuanto a "esto es cómo luce una base de código, no cómo se siente una app".
| Lo que Claude construyó | Lo que en realidad se necesitaba |
|---|---|
| Un botón que dice "Approve" | Un revisor de esquema expandible con fuentes de investigación |
| Colores del sistema en cada pantalla | 24 archivos de tokens de marca, modo oscuro forzado |
| Decodificador JSON para el esquema documentado | Decodificador personalizado para lo que la base de datos realmente devuelve |
| Suscripciones de Realtime (patrón web) | Realtime + fallback de polling (patrón móvil) |
| Un asistente de creación que funciona | Un asistente de creación que cabe en la pantalla de un teléfono |

La columna izquierda es código correcto. La columna derecha es un producto.
¿Qué debemos decirle a la próxima generación sobre la IA?
Escribí hace unas semanas sobre tener una hija adolescente y no saber qué decirle sobre su futuro. Sobre cómo las habilidades de ejecución están siendo automatizadas y el piso para "puedo pensar críticamente" sigue subiendo.
Construir esta app iOS lo hizo más nítido — pero no en la dirección que esperaba.
Las habilidades de implementación — sintaxis de Swift, diseño con SwiftUI, la API de StoreKit — no las necesité. Claude manejó todo eso. Si "aprender a programar" significa "aprender la sintaxis y las APIs de un lenguaje de programación", ese consejo tiene una fecha de vencimiento medida en meses, no en años.
Pero esto es lo que sí necesité: gusto por el producto, juicio de diseño y la disciplina de abrir el Simulador y realmente usar la cosa en lugar de confiar en la revisión del código.
No son solo "gusto." Requieren pensamiento crítico — pensamiento crítico real, no la versión de la palabra de moda. El tipo donde miras algo que compila, que pasa las pruebas, que una IA te dice con confianza que está listo, y dices: "No. Esto no está bien. Déjame mostrarte por qué."
Esa es la parte que no podemos externalizar. Todavía no, quizás nunca. La IA es extraordinaria generando soluciones. Es terrible sabiendo cuándo una solución está mal de maneras que no aparecen en los registros. No usa el producto. No sostiene el teléfono. No siente la frustración de un botón Done que se come tu trabajo. Alguien tiene que dirigir. Alguien tiene que mantenerse en el bucle. Alguien tiene que proporcionar el instinto visceral que dice "esto funciona pero no es bueno."
Quizás eso es lo que debería decirle a mi hija. No "aprende a programar" — esa ventana se está cerrando. Pero tampoco "solo aprende a pensar críticamente", porque eso es demasiado vago. Algo más específico:
Aprende a ser la persona que abre el Simulador.
Sé quien prueba la cosa real con datos reales y nota lo que está mal antes de que lo hagan tus usuarios. Desarrolla gusto usando productos excelentes y productos terribles y entendiendo la diferencia. Desarrolla la confianza para contradecir algo que es técnicamente correcto pero experiencialmente roto — incluso cuando la cosa que te contradice es una IA que suena muy segura de sí misma.
El humano en el bucle no es una formalidad. Es todo el producto.
Todavía no estoy seguro de que sea suficiente. Pero es lo más específico que he podido decir hasta ahora.
¿Cuál es el estado actual de la app iOS?
La app todavía está en desarrollo. Estoy en la fase de pulido — la fase que los posts de blog sobre IA pretenden que no existe. Probando datos reales de producción contra cada vista. Encontrando los casos límite que solo surgen cuando realmente usas la cosa.
Mi registro de git de los últimos dos días tiene más commits fix: que commits feat:. Eso se siente correcto. Las funcionalidades eran la parte fácil. Las correcciones son el producto.
Aquí está el estado actual:
| Qué funciona | Qué falta |
|---|---|
| Auth (Apple, Google, correo, MFA) | Carga de PDF (selector de documentos + Supabase Storage) |
| Asistente de creación en 5 pasos con personalización completa | Descarga offline de MP3 |
| Detalle del podcast con revisión de esquema/guion | Notificaciones push (diferido a v1.1) |
| Reproducción de audio con controles en pantalla de bloqueo | Distribución beta de TestFlight |
| Compras dentro de la app con StoreKit 2 | Envío a la App Store |
| Studio (programas recurrentes) | |
| Localización en 7 idiomas | |
| Sistema de diseño Studio Warmth |
Escribiré un seguimiento cuando la app llegue a la App Store. O cuando sea rechazada. Conociendo a Apple, la historia del rechazo podría ser más interesante.
¿Qué tan rápido está acelerando realmente el desarrollo con IA?
Déjame actualizar la tabla que sigue persiguiéndome:
| Proyecto | Complejidad | Tiempo de construcción |
|---|---|---|
| DIALØGUE v1 | MVP generador de podcasts | ~6 meses |
| STRAŦUM | 10 agentes de IA, 11 frameworks, multi-tenant | 75 días |
| Rediseño del sitio | Renovación del frontend de WordPress | 3 días |
| DIALØGUE v2 | Reconstrucción completa de la app web | 14 días |
| Migración del blog | WordPress → Next.js, 490 posts, Sydney RAG | 4 días |
| DIALØGUE iOS | App iOS nativa, primera vez usando Swift | Todavía en progreso — pero el andamio tomó una noche |
Agregué una nueva columna en mi cabeza: "Tiempo para Claude" vs "Tiempo para mí". La proporción sigue cambiando. La parte de Claude se hace más corta. Mi parte se mantiene más o menos igual. (Noté el mismo patrón cuando reconstruí el backend de mi blog en 4 días — la migración fue rápida, pero los 8 días de refinamiento compuesto que siguieron son donde el sitio realmente tomó forma.)
Y las herramientas siguen mejorando. Cuando Apple y Anthropic anunciaron la integración de Xcode + Claude Agent SDK el 3 de febrero, no fue solo un comunicado de prensa. Cambió fundamentalmente lo que es posible. Claude ahora puede ver el Simulador, leer errores de compilación, capturar Previews e iterar visualmente — el bucle exacto que hace difícil el desarrollo de iOS para los humanos se está volviendo nativo para la IA.
Dos semanas después de ese anuncio, comencé a construir una app iOS sin saber Swift. Eso no es una coincidencia.
La próxima persona que haga esto no necesitará escribir un post de blog al respecto. Simplemente será... normal. Así es como luce la aceleración desde adentro — cada hito se siente menos notable que el anterior, incluso cuando la distancia objetiva recorrida sigue creciendo.
Eso es lo que nadie te cuenta. La IA se está volviendo más rápida. El trabajo humano no. Todavía no, de todas formas.
Preguntas frecuentes
¿Realmente puedes construir una app iOS con IA si no sabes Swift?
Sí — Claude Code montó el andamio de 69 archivos Swift y 7,568 líneas de código en una noche, incluyendo Apple Sign-In, compras dentro de la app con StoreKit 2, reproducción de audio y localización en 7 idiomas. Pero "construir" hace mucho trabajo pesado en esa oración. La IA produce una base de código que compila; convertirla en un producto que realmente publicarías requiere pruebas humanas extensas, juicio de diseño y depuración con datos reales.
¿Qué cambia Xcode 26.3 con Claude Agent SDK?
Anunciada el 3 de febrero de 2026, la integración de Xcode + Claude Agent SDK permite a los agentes de IA explorar la estructura de tu proyecto, buscar en la documentación de Apple, capturar Xcode Previews, ver el Simulador, leer errores de compilación e iterar de forma autónoma. Esto cambia fundamentalmente lo que es posible para los desarrolladores que no saben Swift — la pregunta pasa de "¿puedo aprender el lenguaje?" a "¿puedo describir lo que quiero?"
¿Qué porcentaje de una app construida con IA realmente necesita trabajo humano?
En mi experiencia, la IA te lleva aproximadamente al 60% — la arquitectura, el código repetitivo, las integraciones de API difíciles. El 40% restante es trabajo de producto: corregir bugs que solo aparecen con datos reales, rediseñar interfaces que funcionan pero no se sienten bien, y tomar decisiones sobre qué conservar y qué eliminar. Ese 40% es donde realmente vive el producto.
¿Qué habilidades importan más cuando se construye con agentes de codificación de IA?
Gusto por el producto, juicio de diseño y pensamiento crítico. Las habilidades de implementación (sintaxis, APIs, frameworks) son manejadas cada vez más por la IA. Lo que no se puede externalizar es la capacidad de probar la cosa real con datos reales, notar lo que está mal y contradecir algo que es técnicamente correcto pero experiencialmente roto.
¿Está disponible la app iOS de DIALØGUE en la App Store?
Todavía no — sigue en desarrollo, en la fase final de pulido. Las funcionalidades funcionan, pero todavía estoy probando contra datos de producción y encontrando los casos límite que solo surgen cuando realmente usas la app. Escribiré un seguimiento cuando llegue a la App Store (o sea rechazada).
Todavía construyendo. Todavía sin terminar. Todavía descubriendo qué decirle a mi hija.





