Deja de promptear a lo loco: el método de 3 pasos para programar con IA sin crear código basura

Deja de promptear a lo loco: el método de 3 pasos para programar con IA sin crear código basura

Juan Gabriel Gomila Juan Gabriel Gomila
12 minutos

Leer el artículo
Audio generated by DropInBlog's Blog Voice AI™ may have slight pronunciation nuances. Learn more

Contenidos

Después de más de 500 horas de programar con IA, tengo una conclusión muy clara: lo que separa el código profesional del código basura no es el prompt que escribes. Es la disciplina con la que trabajas.

La IA puede ayudarte a construir productos completos a una velocidad absurda. Pero también puede llenarte el repositorio de código que compila hoy y se pudre mañana. Por fuera parece que todo funciona. Por dentro, tienes una bomba de relojería cargada de deuda técnica, decisiones sin justificar y errores que nadie ha visto todavía. Eso es precisamente lo que muchos descubren cuando empiezan a programar con IA sin una metodología clara.

El problema no es Claude Code, ChatGPT, Gemini, Cursor o GitHub Copilot. El problema es usar estas herramientas como si fueran una varita mágica. No lo son. Debes tratarlas como tratarías a un junior increíblemente rápido: capaz de producir mucho, pero necesitado de dirección, contexto, revisiones y límites claros. Aprender a programar con IA consiste en aprovechar esa velocidad sin renunciar al criterio técnico.

El flujo que realmente funciona y que permite llegar a producción se apoya en tres pilares: planificar antes de programar, dar contexto real a la IA y verificar cada línea de código.


La trampa del código generado por IA

El código basura generado por IA suele ser fácil de reconocer. Comentarios que no aportan nada. Nombres de variables que parecen escritos por una máquina. Funciones duplicadas. Arquitecturas incoherentes. Cientos de líneas añadidas en un commit sin que nadie haya revisado qué demonios ha ocurrido ahí.

El código puede ejecutarse y, aun así, ser malo. Ese es el gran peligro.

Un análisis de código generado con IA detectó problemas funcionales en una parte de las implementaciones, vulnerabilidades de seguridad en otra, y una proporción enorme de código que funcionaba aparentemente bien, pero que ya estaba generando deuda técnica. Esta última categoría es la más traicionera, porque no explota inmediatamente. Se acumula en silencio hasta que el proyecto se vuelve difícil de extender, probar o mantener.

Y hay un riesgo todavía mayor: dejar de leer el código que envías. Cuando dejas de entender lo que produces, dejas de aprender. Un desarrollador senior puede acabar convertido en un simple tecleador de prompts que no sabe explicar su arquitectura, ni por qué una funcionalidad funciona, ni dónde se romperá cuando el proyecto crezca.

Eso no es ingeniería. Es delegar la responsabilidad a una máquina que no responde por tu producto, por tu empresa ni por tu reputación.

Paso 1: planifica antes de escribir una línea

La respuesta correcta empieza antes de abrir el editor. El límite real de programar con IA no es la calidad del prompt, sino tu disciplina de planificación.

Una de las ideas más útiles para trabajar con modelos de lenguaje consiste en hacer una especie de cascada rápida de planificación. En lugar de pedir directamente: “créame esta aplicación”, debes pedir a la IA que te entreviste.

No le pidas código todavía. Pídele preguntas.

Debe preguntar por los requisitos, los usuarios, los casos límite, las reglas de negocio, la arquitectura, las tecnologías, las pruebas unitarias, las restricciones y el comportamiento esperado. Tu trabajo consiste en responder, matizar y rebatir. No se trata de asentir a todo lo que proponga la IA, sino de construir con ella una especificación precisa.

Convierte las ideas en una fuente de verdad

Cuando hayas terminado esa conversación, recopila el resultado en un archivo como spec.md. Ese documento será el contrato del proyecto. Tu fuente de verdad. La referencia que permite saber qué se está construyendo y por qué.

Una buena especificación debe dejar claros aspectos como estos:

  • Qué problema resuelve el producto o funcionalidad.
  • Qué debe hacer el sistema y qué no debe hacer.
  • Qué datos utiliza y dónde viven esos datos.
  • Qué casos límite son relevantes.
  • Qué decisiones de arquitectura se han tomado.
  • Qué pruebas deben pasar antes de considerar terminada una tarea.
  • Qué criterios definen que una funcionalidad está lista para producción.

Solo después de tener la especificación debes pedir un plan de implementación. Divide el trabajo en tareas pequeñas, independientes y verificables. Tareas que puedas completar, revisar, probar y marcar una a una.

Los modelos de IA son muy buenos cuando reciben objetivos concretos y acotados. Se derrumban cuando les pides que diseñen un sistema entero de golpe. Si saltas directamente a generar una aplicación completa, acabarás con una mezcla de código que parece escrita por diez personas que no se conocen, no comparten idioma y tienen formas incompatibles de trabajar.

Eso no es velocidad. Es caos adelantado. La diferencia entre improvisar y programar con IA de forma profesional está en la planificación previa.

Si quieres aplicar este flujo de manera práctica, en el curso Vibe Coder de Frogames Formación se trabaja paso a paso cómo diseñar una especificación, dividir el proyecto y hacer que la IA programe contigo sin convertir el repositorio en un campo de minas.

Paso 2: dale contexto real a la IA con MCP

Hasta el mejor plan falla si la IA está trabajando a ciegas. Para programar con IA de forma eficiente, el contexto es tan importante como el propio código.

Un modelo es tan bueno como la información que recibe. Durante demasiado tiempo hemos cometido el mismo error: pedirle que adivine cómo funciona nuestro proyecto, dónde están las reglas de negocio, cuál es la estructura de las carpetas o qué decisiones se tomaron hace tres meses.

Eso no es inteligencia artificial. Eso es lanzar prompts al vacío.

La llegada del Model Context Protocol, conocido como MCP, cambió bastante las reglas del juego. Puedes entenderlo como un puerto USB-C para herramientas de IA: un estándar abierto que permite conectar asistentes con aplicaciones, datos y servicios usando un protocolo común.

Antes, integrar una IA con cada herramienta era un infierno. Un conector para que un modelo leyera código, otro para que consultara una base de datos, otro para acceder a tickets y otro para revisar repositorios. El número de integraciones crecía sin control.

MCP organiza esta comunicación en tres piezas principales:

  • Tools: acciones que el asistente puede ejecutar.
  • Resources: datos y documentos que puede consultar.
  • Prompts: plantillas reutilizables para trabajar de manera consistente.

Esto permite conectar la IA con los tickets de Jira, los issues de GitHub, la documentación interna, las bases de datos, Slack o el propio repositorio. Claude Code, GitHub Copilot y otros entornos ya soportan este tipo de flujos.

La diferencia es gigantesca. Cuando proporcionas reglas del proyecto, documentación actualizada, decisiones de arquitectura y acceso controlado al código, la IA deja de inventar. Empieza a trabajar con conocimiento real del contexto.

Herramientas como Gitingest también permiten preparar el contenido de un repositorio para entregarlo como contexto de forma más manejable. No se trata de volcar datos sin control, sino de darle a la IA la información relevante para que pueda tomar decisiones alineadas con tu proyecto.

Una IA sin contexto escribe soluciones genéricas. Una IA con contexto puede contribuir a un sistema real. En otras palabras, programar con IA deja de ser un ejercicio de adivinación y pasa a convertirse en un proceso de ingeniería.

Paso 3: verifica cada línea como si tu reputación dependiera de ello

Este es el paso que casi todo el mundo se salta. Y sí, es el que marca toda la diferencia. Quien sabe programar con IA entiende que generar código nunca sustituye revisarlo.

Los modelos de lenguaje pueden escribir código con una seguridad espectacular, incluso cuando están cometiendo una barbaridad. No dudan. No levantan la mano. No dicen que una decisión es arriesgada. Pueden introducir un bug, una vulnerabilidad o una abstracción absurda con total convicción.

Por eso debes asumir que cualquier fragmento generado necesita revisión. Igual que revisarías el trabajo de un desarrollador junior en su primer día.

Incluso en equipos que usan IA de forma intensiva, la revisión humana sigue siendo imprescindible. La automatización permite producir más código, pero también aumenta la necesidad de gobernarlo bien.

Commits pequeños, tests y puntos de guardado

Trata Git como si fuera un videojuego. Cada commit pequeño y estable es un punto de guardado.

Cuando termines un cambio concreto y estés satisfecho con él, haz commit. Ejecuta los tests. Comprueba que no has roto nada. Solo después pasa a la siguiente tarea.

Ese hábito evita perder horas cuando una sugerencia de la IA mete la pata. Si una modificación destroza una parte estable del proyecto, vuelves al último punto seguro y continúas desde ahí.

El flujo debería parecerse a esto:

  1. Implementa una tarea pequeña del plan.
  2. Lee el código generado y entiende cada decisión relevante.
  3. Ejecuta pruebas unitarias, pruebas de integración o comprobaciones manuales.
  4. Corrige lo necesario.
  5. Haz un commit pequeño y descriptivo.
  6. Avanza a la siguiente tarea.

Usa un segundo modelo como revisor

Hay una técnica especialmente útil: abrir una segunda sesión con un modelo distinto y pedirle que critique el código generado por el primero.

El segundo modelo puede detectar errores de lógica, problemas de seguridad, duplicaciones, casos límite olvidados o incoherencias arquitectónicas. No sustituye la revisión humana, pero añade otro par de ojos y obliga a mirar el código desde una perspectiva diferente.

Puedes pedirle que revise específicamente:

  • Vulnerabilidades y validación de entradas.
  • Errores de concurrencia o manejo de estados.
  • Complejidad innecesaria.
  • Posibles regresiones.
  • Incumplimientos de la especificación.
  • Falta de tests o escenarios no cubiertos.

Da igual qué herramienta uses. Claude Code, Copilot, Cursor o ChatGPT. Tú sigues siendo la persona responsable del código. Tu nombre está en el commit. Tu producto es el que fallará si no revisas. Tu reputación es la que está en juego.

La verdadera ventaja de programar con IA aparece cuando combinas automatización con criterio técnico.

El futuro no es escribir más código, es arquitecturar mejor

Cuando juntas planificación, contexto y verificación, dejas atrás el vibe coding sin control. Empiezas a arquitecturar software de verdad.

El futuro del desarrollo no consiste en machacar el teclado recordando sintaxis, mayúsculas o nombres exactos de métodos. Consiste en definir intenciones, diseñar sistemas, dar el contexto correcto y verificar que la máquina ha hecho bien su trabajo.

En sectores especialmente exigentes ya se piden garantías de que un experto humano ha diseñado y revisado cada línea relevante. Tiene todo el sentido. Si nadie revisa el código generado por IA, nadie puede asegurar que ese código sea correcto.

La inteligencia artificial no elimina la ingeniería clásica. La vuelve todavía más importante. Cuanto más código somos capaces de producir, más necesitamos planificar, testear, usar control de versiones y revisar decisiones.

Esas prácticas no son hábitos antiguos que haya que abandonar. Son las barreras que permiten subirte al cohete sin estrellarte.

Los desarrolladores que destacarán en los próximos años no serán necesariamente quienes escriban los prompts más ingeniosos. Serán quienes mejor arquitecturen, comprendan sus sistemas y mantengan el control sobre lo que construyen.

No empieces a programar con IA a lo loco.. Planifica. Da contexto. Verifica. Y convierte la velocidad de la IA en software que puedas defender, mantener y mejorar.

Preguntas Frecuentes

¿Qué significa programar con IA de forma profesional?

Significa planificar, aportar contexto, revisar el código generado y validar cada cambio antes de llevarlo a producción.

¿La IA puede generar código de mala calidad?

Sí. Puede producir código funcional, pero con deuda técnica, errores, vulnerabilidades o decisiones difíciles de mantener.

¿Por qué es importante crear una especificación antes de programar?

Porque define qué debe construirse, reduce ambigüedades y ayuda a dividir el trabajo en tareas pequeñas y verificables.

¿Qué aporta MCP al desarrollo con IA?

Permite conectar la IA con documentación, repositorios, bases de datos y otras herramientas para proporcionarle contexto real.

¿Sigue siendo necesaria la revisión humana?

Sí. La persona desarrolladora sigue siendo responsable de entender, probar y aprobar el código antes de publicarlo.

« Volver al Blog