Ya son muchos años que llevo desarrollando software, sólo o en equipo, pero el concepto de trabajar junto a otros profesionales muchas veces es equivocado y en este último año creo haber entendido de qué se trata.
En uno de mis primeros trabajos aprendí que no es lo mismo un grupo que un equipo. Por definición un equipo, a diferencia de un grupo, son “personas que piensan de manera coordinada para un objetivo común”. Tal vez suena más fácil a ponerlo en práctica. Creo que en nuestro medio ecuatoriano (y tal vez en otros países latinoamericanos) no está del todo entendido o puesto en práctica, a continuación escribiré una serie de comparaciones entre lo que se hace versus lo que se debe hacer.
Desarrollar un proyecto de software a veces es una tarea titánica que excede cualquier estimación realizada, mucho más si es realizado un una sola persona en los escenarios donde la empresa es pequeña (A.K.A Startup) o el proyecto es “pequeño”, entre otros sólo para decir unos cuantos ejemplos. En esos casos el trabajo en equipo es nulo o muy reducido con otro tipo de profesionales, como personas de ventas, operaciones o inclusive el mismo CEO, los mismo que nunca te van a entender sobre bugs o estimaciones por el lenguaje técnico que les hablas a menos que les hables en concretos en lugar de abstractos: “la aplicación está subida”, “hay que renovar el dominio”, “ya se ejecutó el proceso”, tal vez esto sea un buen tema para otro artículo.
Ahora bien, en el caso de tener equipos de trabajo para un proyecto, muchas veces se lo ejecuta de manera desorganizada. No basta con asignar “tú trabajas en esto y yo en esto otro y al final unimos todo”. Esta fórmula trae algunas consecuencias que se me vienen a la mente:
- Conflictos en el control de versiones (GIT)
- Se rompe el trabajo de otra persona (muchas veces por no contar con pruebas unitarias)
- No es lo que el cliente esperaba
- Diferencias en las interfaces visuales (si no contamos con un mockup o un estándar de estilo)
- Inconsistencia o redundancia en la base de datos
Para lograr una buena sinergia en el trabajo en equipo, inclusive con miembros remotos, enumero algunos puntos que creo que son importantes a considerar.
- Hacer que todo el equipo comparta la visión del negocio, eso incluye conocimientos del modelo de negocio.
- Alta comunicación es esencial, puede ser escrita (a través de plataformas como Slack) pero nada sustituye la eficacia de una reunión corta o una llamada de voz/video si queremos desbloquearnos con una sesión de pairing.
- Adopción de un modelo Agile para el desarrollo de software, puede ser un desafío decidir cuál se adapta mejor al tipo de proyecto, sin embargo invertir un tiempo para investigación puede ahorrar mucho dinero en tiempo perdido. Los rituales de las metodologías ágiles ayudan a construir mejores equipos que fortalecen el punto anterior.
- Adopción de una plataforma para el manejo de proyecto. Existen muchas opciones libres o de pago que permiten centralizar la comunicación concerniente al desarrollo de los requerimientos/funcionalidades/tareas/bugs o como les queramos llamar. De esa manera todo el equipo puede estar “en la misma página” sabiendo que están haciendo los demás y el ciclo de vida actual de cada historia. Para mencionar algunas: Trello, Asana, Jira, Taiga, entre otras. Esta se convertirá en nuestra documentación de oro, donde podemos ver qué, cuándo, quién y por qué se solicitó trabajar en algo.
- Crear guidelines de trabajo en equipo. Cosas sencillas tales como: qué guía de estilos vamos a usar, cómo vamos a nombrar nuestros archivos, convenciones para el API, inclusive cómo usar el GIT, qué labels utilizar, cómo abrir un Pull Request y el GIT FLOW workflow. Así nadie se sorprenderá de encontrarse con cosas nuevas.
Finalmente todos estos puntos se reducen a llevar una transparencia con el cliente y mantener un equipo multidisciplinario y ordenado. Algo que se me ocurrió recientemente y lo compartí en un tweet dice: Si eres un Developer sin Project Manager, entonces tú también eres un Project Manager.
Tienes más consejos que pueden hacer del trabajo en equipo algo realmente agradable? Compártelo en los comentarios. Ayudemos a difundir buenas prácticas de trabajo en equipo para el desarrollo de software.
Originally published at https://www.linkedin.com.