Capacidades del desarrollador senior en la era de la IA: aprovechar la experiencia para obtener mejores resultados
(manuel.kiessling.net)- En los últimos meses he estado usando de forma experimental herramientas de programación basadas en IA tanto en proyectos personales como en el trabajo
- Los resultados fueron muy positivos, y experimenté tanto una reducción del tiempo de desarrollo como una mejora en la calidad de los entregables
- Por otro lado, algunos desarrolladores también han compartido comentarios negativos diciendo que las herramientas de IA no funcionan bien
- A partir de esta experiencia, me convencí de que el desarrollo de software con IA tiene potencial para dar el siguiente gran salto en productividad
- Eso sí, no se trata de una adopción acrítica, sino de que se necesita la perspectiva correcta y un enfoque equilibrado
- En este artículo comparto las mejores prácticas que experimenté y descubrí personalmente para
intentar adelantar хотя sea un poco la adopción inteligente de herramientas de IA en la comunidad de desarrollo en general
Estado actual del uso de herramientas de programación con IA
- Por lo que he observado en Twitter, las herramientas de programación con IA son muy populares entre desarrolladores no profesionales
- Están usando la IA para atreverse con nuevos proyectos y aprender a desarrollar de forma divertida
- Esta tendencia es positiva y contribuye a reducir la barrera de entrada a la tecnología para nuevos usuarios
- Sin embargo, esto es solo una cara del potencial de las herramientas de IA, y
- incluso en contextos profesionales, como el de los desarrolladores senior, la IA puede aportar un gran valor
La fortaleza de los desarrolladores senior
- Aunque todavía estamos en una etapa temprana de evolución, la conclusión hasta ahora es la siguiente:
- Los desarrolladores senior están en la mejor posición para aprovechar las herramientas de IA de la manera más efectiva
- No se trata solo de recibir ayuda, sino de usarlas de forma optimizada
- El punto clave es este:
La experiencia de desarrollo y el know-how para operar proyectos, que pueden parecer algo anticuados en la era de la IA,
son precisamente la base que permite aprovechar mejor estas herramientas - Si quisiéramos comparar a un agente de programación basado en LLM,
- se parece más a un junior con muchísimo conocimiento de programación, pero con poca comprensión del diseño en el contexto actual
- Por eso, para confiarles trabajo real,
- la preparación estratégica y la guía son indispensables
- y la persona ideal para cumplir ese rol es precisamente un desarrollador senior
- En conclusión, incluso una tecnología de punta como las herramientas de IA se aprovecha mejor cuando se apoya en prácticas y experiencia tradicionales de desarrollo
Tres elementos clave para una sesión exitosa de programación con IA
- Para obtener buenos resultados colaborando con IA, son importantes estos tres elementos:
- Documentación detallada de requisitos (Well-structured Requirements)
- Guardrails de calidad basados en herramientas (Tool-based Guard Rails)
- Técnica de keyframing basada en archivos (File-based Keyframing)
- Antes de entrar en la explicación a fondo, presento algunos casos reales de proyectos usando IA
- Proyecto green-field: un proyecto creado desde cero
- Proyecto brown-field: un proyecto donde se agregan nuevas funciones sobre una base de código existente
- En ambos casos, me enfoco en ejemplos donde la IA se encargó casi por completo de toda la implementación
- No hablo de IA solo como autocompletado o asistente conversacional,
sino del enfoque donde realiza trabajo real en modo agente
- No hablo de IA solo como autocompletado o asistente conversacional,
- La herramienta utilizada fue Cursor,
- basada en el modelo Claude Sonnet 3.7 de Anthropic
- y con capacidad para modificar directamente todos los archivos del proyecto y ejecutar comandos relacionados
Ejemplo 1: Platform Problem Monitoring (proyecto green-field)
- Implementé una nueva aplicación, Platform Problem Monitoring, usando Cursor y Claude
- Código fuente: enlace de GitHub
- Esta app se conecta cada hora al servidor Elasticsearch de ELK para recopilar mensajes de error y enviar un reporte por correo estructurado que resume el estado actual de problemas de la plataforma web
- Toda la implementación fue realizada por la IA y no escribí código directamente
- Aunque no estoy familiarizado con el lenguaje Python,
- pude avanzar sin problemas gracias a una amplia comprensión de arquitectura, operación y mejores prácticas
- este proyecto fue una oportunidad para probar cuánto puede ayudar la IA en un stack tecnológico que no me resulta familiar
Nota: problemas de calidad del código
En la discusión de HackerNews se señalaron problemas de calidad del código como configuración de logging, parsing personalizado de configuración y race conditions
El objetivo de este proyecto no era tanto producir código para producción, sino crear un prototipo rápidamente,
con foco en la implementación funcional más que en el mantenimiento a largo plazo o en los modismos del lenguaje
Ejemplo 2: Integración de UI para Process Management (proyecto brown-field)
- Un caso de integración de UI sobre una funcionalidad legacy existente basada en PHP/Symfony
- El backend operaba mediante comandos CLI basados en cron y no tenía UI
- La idea fue integrar esta funcionalidad en una aplicación Symfony moderna
- aprovechando una estructura amigable para UI con base de código moderna, sistema de pruebas y guía de estilos
- Principales tareas realizadas:
- Comunicación con el sistema legacy mediante HTTP API
- Implementación de transferencia de datos entre sistemas
- Construcción de pantallas ajustadas al sistema de diseño de la UI
- Implementación del cliente API dentro de un bundle compartido de Symfony
- Excepto por los archivos keyframe, toda la implementación fue realizada automáticamente por la IA
Principales aprendizajes de ambos proyectos
- Proyecto green-field: incluso en un stack tecnológico desconocido, con ayuda de la IA es posible construir una app funcional
- Proyecto brown-field: aunque la implementación de UI no era una tarea familiar, gracias a la IA la funcionalidad se completó rápidamente
- A través de estos dos casos, sentí que las herramientas de IA pueden generar cambios reales tanto en la productividad personal como en el flujo de trabajo del equipo completo
- Sin embargo, para que la IA ahorre una gran cantidad de tiempo, se necesita una inversión inicial en setup y un enfoque estratégico
- hay que operarla de forma parecida a como se guía bien a un junior capaz para obtener los mejores resultados
La importancia de redactar requisitos detallados
- La clave de una sesión exitosa de programación con IA es contar con un documento de requisitos sistemático y completo
- En el proyecto real Platform Problem Monitoring, escribí el documento REQUIREMENTS.md antes de comenzar la sesión
- El documento tiene un total de 371 líneas y sigue la siguiente estructura jerárquica
- Nivel superior: resumen en una sola línea de los requisitos clave
- Nivel alto: casos de uso y motivación del desarrollo
- Nivel medio: procesos y forma de funcionamiento
- Nivel medio: arquitectura, stack tecnológico y restricciones
- Nivel bajo: pasos concretos de trabajo detallados según entrada/salida/efectos colaterales
- Un documento estructurado de este tipo también le da a la IA un framework claro, lo que ayuda a producir resultados más precisos
- Redactarlo requiere tiempo y esfuerzo, pero es una inversión esencial para una implementación exitosa
- Uno de los dichos del desarrollo de software dice:
“Seis semanas de implementación ahorran dos horas de planeación”
- Es una expresión sarcástica, pero contiene la verdad de que la ineficiencia en la implementación suele nacer de la falta de planeación
- Por eso un proyecto siempre debe comenzar en el pizarrón, no en el teclado, y este principio se aplica igual al colaborar con IA
- En la práctica, inicio una sesión de Cursor con estos pasos:
- Hacer que la IA resuma por sí misma los requisitos
- Hacer que genere un plan de ejecución
- Inducirla a preguntar por las partes ambiguas
- Solo después de esta etapa de validación cambio la IA al modo “Agent” para comenzar la implementación
Configurar guardrails de calidad basados en herramientas
- Si el documento de requisitos define el destino, los guardrails de calidad ayudan a mantener la ruta más corta hacia ese destino
- Igual que ocurre con la importancia de un sistema de feedback en tiempo real durante el desarrollo, las herramientas de análisis estático también ayudan mucho a la IA
- Por ejemplo, es mucho más eficiente detectar una falta de null check en la etapa de desarrollo que descubrirla después del lanzamiento por una consulta de un cliente
- Por eso, antes de comenzar una sesión de programación con IA, configuro siempre estas herramientas de aseguramiento de calidad
- tomando como ejemplo este Makefile:
black,isort: formateo de códigoruff: lintingmypy: verificación de tiposbandit: análisis de seguridad- suite completa de pruebas
- tomando como ejemplo este Makefile:
- Los agentes de IA basados en Claude pueden reconocer y utilizar estas herramientas
- Ejemplo: si falla la verificación de tipos, la IA corrige por sí sola el código para que pase
- Para la validación funcional también proporciono solicitudes de prueba del API con comandos
curl- Resulta impresionante ver cómo la IA llama directamente a los endpoints, revisa las respuestas y mejora el código
- Así, los guardrails basados en herramientas son componentes indispensables para ayudar a que la IA produzca resultados confiables
Técnica de keyframing basada en archivos
- La IA es fuerte en implementaciones creativas, pero puede carecer de dirección cuando se trata de estructura de código o composición de archivos
- La estrategia que uso para compensarlo es el keyframing basado en archivos (file-based keyframing)
- Esta técnica está inspirada en el método de keyframes usado en animación:
- un animador experimentado crea primero las escenas importantes (keyframes), y luego el resto lo completa el personal de apoyo
- así se puede mantener la calidad y aumentar la eficiencia del trabajo
- En proyectos reales de programación con IA, antes de implementar creo por adelantado archivos stub vacíos
- por ejemplo: endpoints de API, clientes API, clases controller, plantillas Twig, etc.
- Estos archivos keyframe le proporcionan a la IA la siguiente información de contexto importante
- La forma en que se organiza la estructura de archivos del proyecto
- La estructura de namespaces
- Las convenciones de nombres
- Patrones de código consistentes
- En vez de explicar toda la estructura en un prompt, se mejora la precisión del razonamiento de la IA al darle pistas dentro del propio codebase
- Este enfoque también subraya el principio de “poner nombres”, que sigue siendo importante incluso en la era de la IA
- Como la IA funciona a partir del lenguaje, el texto cargado de intención y significado produce mejores resultados
Aplicación integrada en un caso real: implementación de la UI del dashboard de contratos de suscripción
- Presento un ejemplo práctico donde se aplican de forma integrada los tres principios clave explicados antes en un solo proyecto:
- Documentación detallada de requisitos
- Guardrails de calidad basados en herramientas
- Técnica de keyframing basada en archivos
-
Resumen del proyecto
- Objetivo: implementar un dashboard web de solo lectura para visualizar en formato de tabla la información de contratos de suscripción dentro de la plataforma
- Alcance: entorno de múltiples codebases (monorepo)
backend-app: aplicación Symfony 5, donde viven los datosjanus-christophorus: aplicación Symfony 7, que ofrece la UIjanus-shared-bundle: incluye la implementación del cliente APIjanus-webui-bundle: incluye guía de estilos, configuración de Tailwind y plantillas Twig
-
Estructura de requisitos
- Leer los datos del backend a través del API y mostrarlos en la UI del frontend
- Soportar también un modo demo además del endpoint API real (con datos falsos para pruebas)
- La UI debe implementarse de forma consistente con la guía de estilos
- Cada capa se implementa con los siguientes componentes:
- Endpoint de API
- Cliente API
- Clase de servicio de la capa de presentación
- Controller y plantilla Twig
-
Trabajo previo para la sesión de IA
- Crear por adelantado archivos vacíos en todos los codebases con el enfoque de keyframing basado en archivos
- Proporcionar a la IA como referencia la guía de estilos existente, el servicio de navegación y funcionalidades similares
- Poder ejecutar herramientas de calidad (como PHPStan) en cada codebase
- Ejemplo: uso del script
.dxcli/dxcli.sh quality
- Ejemplo: uso del script
-
Cómo se usan los principios integrados
- Organización de requisitos: explicar en el prompt los requerimientos detallados y la estructura del sistema
- Proveer guardrails: incluir instrucciones para usar herramientas de inspección de código
- Proveer keyframes: crear con anticipación los archivos a implementar para que la IA escriba código en la ubicación y contexto correctos
-
Objetivos principales
- Proporcionar rápidamente una UI que permita captar de un vistazo toda la información de los contratos
- Ofrecer estructura y pistas claras para que la IA pueda hacer preguntas y planear durante la implementación real
- Este ejemplo muestra muy bien cuán poderosa puede ser la sinergia entre herramientas de IA y experiencia humana cuando colaboran
Conclusión: herramientas de IA + experiencia humana = la mejor combinación
- Al proporcionar requisitos detallados, guardrails basados en herramientas y keyframing basado en archivos,
se puede aprovechar la gran capacidad de la IA mientras se mantiene la calidad del código y la consistencia de la arquitectura - Estas prácticas tradicionales de desarrollo siguen siendo válidas en la era de la IA y,
de hecho, se potencian aún más gracias a la experiencia y la capacidad de análisis de los desarrolladores senior - Al final, la IA no es más que una herramienta, y
vivimos en una época en la que la experiencia y la habilidad humanas para usarla correctamente son más importantes que nunca
1 comentarios
Opiniones de Hacker News
Un desarrollador de Python con mucha experiencia revisó un archivo en particular y señaló que estaba lleno de errores de un ingeniero de software junior
load_json, que verifica si el archivo existe y luego continúa como si con eso quedara garantizado que el archivo efectivamente existeUn programador aficionado con 25 años de experiencia siente que los LLM y el vibecoding perjudican la creatividad
Un desarrollador menor de 40 años siente que la IA es útil como herramienta para quitar trabajo manual
Un usuario siente que generar código con IA es ineficiente
Alguien considera que la IA es útil en proyectos nuevos (greenfield), pero ineficiente en proyectos existentes (brownfield)
Un desarrollador planifica los proyectos desde el inicio con archivos Markdown
Un usuario cree que la experiencia en ingeniería de software es importante en la era de la IA
Un usuario intenta aplicar el concepto de "sorpresa" de la teoría de la información a los LLM
Un usuario intenta guiar el código generado por IA mediante desarrollo guiado por pruebas (TDD)
Un usuario está preocupado porque la forma actual de la IA no encaja con la dirección futura deseable del software
Un usuario siente que la IA avanza tan rápido que puede resultar abrumadora