¿Qué es el bus factor en desarrollo de software?

Imagina por un momento que un autobús escolar atropella a la persona (o personas) que más experiencia y commits tiene en tu proyecto de software. Piénsalo un minuto:

  • ¿Cómo afectaría a tu empresa/proyecto?
  • ¿Cómo y quién continuaría el proyecto?
  • ¿Cuanto tiempo tardarían en volver a la rapidez en cambios o mantenimiento?

Básicamente el bus factor es cuantas personas tienen el conocimiento para seguir creando tu producto. Por obvias razones, mientras menos personas, peor para ti en un hipotético caso de atropellamiento, renuncia o vacaciones largas.

¿Todos los equipos tienen bus factor?

Sí, si hay héroes. Te explico un poco. El desarrollador héroe es aquel que todo lo sabe y que siempre tiene la respuesta a nivel de negocio y a nivel técnico. Parece bueno, pero es un problema para todo el equipo, pues este tipo de perfiles no dejan crecer al equipo a su máximo potencial pues nunca toman acción a requerimientos o problemas críticos.

También es un problema para nuestro héroe, porque vive en una zona donde todo lo que sucede es por él, lo que puede llevar al confort y al egocentrismo, evitando que el mismo pueda llegar también a su máximo potencial debido a que el siempre tiene la solución "correcta".

¿Cómo aumento el bus factor en mi equipo?

Aquí te escribo algunos consejos y acciones que a me han ayudado para aumentar este factor:

1. Crea una cultura de documentación

Para muchos desarrolladores esto puede ser aburrido o engorroso. Pero es parte del proceso de desarrollo e incrementa la velocidad del equipo, ya que a cualquier duda puedes visitar la documentación. Activar una wiki en tu repositorio de código o escribiendo mejores historias de usuario son actividades que ayudan con este punto.

2. Realiza programación en pares con regularidad

El o los desarrolladores héroes deben realizar sesiones de pair-programming en algunos requerimientos. Esto facilita que el conocimiento de negocio y de buenas prácticas fluya. Mientras más sesiones se tengan, el desarrollador "novato" empezará a conocer el núcleo de la solución, logrando independencia para nuevos requerimientos.

3. Todos somos héroes humildes

Siguiendo el punto anterior. Cuando todos tienen el mismo conocimiento todos pueden resolver o crear soluciones en el proyecto. Esto crea fortalezas en todo el equipo (a nivel psicológico y técnico) dando como resultado capacidad de reacción ante requerimientos o errores críticos.

4. Capacitación de tu producto ó solución

Esto es algo que suelo comentar bastante. Tus desarrolladores, si o si, necesitan conocer y saber usar tu producto o solución. Te pongo un ejemplo, si vendes software para restaurantes: muéstrale como crear una comanda, como activar o desactivar platillos, o como reservar mesas. Esto ayudará a tener más contexto de la aplicación que desarrollará y empezará a hablar el mismo lenguaje que el negocio.

Conclusión

Estos consejos te ayudarán a crear una cultura de aprendizaje y el conocimiento estará disponible para todo el equipo lo que lo hará crecer en confianza y habilidades técnicas. No dudes en ponerlos en práctica.