Pide tu presupuesto ya!

Por qué “arreglar todo” es un aviso terrible

Aprendí esta lección de la manera difícil. Varias veces, en realidad. Y tengo la historia de GIT para demostrarlo.

Allí estaba, mirando un componente React que había globalizado a más de 500 líneas. Usted sabe el tipo, comenzó simple, luego se cultivó tentáculos a medida que las características se aportaron. El clásico “Limpiaré esto más tarde” que nunca sucedió. Todos hemos estado allí, ¿verdad?

Con Claude en mi esquina, pensé que solo decía “Hola, refactorizar todo este componente” y ver que la magia sucede. Quiero decir, ¿por qué no? Para eso está la IA, ¿verdad?

Equivocado. Muy mal.

El gran desastre de refactorización

“Refactor de este componente para que sea más modular y mantenible”, le dije con confianza, recostado en mi silla con una sonrisa petulante, ya imaginando cuán impresionado estaría mi equipo.

Claude escupió un refactor de aspecto hermoso. Ganchos personalizados extraídos. Lógica separada. Los accesorios destruyeron cuidadosamente. Incluso agregó comentarios de JSDOC. En la superficie, parecía exactamente lo que quería.

Lo copié, ejecuté la aplicación y … nada cargado. No solo el componente: tres páginas diferentes se rompieron. ¿Esa sonrisa presumida? Desaparecido. Reemplazado por pánico puro.

Resulta que la IA había roto silenciosamente el manejo del estado en múltiples componentes. Renombró algunas variables clave pero perdió referencias en otros lugares. Eliminó lo que parecía un código duplicado que realmente manejaba casos de borde sutil.

La peor parte? Arreglarlo me llevó más tiempo que si hubiera refactorado manualmente. Podría haber usado GIT para revertir el cambio, pero algunas partes funcionaban bien que quería mantener. El conjunto de cambios era tan grande que no pude mantener una pieza y descartar el resto.

Como todo estaba enredado en una actualización masiva, tuve que mantenerlo todo y arreglarlo manualmente. Pasé horas rastreando los cambios, tratando de descubrir qué salió mal, antes de aceptar finalmente la derrota y comenzar de nuevo.

Por qué la IA falla en grandes refactores

Después de algunos experimentos más dolorosos (porque aparentemente soy un glotón para el castigo), me di cuenta de por qué pedirle a AI que “arregle todo” falla:

  • Pierde el contexto en archivos grandes. AI lucha por realizar un seguimiento de todas las interconexiones en código complejo. Es como pedirle a alguien que reorganice su garaje sin decirles qué cables se conectan a qué dispositivos.
  • Realmente no entiende tu arquitectura. No puede ver cómo esa función afecta a otros tres componentes. Está funcionando de forma aislada mientras su aplicación es un ecosistema.
  • Hace compensaciones silenciosas. Podría priorizar la estructura más limpia sobre el mantenimiento de cada característica, soltando cosas que cree que no son importantes. Pero, ¿quién le dio permiso para decidir qué es importante?
  • Se reestructuran según los patrones, no la lógica comercial. Con gusto creará abstracciones elegantes que pierden por completo el punto de lo que su código debe hacer. El código bonito que no funciona todavía es un código roto.

Los resultados son predecibles:

  • Referencias rotas (como cuando cambia el nombre de una variable pero olvida actualizarla en todas partes)
  • Falta de efectos secundarios (¡Adiós, seguimiento de análisis!)
  • Código simple de ingeniería excesiva (tres ganchos para lo que solía ser cinco líneas)
  • Funcionalidad de caída en silencio (no es un error, es una característica … eso ahora falta)

Una mejor manera: crear un marco de refactorización de IA

Después de esas dolorosas lecciones, desde entonces he aprendido algunas cosas sobre quitarse los pequeños bocados de este elefante que generalmente ayuda. Y por lo general, quiero decir cuando sigo mi propio consejo en lugar de impaciente.

Paso 1: Establezca una línea de base git

Este es obvio pero todavía olvido la mitad del tiempo. Haz una rama limpia. Comprometerse. Este es su botón de pánico para cuando las cosas van de lado.

Fase 1: Revisión primero

En lugar de “arreglar todo”, empiezo con:

Review this code and create a Markdown file of what should be improved or modularized. Don't rewrite anything yet.

Esto obliga a la IA a analizar sin cambiar, dándome una hoja de ruta en lugar de un reemplazo. Crear algo concreto como un archivo le permite usar un artefacto para colaborar con AI ON.

Es como pedirle a alguien que mire su garaje desordenado y haga una lista de lo que necesita organizarse antes de comenzar a mover las cosas. Muy menos peligroso.

Fase 2: retroalimentación humana

Una vez que la lista esté en su lugar, revisaré esa lista y:

  • Cruce cualquier cosa innecesaria (“No, no necesito convertir cada función en una función de flecha, gracias”)
  • Agregue mis propias prioridades (“Esta gestión estatal es el verdadero problema”)
  • Marque los cambios de riesgo (“¡No toque la lógica de procesamiento de pagos!”)

Esto me mantiene en control del proceso. La IA sigue siendo solo una herramienta, no el tomador de decisiones. Incluso si no sé qué demonios estoy haciendo (la mitad del tiempo), haré una nota como “arreglar esto lo mejor que pueda” para confiar en la experiencia del modelo en lugar de la mía (o la falta de ella).

Fase 3: Desglosarlo

A continuación, dividí la lista de verificación en trozos pequeños y manejables. Por ejemplo:

  1. Extraer la lógica de validación de formulario a un gancho personalizado
  2. Cree componentes separados para cada sección de formulario
  3. Gestión estatal refactor

La clave: solo abordo un artículo a la vez. Uno. Singular. Uno. Esta es la diferencia entre el éxito y el desastre.

Es como comer un elefante, un bocado a la vez. Intenta tragarlo entero y te ahogarás. (No es que aboguen comiendo elefantes. Por favor, no lo hagas).

Fase 4: Ejecutar de forma aislada

Para cada tarea:

  • Trabajar en una rama (ver Paso 1, que todavía olvido a veces)
  • Dé instrucciones muy específicas de AI como “Extraiga solo este bloque en un gancho llamado UseValidation. No cambie nada más”.
  • Comprometerse después de cada cambio exitoso

Básicamente, trata a la IA como ese nuevo desarrollo junior que está realmente ansioso pero a veces malinterpreta los requisitos. No les dirías “refactorizar toda la aplicación” el primer día, ¿verdad?

Fase 5: Verificar y restaurar

Después de cada cambio:

  • Ejecutar pruebas (¿tienes pruebas, ¿verdad? … ¿verdad?)
  • Verifique la funcionalidad manualmente (haga clic en todos los botones, llene todos los formularios)
  • Si algo se rompe: vuelva y vuelve a intentarlo con un alcance más limitado
  • Si funciona: verifíquelo fuera de la lista y continúe

Este ciclo te impide llegar demasiado por un camino roto. Es como conducir con puntos de control regulares en lugar de esperar hasta que esté completamente perdido para verificar el mapa.

Consejos que me salvan cada vez

  • Use comentarios de pan de pan: Agregar comentarios como // Handles form validation Para ayudar a la IA a comprender qué hace el código. Es como etiquetar las cajas en su garaje antes de pedirle a alguien que lo reorganice.
  • Mantenlo alcanzado: Digamos “solo extrae esta función, no cambie los nombres de variables” en lugar de “limpiar esto”. Sea mandón y específico. La IA no tiene sentimientos que lastimar.
  • Espere falla: Use puntos de control de cursor, GIT o simplemente mantenga el código original en un archivo separado. Suponga que las cosas se romperán y planificarán.
  • Construir incrementalmente: La refactorización exitosa ocurre paso a paso, no todo a la vez. Esto es cierto con o sin IA, pero AI lo hace aún más crítico.

La verdadera magia de la refactorización de IA

Una vez que comencé a desglosar las cosas de esta manera, encontré el punto dulce. Ai pasó de ser mi equipo de demolición a mi desarrollador junior.

Es excelente en:

  • Extraer una sola función a un gancho (puede manejar esta transformación maravillosamente)
  • Convertir componentes de clase a los funcionales (cuando se guía)
  • Implementación de un patrón que describe en detalle
  • Agregar definiciones o documentación de tipo (en serio, es sorprendente en esto)

Es terrible en:

  • Comprender toda su base de código (no tiene el contexto)
  • Tomar decisiones arquitectónicas (no conoce las necesidades de su negocio)
  • Saber qué casos de borde son importantes para sus usuarios
  • Preservar la lógica comercial no entiende (esa extraña excepción para los usuarios de California?

Pensamientos finales

Refactorizar con AI no se trata de pedirle que “arregle todo”. Se trata de usar la IA como un multiplicador de fuerza para su propia experiencia.

Desglose el trabajo. Dar instrucciones específicas. Mantenga un plan de reversión.

La IA no es el arquitecto, lo eres. La IA es solo un teclado realmente inteligente que puede escribir código más rápido de lo que puede escribir. Una vez que adoptas esa realidad, la refactorización con IA se vuelve no solo posible, sino increíblemente poderosa.

Solo recuerda: un cambio a la vez. Y tal vez, solo tal vez, cree esa rama Git primero.

Written by

Leave a comment