El mundo se está volviendo loco. Miles y miles de cosas que tenemos en nuestro cerebro todos los días; nuevas cosas para hacer, nuevas tendencias para descubrir, nuevos miembros del equipo, proyectos que tiene que ponerse al día, autoeducación, etc. Parece que todo apunta a estresarnos y realmente afecta la calidad de los proyectos en los que trabajamos. Sin embargo, vemos un salto de calidad en las empresas debido a la adopción de metodología ágil. Y como en la mayoría de los casos, las empresas con más éxito tienen más de una oficina y equipos en todo el mundo, el artículo de hoy se centrará en los Equipos Ágiles Distribuidos para ver cómo podemos trabajar de manera más eficiente.

Y debo decir que Agile se implementa en cualquier tipo de negocio y en cualquier departamento. Por ejemplo, el “Gerente de tienda de zapatos” realiza reuniones diarias para compartir nuevas estrategias de ventas que funcionaron, planifica el día siguiente, se preocupa si alguien en un equipo tiene un problema, etc.

Agile se basa en valorar a los individuos y sus interacciones, la colaboración con los clientes y los miembros del equipo para cambiar. Se trata de hacer que el producto o servicio “funcione”, calidad sobre cantidad.

Los equipos ágiles superan una situación difícil a través de “nosotros” en lugar de “yo”. El escenario ideal casi nunca se volverá real; los miembros del equipo enferman, suceden cosas inesperadas, etc. Y estar en la misma habitación o edificio no significa que aumente la productividad del equipo. La comunicación siempre ha sido clave para los equipos ágiles, y aunque los equipos pueden trabajar desde diferentes continentes, todavía pueden hablar entre sí de manera regular a través de Slack, Skype, Hangouts, etc.

 

Equipos ágiles distribuidos: 9 trucos que lo hacen funcionar

 

Vivimos en la era globalizada en la que casi todas las empresas se enfrentan al mismo problema: cómo trabajar de manera eficiente mientras trabajan desde diferentes lugares y tienen diferentes husos horarios. Con ágil, los equipos eliminan esta sensación de distribución y aún entregan software de calidad y funcional. ¿Cómo?

Aquí brindamos una lista de 9 trucos a seguir que optimizarán la productividad de tus equipos ágiles distribuidos:

 

1- La importancia de la comunicación

Cuando hablamos de equipos ágiles distribuidos, hablamos de herramientas para la comunicación. Y con las herramientas no solo me refiero a Skype, me refiero también a las herramientas de gestión de proyectos, por ejemplo: Jira, Slack, Git, etc. Además, hay muchas herramientas de intercambio de información muy útiles y fáciles de usar, por ejemplo, Dropbox, Drive, Trello, etc.

Las reuniones diarias, comienzos del proyecto, las demos y las retrospectivas son imprescindibles, al igual que para cualquier otro equipo ágil. Y cuando se trata de personas de otros lugares, es una buena práctica pedirles que resuman la conversación, en particular, para identificar los elementos de acción clave y la propiedad de los mismos, para garantizar que todos estén de acuerdo con lo que se discutió. También ayuda a mantenerse en la misma página y participar plenamente en el proyecto. Asegurarse de tener todos los elementos esenciales de comunicación para fomentar la colaboración.

 

2- Reuniones cara a cara

Otro elemento importante para los equipos ágiles distribuidos: ponerle nombres a las caras mediante reuniones cara a cara. A veces te encuentras en una situación en la que trabajaste con un equipo internacional, pero nunca la has visto y no tienes idea de cómo se ve él o ella. Es una gran mejora pasar al menos uno o dos días cara a cara, al menos una vez, e idealmente dos o más veces al año. Reunir al equipo ágil al comienzo del proyecto para sentar las bases de la comunicación, sin una inversión continua para mantener una colaboración efectiva entre los equipos, corre el riesgo de que sus subgrupos se desvíen de la estrategia general. Los embajadores son personas que viajan entre sitios, a menudo personas técnicamente sénior o expertos empresariales de alto nivel, que comparten información entre los equipos secundarios y motivan al equipo.

La comunicación mejora, el trabajo en equipo mejora y “Nosotros contra ellos” se reduce. Y si la distancia no es muy larga, la semilla visita intervalos poco frecuentes a lo largo de la duración del proyecto, genera confianza entre el cliente y el equipo y entre los miembros del equipo. ¡No olvides que los equipos de mayor rendimiento son aquellos basados ​​en la confianza!
Además, sincroniza las horas de trabajo para obtener una superposición de al menos 1-2 horas entre los equipos locales y remotos. Usa al menos una hora para la sincronización y el flujo de información entre los equipos.

 

3 – Estándares comunes y control

Debe haber un entendimiento común y un acuerdo sobre las mejores prácticas y estándares que adoptarán y seguirán. Esto incluye procedimientos de desarrollo, estándares y estilos de código, patrones y otras mejores prácticas que resultan en un producto extensible y de calidad. Estas mejores prácticas y estándares pueden ser a nivel de la industria o los que el equipo define por sí mismos.

Además de establecer días diferentes para tener una idea general de la situación, la calidad y los criterios que estamos entregando también deben tenerse en cuenta. La creación de puntos de control es un gran cambio de juego cuando se trabaja con metodologías ágiles.

Aplicado a la ingeniería de software, las metodologías ágiles se basan en un conjunto de prácticas técnicas, conocidas comúnmente como desarrollo guillado por pruebas (TDD), pruebas unitarias, refactorización, integración continua (CI), programación en pareja, etc.

Por ejemplo, TDD sirve como una forma de garantizar que los requisitos se comuniquen claramente y los entregables cumplirán con las expectativas. Junto con la refactorización, constituye el ciclo de refactorización rojo-verde, lo que permite una calidad de software cada vez mayor y el mejor diseño de código posible.

La integración continua sostenible y los procesos de entrega continua ayudan a los equipos a entregar compilaciones estables y automatizadas de manera constante y frecuente. Junto con el control de versiones, el CI permite una fácil administración remota del código fuente. Por lo tanto, los equipos ágiles distribuidos pueden tener acceso las 24 horas, todos los días de la semana, a la línea principal del proyecto y contribuir en cualquier momento.

 

4- Sé claro sobre Agile

Desafortunadamente, algunas personas afirman que son ágiles, pero no lo son en realidad. Entonces, antes que nada, el concepto ágil debe estar claro para todos. Sabemos lo difícil que puede ser el cambio y lo difícil que puede ser introducir una nueva metodología para el equipo. Como hay diferentes maneras ágiles de administrar el proyecto, un equipo debe acordar cómo quieren hacerlo, por ejemplo, varias semanas / sprint, tiempo para reuniones diarias, pruebas de automatización, etc.

 

5- Objetivos y visión compartidos

Agile se trata de flexibilidad, pero eso no significa que no tengas metas, hitos y hoja de ruta. El punto importante aquí no es lo que haces, sino cómo lo haces. Promoviendo una cultura basada en la colaboración y el respeto, una cultura en la que las personas quieran trabajar juntas incluso cuando están muy distanciadas.

 

6- Herramientas y metodologías

Scrum es la metodología más popular para ser utilizada en proyectos de software. En cuanto a las herramientas, en la gestión ágil de proyectos, es imprescindible. Las herramientas de Atlassian pueden ser de gran ayuda para formar tu equipo ágil donde sea que se encuentren los miembros del equipo. JIRA Software, Bitbucket e HipChat permitirán a los desarrolladores construir los productos juntos, comunicarse con claridad y ser tan productivos como cabría esperar de cualquier equipo de Agile verdadero. Las herramientas realmente aumentan la productividad al eliminar las tareas manuales. Y creemos que para ser realmente ágil necesitas hacer TDD & CI.

 

7- Distribuir el trabajo de manera uniforme

Asegurarse de que todos los miembros del equipo comprendan su rol y tengan cargas de trabajo bastante iguales.

Además, asegurarse de que los miembros de un equipo remoto nunca sean tratados como “ayudantes” para los miembros del equipo en la ubicación “principal”. Si los miembros del equipo remoto se sienten como empleados contratados en lugar de miembros del equipo completo, es posible que tengan menos compromiso con el proyecto. Y si alguien se está agotando debido a una carga de trabajo realmente alta, mueve algunas tareas a otro desarrollador si es posible. Si alguien no tiene suficiente trabajo, encuentra maneras de mantener a la persona involucrada con el proyecto. Las personas en ambos extremos del rango de carga de trabajo generalmente pierden el enfoque y, finalmente, se desvinculan.

 

8 – Designar un líder en cada sitio de trabajo

En cualquier lugar de trabajo con un equipo de tres o más miembros, alguien debe servir como el líder. El líder en su sitio proporcionará al equipo la dirección y el apoyo a través de la interacción cara a cara. También servirán como un único punto de contacto y representarán las necesidades del equipo local para que todo el equipo no tenga que preocuparse por los problemas de gestión. De esta manera, el líder racionalizará la comunicación y asegurará que el equipo tenga el apoyo y la orientación que necesitan para mantenerse enfocados y mantenerse en el buen camino.

 

9- Entrenamiento

El plan estructurado de incorporación y capacitación ayudará a garantizar que los recién llegados estén preparados y formados adecuadamente. Debería describirse lo que necesitan completar, qué herramientas necesitan, cuáles son los estándares, etc.

 

Y no te olvides de suscribirte a nuestro boletín mensual para recibir las últimas tendencias e información sobre equipos ágiles distribuidos.

 

Si este artículo sobre equipos ágiles distribuidos te gustó, te puede interesar: 

 

La Deuda Técnica 

Beneficios de la metodología ágil 

Los beneficios de la tecnología Scrum  

Beneficios de la integración contínua

Beneficios de TDD

¿Porque debería usar Docker en mi proyecto de desarrollo?

Beneficios de la pruebas unitarias

La importancia de las retrospectivas en la metodología Ágil 

Simular respuestas del servidor con Nodejs

Principio de responsabilidad única 

Por qué Kotlin ?

Patrón MVP en iOS

Arquitectura de microservicios  

F-bound en Scala: traits genéricos con higher-kinded types

Scala Generics I : Clases genéricas y Type bounds

Scala Generics II: covarianza y contravarianza