El conocimiento general destaca cómo se debe evitar en la medida de lo posible la multitarea porque te desvía del enfoque. Sin embargo, con el auge de los agentes codificadores, el trabajo paralelo se ha convertido en un requisito para ser eficiente. Teniendo en cuenta que los agentes de codificación pueden ejecutarse durante un período de tiempo más largo, no querrás perder tiempo esperando a que terminen. En cambio, desea despedir a un agente y, mientras ese agente está trabajando, desea iniciar otra tarea.
Sin embargo, iniciar tareas en paralelo no es sencillo. Hay numerosas consideraciones que debe hacer, como
¿Cómo se ejecutan varios agentes de codificación en el mismo repositorio? ¿Cómo se puede seguir minimizando el cambio de contexto tanto como sea posible? ¿Cómo mantiene una visión general de todos sus agentes que se están ejecutando?
Cubriré todos estos puntos en el artículo de hoy con detalles sobre cómo trato estos problemas y la solución que aplico.
¿Por qué ejecutar agentes en paralelo?
Como ocurre con muchos otros artículos que he escrito, la razón principal de las técnicas que describo en el artículo es ahorrar tiempo y ser más eficiente como ingeniero. Si desea aprovechar al máximo los agentes de codificación y el increíble desarrollo de LLM que hemos visto en los últimos años, debe paralelizar su trabajo.
Para entender por qué, imaginemos el ejemplo opuesto. Imaginemos que solo trabaja de forma secuencial, como lo hacía normalmente cuando programaba antes de que los LLM estuvieran disponibles. La programación secuencial con agentes de codificación sería algo así como:
Encuentre la tarea que desea realizar. Descríbala a un agente y haga un plan. Inicie el agente y déjelo ejecutar. Espera hasta que termine o te pida algo. Probar la implementación e iterar.
La duración de cada una de estas tareas variará mucho. A veces, describir la tarea a un agente y crear un plan lleva la mayor cantidad de tiempo, pero en mi experiencia, el tercer paso suele consumir mucho tiempo, especialmente para implementaciones más grandes, como implementar una nueva característica o resolver un error complejo.
Ahora, para ser más eficientes, lo que queremos hacer es eliminar los cuellos de botella. El tercer paso es un cuello de botella que podemos minimizar o eliminar fácilmente. Es muy difícil ser más eficiente en los pasos uno y dos. Debe hacer esto secuencialmente y dedicarles tiempo. El cuarto paso es definitivamente algo que puede hacer más eficiente, como lo describí en otros artículos, como mi artículo sobre Cómo hacer que Claude sea mejor en implementaciones de una sola vez. Por lo tanto, me centraré en el paso 3 de este artículo y en cómo hacerlo más eficiente.
Cómo ejecutar agentes en paralelo
La solución sencilla para hacer que el paso 3 sea más eficiente es ejecutar agentes en paralelo. Esto suena simple en teoría, pero en realidad es más difícil de hacer de manera efectiva en la práctica. La razón de esto es que ejecutar tareas en paralelo presenta una serie de desafíos.
Un desafío al que debes enfrentarte es el de los agentes que escriben código entre sí. No desea que los agentes compitan por editar un archivo específico o probar su propia implementación. Así que este es un problema con el que tienes que lidiar. Otro problema con el que tienes que lidiar es el hecho de que tienes que cambiar de contexto. Entonces, cuando ejecuta tareas en paralelo, naturalmente tiene que cambiar de contexto entre las diferentes tareas. Un aspecto del cambio de contexto es que primero hay que describir una tarea y cómo resolverla, luego describir otra tarea y cómo resolverla. Otro aspecto del cambio de contexto es cuando el agente solicita comentarios, como hacerle preguntas sobre una implementación o pedirle que pruebe una implementación. Por lo tanto, minimizar el cambio de contexto es otro aspecto que describiré en las últimas secciones.
Ejecutar múltiples agentes en el mismo repositorio usando árboles de trabajo
El primer tema que cubriré es cómo ejecutar múltiples agentes en el mismo repositorio. La respuesta sencilla a cómo hacer esto es utilizar árboles de trabajo.
Simplemente puede indicarle a su agente que use un árbol de trabajo, que es una característica de Git que esencialmente copia todo su repositorio. Por tanto, diferentes agentes pueden trabajar en repositorios completamente diferentes. Una vez que un agente finaliza su implementación, se puede fusionar en la rama principal del repositorio principal y, de esta manera, puede tener varios agentes trabajando en el mismo repositorio sin conflictos.
Sin embargo, a veces puede haber formas más sencillas de lograr la configuración del árbol de trabajo. Desde mi experiencia personal, tuve problemas al usar Claude Code y pedirle que revisara un árbol de trabajo. Claude a menudo se olvidaba de revisar un nuevo árbol de trabajo y luego comenzar a trabajar en el repositorio principal. Luego, cuando varios agentes hicieron lo mismo, comencé a tener conflictos. Afortunadamente, Claude Code implementó un comando –worktree que puede usar al ejecutar código en la nube, como se muestra a continuación.
claude –worktree
Si usa este comando dentro de un repositorio de GitHub, Claude verificará automáticamente un nuevo árbol de trabajo dado el repositorio existente y almacenará todos los árboles de trabajo en una carpeta oculta de Claude. Esto es increíblemente útil por dos razones principales:
Garantiza que siempre utilizará un árbol de trabajo y que sus agentes no interferirán entre sí. Los árboles de trabajo se almacenan en una carpeta Claude oculta y no en su carpeta principal. Esto reduce significativamente la cantidad de ruido en la estructura de carpetas, lo que facilita la navegación manual por la estructura de carpetas si es necesario.
Si está utilizando otro agente de codificación, puede descubrir cómo han configurado los árboles de trabajo, ya que los árboles de trabajo se están convirtiendo cada vez más en una característica esperada para cualquier programa de agente de codificación, como un IDE como Cursor o una CLI como Claude Code.
Minimizar el cambio de contexto
El segundo aspecto en el que hay que pensar al ejecutar agentes de codificación en paralelo es que hay que minimizar el cambio de contexto. Mencioné anteriormente cómo esto se produce principalmente en dos aspectos. Uno, al comenzar después de las tareas, y dos, al interactuar con el agente durante la tarea, como cuando el agente le hace preguntas o finaliza su implementación y le pide que lo pruebe.
No existe una solución sencilla para eliminar simplemente la conmutación de contactos, ya que el trabajo en paralelo implica inherentemente la conmutación de contactos. Sin embargo, hay algunas cosas que tengo en cuenta para minimizar el cambio de contactos.
Lo primero que tengo en cuenta es siempre terminar mi tarea actual antes de pasar a otra. Esto parece muy obvio cuando lo describo; sin embargo, quiero dar un ejemplo específico. Puede encontrar el ejemplo descrito en el texto a continuación, pero también mostraré la imagen para brindarle una comprensión más fácil del concepto a continuación.
Digamos que tienes dos tareas, A y B, que debes realizar. La tarea A requiere una interacción de cinco minutos por parte del usuario, mientras que la tarea B requiere una interacción de dos minutos por parte del usuario y, después de esa interacción, el agente funcionará durante diez minutos para completar la tarea. Además, ya comenzaste la tarea A y tu contexto mental se encuentra actualmente en la tarea A.
En esta situación, es muy tentador cambiar de la tarea A a la tarea B, realizar la configuración de dos minutos en la tarea B para que el agente pueda ejecutarse mientras usted termina la tarea A. Sin embargo, le recomiendo que evite esto tanto como sea posible y que intente terminar el trabajo que está haciendo actualmente y luego pasar a la siguiente tarea en la fila, aunque esto pueda no parecer el enfoque óptimo a primera vista.
La razón de esto es que, por supuesto, puedes ver cuántos minutos lleva completar cada tarea. La tarea A tarda 5 minutos, la tarea B tarda 2 minutos de interacción y luego 10 minutos en ejecutarse. Sin embargo, lo que no ve es el costo oculto del cambio de contexto, y yo diría que cambiar de la tarea A a B y luego volver a la tarea A le costará más tiempo que simplemente completar la tarea A y luego completar la tarea B.
La segunda forma de minimizar el cambio de contactos es minimizar las distracciones en mi computadora. Hay numerosas formas de hacer esto, pero en general, le recomiendo que desactive todas las notificaciones. Yo, por ejemplo, desactivé las notificaciones de Slack en mi computadora y también el número que aparece en la aplicación Slack que te informa si tienes un mensaje esperándote. Esto me distrae mucho y me quita el enfoque y el contexto del trabajo que estoy haciendo actualmente.
Además, trato de mantener una pestaña en la configuración de mi terminal por repositorio en el que estoy trabajando. Y si estoy trabajando en varias tareas dentro de un único repositorio, divido la pestaña. Discutiré la configuración de mi terminal con más detalle en la siguiente sección.
Mantenga una visión general de todos sus agentes
Cuando ejecuta varios agentes, es increíblemente importante mantener una descripción general de todos sus agentes. Sin embargo, esto no necesariamente es algo natural y es necesario tomar decisiones activas para que obtener una visión general sea lo más fácil posible.
Aquí es donde la configuración de mi terminal entra en juego. Cuando tengo de 5 a 10 agentes ejecutándose en paralelo, puede resultar muy confuso qué agente está haciendo qué y con qué necesitas interactuar.
Para la configuración de mi terminal, uso Warp. Creo que Warp es un buen terminal de IA que tiene un buen autocompletado y con el que puedo interactuar fácilmente para usar Claude Code de manera efectiva. Utilizo una pestaña en Warp por repositorio en el que estoy trabajando. Este podría ser un repositorio de codificación, por ejemplo, que contenga la interfaz o la aplicación, pero también podría ser un repositorio de ventas donde haré todo el trabajo de ventas.
Luego, si ejecuto varios agentes dentro de un repositorio, lo que hago a menudo, simplemente divido las pestañas usando CMD + D en Mac. Entonces obtengo múltiples subpestañas divididas para cada una de mis pestañas principales. Esto me ayuda a mantener una sola pestaña principal para cada repositorio y, al mismo tiempo, ejecutar varios agentes dentro del repositorio.
Además, me gusta cambiar el nombre de mis pestañas dentro de Warp al nombre del repositorio para que sea fácil navegar a la pestaña correcta. Y use CMD 1/2/3 y así sucesivamente para navegar rápidamente entre las diferentes pestañas. Y tengo notificaciones de Warp cada vez que un agente necesita interacción.
También me gustaría señalar que existen muchas otras configuraciones que puede utilizar para sus agentes de codificación. En primer lugar, puedes utilizar un terminal diferente, que probablemente también funcionará bastante bien, aunque mi preferencia sigue siendo cálida. Otra buena alternativa que conozco es usar la aplicación Claude o una aplicación llamada Conductor, que facilita brindar una descripción general de los diferentes repositorios y agentes de codificación que está ejecutando.
Sin embargo, en general, su configuración se reduce a sus preferencias. Si encuentra una configuración que funcione bien para usted, le recomiendo usar esa configuración y simplemente seguir con ella.
Conclusión
En este artículo, analicé cómo paralelizar eficientemente sus tareas de programación. La razón principal por la que debería hacer esto es simplemente para ser más eficiente como ingeniero. Si ejecuta tareas en paralelo, será mucho más eficaz que un ingeniero similar que ejecute tareas de forma secuencial. Sin embargo, ejecutar tareas en paralelo no es sencillo y es necesario utilizar técnicas específicas para mantener una visión general de todos sus agentes, minimizar el cambio de contexto y garantizar que sus agentes no colisionen entre sí. Creo que el concepto que he descrito en este artículo es el futuro del trabajo con IA. Los humanos se convertirán en orquestadores de agentes de IA, y usted deberá poder paralelizar eficientemente su trabajo y enviar agentes para que completen tareas específicas mientras usted solo interactúa con los agentes cuando lo solicite.
👉 Mi libro electrónico y seminario web gratuitos:
🚀 10 veces su ingeniería con LLM (curso gratuito por correo electrónico de 3 días)
📚 Obtenga mi libro electrónico gratuito sobre Modelos de lenguaje de visión
💻 Mi seminario web sobre modelos de lenguaje de visión
👉 Encuéntrame en las redes sociales:
💌 Subpila
🐦X/Twitter