Es una relación
He estado trabajando en aumentar y pulir mi relación con la IA al codificar. Aunque he hecho una carrera adaptándome y hackeando nuevas tecnologías, y he trabajado en productos relacionados con la IA durante varios años, soy un ingeniero de software de la vieja escuela (también conocido como controlador) y he aprendido de la manera difícil que depender de atajos no resulta en un aumento de productividad a mediano/largo plazo, aunque a menudo es tentador y muy productivo a corto plazo. Quiero las ventajas de la IA sin quedarme atascado en lo que se hace comúnmente o sin chocar contra una pared en medio de un proyecto y verme forzado a comenzar de nuevo antes de alcanzar el objetivo actual.
Esto me inspiró a comenzar a escribir todas las cosas que encuentro sobre mi relación laboral con la IA. Especialmente porque muchas de estas cosas son muy intuitivas. Las reglas y heurísticas son difusas y realmente no funcionan todo el tiempo debido al mundo no determinista, de ritmo rápido y multimodal de la IA en este momento.
La Promesa Engañosa
A menudo escuchamos el seductor discurso: “¡Un niño de 8 años sin experiencia en codificación construyó [inserta producto de software] en dos horas con IA!” Suena mágico, y técnicamente, es cierto. Dale a un niño de 8 años muy inteligente una buena herramienta de IA, y tendrá algo funcionando en poco tiempo, siempre que un adulto lo prepare todo para él. Pero aquí está el truco: funciona especialmente bien para un niño de 8 años porque es poco probable que alcance los límites superficiales de una aplicación construida totalmente por IA. Sus expectativas son flexibles y sus requisitos son bajos.
Por otro lado, encuentro que un agente impulsado por LLM es tan competente como un programador profesional ligeramente superior al promedio. Lo cual es increíble, pero está muy lejos de ser óptimo…
La Metáfora de Fiverr: Trabajando con IA
Aquí hay una metáfora que explica cómo he llegado a ver la codificación con nuevos agentes de IA (como Cursor o Void):
Imagina que estás contratando desarrolladores en Fiverr. Cada vez que envías una solicitud, un desarrollador diferente toma la tarea. No puedes controlar a quién va, y cada respuesta proviene de una persona nueva con un entendimiento limitado del contexto más amplio del proyecto (no te advertirá cuando esté truncado). Todos son inquietantemente sobreconfianzados, y no hay responsabilidad ni consecuencia cuando las cosas salen mal.
Ahora, imagina que cada prompt a una IA es como esto. Es muy económico y sigue siendo increíblemente poderoso. Pero, ¿confiarías en este flujo aleatorio de desarrolladores para manejar todo tu proyecto? Probablemente no. Como cualquier buen gerente de proyecto, necesitas desglosar tareas, gestionar el contexto para cada solicitud y saber cuándo intervenir para evitar ser desviado por resultados engañosos. Confiar en una IA para construir algo grande, confiable o seguro es un riesgo que no vale la pena correr, al menos por ahora…
Aprendizaje vs. Construcción
En mi opinión y experiencia, no funciona pedir a un agente de IA que construya un proyecto en una tecnología o lenguaje que no conoces. Te quedarás atascado muy pronto. Pero no necesitas conocer todos los detalles de la sintaxis o todas las cosas de configuración obscuras… Si tienes experiencia, simplemente revisando tutoriales intermedios a avanzados te harás lo suficientemente bueno para controlar eficazmente a un agente a través de un proyecto mediano. Así que, de hecho, puedes aprender un nuevo lenguaje sobre la marcha mientras codificas un proyecto real rápidamente.
Magia de la Automatización: Donde la IA Brilla Realmente
Uno de los usos más emocionantes de la IA en mi flujo de trabajo es automatizar tareas tediosas. Todos hemos estado allí: te encuentras con un problema y piensas: “Podría escribir un script para automatizar esto”. Pero luego, te das cuenta de que se convertirá en una distracción de tres horas, así que encuentras una solución manual o evitas ese camino de desarrollo por completo y sigues adelante.
Con la IA, ahora puedo crear esos scripts en segundos. De repente, el equilibrio entre esfuerzo y productividad se inclina a mi favor. El riesgo de que la IA se equivoque es mínimo porque la automatización tiende a ser lineal: la entrada llega, la salida sale, y puedes verificarla rápida y precisamente solo mirando la salida. Esto ha sido un cambio radical para cosas como:
Transformaciones/migraciones/traducciones de datos Scripts de Bash/Python para configuraciones de boilerplate Operaciones por lotes en sistemas de archivos
Estas pequeñas victorias se acumulan y mantienen mi enfoque donde más importa.
Sintaxis y Solución de Problemas: El Nuevo Flujo de Trabajo
He aprendido que a menudo es más rápido pedirle a una IA algo y luego verificarlo rápidamente con la documentación, en lugar de desgastarme a través de la documentación tratando de averiguar cómo funciona algo desde cero. Además, cada vez que hay un error, es más rápido enviárselo al agente primero, para ver lo que dice antes de entrar en depuración o investigación.
Trata a tu IA como un agente secreto - eligiendo el contexto
Dale un buen contexto general sobre tu proyecto (cuando sea necesario, específicamente sobre la arquitectura) y luego acceso al código en una “base de necesidad de saber”. Esto hace que se enfoque en lo que es importante, reduce las alucinaciones (en mi experiencia), y evita que se ponga demasiado confiado y agregue “características extra” que no pediste.
Me gustaría una segunda opinión
Las opciones son geniales. Ten en cuenta que cada prompt a un LLM es un nuevo mundo (Recuerda la metáfora de Fiverr anterior). Los LLM son modelos estadísticos, si pides algo, te dará lo que cree que es la respuesta más probable, pero eso no significa que sea la única respuesta que te daría ni que sea la mejor. Así que si no estás seguro de que la respuesta sea lo suficientemente buena para ti, pregúntalo de nuevo.
Tienes toda la razón
Una peculiaridad interesante de los LLM es su tendencia a siempre afirmar tu crítica o pregunta con “Tienes toda la razón”, y luego proceder a “corregir” o “reescribir” lo que hayas preguntado… incluso si estás equivocado y estaba bien desde el principio. Un truco útil para contrarrestar esto es incluir la posibilidad de que podrías estar equivocado en tu prompt. Por ejemplo, en lugar de decir, “la llamada a la función X parece estar faltando Y”, intenta enmarcarlo como, “No estoy seguro, la llamada a la función X parece estar faltando Y. ¿Podría estar equivocado?” Este enfoque anima al LLM a considerar que puedes estar “completamente equivocado” ;) (con todo el respeto). Nota: no te preocupes, no le romperá el corazón, todavía te dirá que es brillante preguntar eso, pero que estás perdiendo el punto.
¿Quieres algo mejor? ¡Solo pregunta!
Aquí hay un asombroso truco que escuché de Simon Wilson en un gran podcast sobre estos temas: Si no te gusta la salida por una corazonada pero no puedes molestarte en averiguar cuál es el problema o incluso verbalizarlo a la LLM, solo dile algo como: “Hazlo mejor”, “Hazlo de nuevo pero más limpio”, “Mi supervisor no aprobaría ese código”, “Hazlo más elegante”. ¡Es sorprendente cuántas veces realmente funciona!
No es solo codificación
Otra forma valiosa en la que utilizo la IA es para explorar nuevas bibliotecas o lenguajes, comparar opciones o construir prototipos desechables como investigación. En lugar de pasar horas leyendo a través de las secciones de “Introducción” de la documentación, le pido a la IA que escriba un código de muestra para diferentes bibliotecas. Incluso si está equivocado, me da suficiente visión para tomar una decisión más rápida sobre qué dirección seguir.
También es genial para tareas como redactar documentación. En estas áreas, se trata menos de la perfección y más de crear una base sólida que pueda refinar más tarde.
Conclusión
Trabajar con IA como coder es un viaje salvaje. Es como tener un esclavo brillante pero peculiar que puede supercargar tu trabajo. La clave es el equilibrio. Usa la IA para mejorar tu productividad, pero no dejes que tome el control. Mantén un firme agarre sobre la dirección y calidad de tu proyecto.
Aquí está el truco: a medida que la IA mejora en la codificación, las habilidades clave de los desarrolladores de software cambian de valor. Si has estado evitando las habilidades de gestión de proyectos, ahora es el momento de subir de nivel. Serán tan cruciales como las habilidades de codificación en el futuro (muy cercano) aumentado por la IA.
Recuerda, la IA es una herramienta, no un reemplazo. Al dominar este baile entre la percepción humana y el poder de la IA, podemos llevar nuestro oficio más lejos que nunca. Es un momento emocionante para ser coder: aprovechemos al máximo.
Puntos clave
- IA como Asistente Competente: Trata a las herramientas de IA como programadores profesionales ligeramente superiores al promedio. Son poderosas, pero no infalibles.
- Gestión de Contexto: Desglosa tareas y gestiona el contexto cuidadosamente para evitar resultados engañosos.
- Aprendizaje vs. Construcción: Usa la IA para ayudar a aprender nuevas tecnologías, pero asegúrate de tener una comprensión básica para guiar el proceso.
- Automatización: Aprovecha la IA para automatizar tareas tediosas y ahorrar tiempo e incrementar la productividad.
- Sintaxis y Solución de Problemas: Usa la IA para verificaciones rápidas de sintaxis y solución inicial de problemas, pero siempre verifica con la documentación.
- Enmarcado de Prompts: Incluye la posibilidad de estar equivocado en tus prompts para obtener respuestas más equilibradas y precisas.
- Mejora Iterativa: Si no estás satisfecho con la salida de la IA, pide mejoras con prompts como “Hazlo mejor” o “Hazlo más elegante”.
- Exploración y Prototipado: Usa la IA para explorar nuevas bibliotecas, lenguajes y crear prototipos para tomar decisiones informadas rápidamente.
- Documentación: La IA puede ser una herramienta valiosa para redactar documentación, proporcionando una base sólida para un mayor refinamiento.