Las máquinas (aún) no saben programar, quizás por eso tengamos tanta literatura sobre la gestión de las personas y de los equipos en ingeniería del software.
El caso es que ni la mejor metodología, ni las mejores herramientas producirán un buen producto si no tenemos somos un buen equipo. Por otro lado, un buen equipo, casi siempre será una garantía de éxito.
La importancia de los equipos en el desarrollo software ya se conocía hace 30 años, cuando Tom DeMarco y Timothy Lister hicieron popular el término Peopleware, explorando el aspecto social de esta disciplina en su libro ‘Peopleware: Productive Projects and Teams’.
En esta entrada veremos algunas características que debemos perseguir si queremos formar un buen equipo. Algo que por cierto, es mucho más que un grupo de personas.
-Todos a una, como en Fuenteovejuna-
Un equipo, a diferencia de un grupo, trabaja conjuntamente y no de manera individual, de forma que los miembros se complementan entre ellos. Además, se persiguen objetivos comunes a todo el equipo, algo que no tiene porqué suceder en los grupos de trabajo.
Por esta razón los verdaderos equipos utilizan casi siempre “nosotros” en lugar de “yo”. También poseen características propias (como desempeño, cohesión, alineamiento…) que se pueden desarrollar, evaluar y mejorar.
No se puede hablar del éxito o fracaso de un miembro del equipo. El éxito del equipo no es una suma de éxitos individuales, sino el producto del esfuerzo colectivo.
En desarrollo ágil la unidad del equipo es algo tan importante que da origen al nombre de la metodología Scrum, que procede de esa formación en rugby donde los jugadores avanzan unidos.
[caption id=”” align=”aligncenter” width=”1598”] Scrum - Por Maree Reveley (CC)[/caption]
-Auto-organizado pero no revuelto-
Una de las características clave de los equipos ágiles es que son, al menos en teoría, auto-organizados. Aunque en la práctica, lamentablemente, suele ser más complicado.
Una compañía tradicional no planteará la auto-organización en un nuevo grupo de trabajo, por lo que empezará asignando responsables sobre las tareas y terminará omitiendo información sobre los objetivos por falta de tiempo, impidiendo el desarrollo del equipo. Al no haber equipo, no se asumirán responsabilidades colectivas, y la organización nunca se planteará la auto-organización.
La empresa ágil, sin embargo, pronto verá los beneficios de la auto-organización, que llevada al extremo nos conduce a casos tan singulares como el de Google:
Nuestros colegas de Google representan a un tipo de empleado muy distinto. No están dedicados a tareas específicas. No se les limita el acceso a la información sobre la empresa ni al poderío de cómputo. Tampoco les molesta asumir riesgos ni se les castiga o limita en modo alguno cuando sus iniciativas arriesgadas fracasan. No son apresados por las definiciones de los puestos ni por las estructuras organizacionales; de hecho, se les alienta para que lleven a la práctica sus propias ideas. No se callan cuando están en desacuerdo con algo.
Eric Schmidt y Jonathan Rosenberg (2015). Cómo trabaja Google.
-Las características de los equipos eficientes-
Si queréis saber más sobre Peopleware os sugiero que echéis un vistazo al MOOC de Agilidad y Lean, de Javier Garzás, que va ya por su 6ª edición. Es gratuito y muy recomendable.
En él encontraréis, entre otras cosas, este vídeo sobre las 5 características de los equipos de alto rendimiento. Que vienen a ser las siguientes:
- Los equipos más productivos son pequeños en número Son equipos de menos de 10 personas, siendo lo ideal de 5 a 7. Esto facilita la comunicación, esencial para la formación del equipo y para estar alineados. Si se necesita más, normalmente, serán más equipos, y no equipos más grandes.
- No trabajan en más de un proyecto a la vez Evitan la pérdida de tiempo debido a los cambios de contexto, algo que facilita la consecución de los objetivos. Priman cerrar las tareas abiertas antes de empezar otras.
- Se limitan las interrupciones Los equipos eficientes saben lo que cuestan las interrupciones, lo que no quiere decir que no se despegan del ordenador, sino que organizan su tiempo con pausas programadas (breaks) para evitar las interrupciones a todas horas. Puedes utilizar herramientas tipo Slack para repartir las dudas de los más nuevos.
- No solucionan retrasos añadiendo a más personas Todos los que hemos estado a pié de cañón sabemos que cuando tenemos mucho trabajo no tenemos tiempo para enseñar a nadie nuevo. ¡No es el momento!
- Los equipos más eficientes son auto-organizados y multifuncionales Si además de auto-organizados somos multifuncionales, seremos como el Equipo A. No habrá tarea que se nos resista. Integrar en un solo equipo desarrolladores, QA e infraestructuras mejorará la comunicación y reducirán los bloqueos.
Ahora que ya conocemos algo más sobre Peopleware solo nos queda ponerlo en práctica. No hay duda de que los mejores equipos hacen el mejor software.