Continúo con la serie de post dedicado a la definición de equipos de desarrollos ágiles. En el anterior post hice un repaso general de malas prácticas y dinámicas sociales negativas que generan éstas. En éste veremos más en detalle los valores y características que debe tener un miembro del equipo para que éste sea eficaz.
Montar un equipo agile es más que incrementar la frecuencia de feedback, disminuir la burocracia y otras buenas prácticas. Lo más indispensable de todo es simplemente contar con la gente adecuada. No se trata de que simplemente pongamos un jefe de proyecto “buena gente” o de que tengamos programadores de alto nivel, sino de que todos los miembros del equipo, desde el primero hasta el último, jefes, técnicos y gerentes, compartan unos mismos valores y capacidades. Si hay una fracción significativa de los miembros del equipo que no cumplen ésto, simplemente fracasarás en tu intento de implantar el agilismo, uses las prácticas que uses.
El agilismo, en el fondo, propone un metaproceso capaz de adaptar el proceso de desarrollo en si, tanto a los cambios externos como a los errores detectados, con el fin de hacerlo cada vez más eficiente. Por lo tanto no nos vale con contar con gente capaz de seguir un proceso de desarrollo, sino que además deben ser capaces de mejorarlo de forma continua. Ésto es vital, ya que aunque empecemos con un mal proceso, a través de la mejora continua podremos llegar a uno bueno. Si en cambio, empezamos con un proceso eficaz, y no tenemos capacidad de adaptación y mejora continua, simplemente ocurrirá que tarde o temprano nuestro entorno cambie y nuestro proceso ya no sea eficaz en el nuevo entorno, aunque lo fuera en el antiguo. Cada una de los valores que presentaré a continuación tienen pues como objetivo último, el capacitar a la organización para realizar una mejora continua del proceso de desarrollo, y adaptarlo a cambios en el entorno. Para cada uno de ellos indicaré ejemplos positivos y negativos:
- Capacidad de aprender las habilidades necesarias para el trabajo. Una persona que tiene esta capacidad puede aprender por si mismo y de forma suficientemente rápida. En el extremo malo nos encontramos con personas que no quieren aprender, o sólo aprenden si reciben cursos. Esta habilidad es vital para poder adaptarse a nuevas tecnologías, métodos y circunstancias de forma rápida y eficaz.
- Capacidad de detectar errores y problemas. La persona capaz de oler los problemas e ineficiencias, no solo en el código, sino en el proceso de desarrollo, son muy valiosas. Nos permiten reaccionar rápidamente para arreglar problemas, incluso antes de que estos produzcan daños. En el extremo malo encontramos personas que simplemente hacen sus tareas sin darse cuenta de los problemas, aunque se produzcan delante de sus narices ¿Alguien sabe leer una traza de una excepción?
- Aprender de los errores. Equivocarse no es malo, lo malo es equivocarte y no aprender de ello, equivocarse una y otra vez en lo mismo. Ésto es propio de zombis no de personas.
- Capacidad para enseñar a los demás. Esto es fundamental sobre todo en los roles de más responsabilidad. Un rasgo importante de un jefe eficaz y de un buen compañero es saber enseñar a los demás a hacer las cosas bien y a mejorar. Esto nos permite absorber a gente sin experiencia o incluso con malos hábitos y convertirlos en miembros del equipo productivos, te permite mejorar no a ti, sino a la gente que te rodea.
- Capacidad de cuestionar las cosas de forma racional, incluyendo los modelos mentales ya establecidos. De esta forma simplemente seremos capaces de no quedarnos ciegos con modas y modelos mentales preconcebidos, impidiéndonos ver nuevas posibilidades y haciéndonos vulnerables al marketing. Ya hablé de esto en mi primer post.
- Jugador de equipo. Los proyectos son realizados por equipos, no por individuos. Se necesita gente que mire por el conjunto del equipo y no solo por sus propios intereses, ignorando las necesidades del conjunto. Actitudes típicas tales como “el marrón es tuyo” o “balones fuera” son propias de gente egoísta y totalmente prohibidas en un equipo ágil. Todos deben colaborar para conseguir el objetivo común. Si no que se lo digan a algún que otro equipo de fútbol.
- Iniciativa para ejercer todas las capacidades anteriores de motu propio sin necesidad de que alguien te lo ordene. Si no tienes iniciativa, a lo máximo que llegarás es a ser un burócrata que “hace su trabajo según el procedimiento”, y eso con suerte. Esto es totalmente opuesto a la filosofía agile.
- Motivación. Este factor es muy frágil y no depende totalmente de la persona, sino de su entorno. Si los compañeros juegan en equipo, los proyectos tienen éxito, aprendes y ganas un sueldo digno, tu motivación sube.
Aprovecho ahora para definir el termino calidad referida a una persona. Cuanto más y mejor cumpla una persona los valores y capacidades definidos anteriormente, diré de ella que tiene más calidad. No penséis que me refiero a su calidad como ser humano, sino a su calidad como miembro de un equipo que cobra por hacer un trabajo. Tampoco penséis que la calidad depende sobre todo de la experiencia o titulación de esa persona. Pensad que es mucho mejor contratar a alguien sin experiencia pero con capacidad de aprender y jugar en equipo, que a alguien de mucha experiencia sin estos valores. El primero aprenderá sobre la marcha, y cuanto más listo y experto sea, más rápido aprenderá, pero aunque no sea el más inteligente terminará aprendiendo. Por el contrario es muy negativo tener a un super experto pero que no juega en equipo, que no enseña a los demás, no colabora y echa siempre balones fuera.
Es importante detectar si la gente que ya tenemos cumplen estos valores, y si no los cumplen, diagnosticar por qué no. Tal vez sólo están inmersos en una dinámica negativa y no conocen otra cosa, pero pueden llegar a mejorar. O en el peor de los casos simplemente esa persona es incapaz de mejorar, en cuyo caso es mejor prescindir de ella.
Algunos estaréis pensando lo mismo que yo: en muchas empresas la política de contratación y RRHH es totalmente diferente, se basa en criterios como el sueldo, la apariencia o simplemente el azar. Todo esto forma parte de la dinámica negativa que comenté en el post anterior. En cualquier caso, nunca he visto a ninguna empresa completar los proyectos con éxito con este enfoque, aunque sí ganar dinero (usando prácticas poco éticas).
Por último sed indulgentes conmigo y permitid que me flipe un poco
A continuación mostraré un gráfico sobre cómo evoluciona la productividad de un equipo en función de la calidad media de sus miembros. Por supuesto es un gráfico totalmente subjetivo y basado en mi experiencia. Para hacer uno objetivo tendríamos que poder tomar métricas sobre productividad del equipo y sobre la calidad de una persona, cosa que en si sería una tarea muy compleja. Sin embargo tras muchos años uno coge un feeling sobre como funcionan las cosas. Sin más preámbulos allá va:
Como veis tiene dos lineas: la del sentido común, y la que me dice mi experiencia. En la primera todo va como esperado, el aumento de productividad del equipo es lineal con respecto a la calidad de sus miembros. Sin embargo mi experiencia me dice que esto no es real. Si os fijáis en la otra serie, la productividad aumenta mucho más rápido en función de la calidad del equipo. Tal vez sea una aumento exponencial, ¡ o mayor ! Incluso puede llegar a producirse un efecto de discontinuidad: una persona de alta calidad será capaz de solucionar problemas que una persona de baja calidad sea incapaz de resolver, produciéndose en este caso un aumento infinito de la productividad (discontinuidad).
Como conclusión: si queréis montar un equipo eficaz, el primer paso es contar con la gente adecuada, mientras no consigais esto, no os molesteis en intentar otra cosa. Al fin y al cabo el proceso de desarrollo lo implementan y ejecutan personas, si éstas no son capaces, el proceso fracasará.




Totalmente de acuerdo.
Debemos ser conscientes de que el éxito de los proyectos y empresas, normalmente viene derivado de la calidad de sus empleados.
De nada sirve tener a la persona de mayor coeficiente intelectual del mundo, si no está motivada, ni cumple con los objetos de su trabajo, no se obtendrá nada productivo.
Lamentablemente, aún queda mucho camino por andar en este sendero. Los booms tecnológicos y el hambre de las empresas de “hacer dinero” nos han llevado a colapsar el mercado de las TI de personas que no están preparadas (no tienen la calidad suficiente) para realizar correctamente su trabajo. Desgraciadamente, este tipo de perfiles siguen existiendo en las organizaciones, y solo consiguen enturbiar el ambiente de los proyectos.
Desde mi punto de vista, esto se debe a la falta de madurez, no solo en los individuos, sino a la cultura, tanto nacional como empresarial. Mientras que se siga idolatrando a personas como “El Dioni”… y algunas empresas sigan fomentando el “trepismo” en lugar del “productivismo”, entre otros movimientos culturales de semejante impacto, seguiremos teniendo los mismo problemas.
Un saludo.
Quizás hay una falsa concepción: si quieres aumentar la productividad invierte en herramientas, cuanto más caras mejor ¡ Es mucho más rentable el invertir en personas !
Y las cosas deben funcionar en los dos sentidos, debe existir respeto de la empresa al empleado y del empleado a la empresa. Es decir, no debería existir ni empresario tirano ni empleado mercenario.
Si quieres aumentar la productividad, obtener calidad de software homogenea, costes de desarrollo contenidos y cumplimiento de los plazos de desarrollo, sin duda: usa herramientas.
Herramientas o arquitecturas construidas “ad-hoc” o herramientas de fabricantes de software.
Esta es la realidad del mercado para el desarrollo de aplicaciones de negocio.
Esta tendencia se ira imponiendo cada vez mas.
El grado de libertad que tendrá el desarrollador para la construcción de aplicaciones será cada vez mas limitado. No habrá jefes, no habrá contraladores, habrá software para construir software y la intervención humana será cada vez mas superficial.
¿Como encaja Agile-Scrum en un contexto de proyectos con presupuestos limitados, con tiempos a cumplir estrictos y fuertes penalizaciones ante retrasos y faltas de calidad?
Salud!
Estoy de acuerdo en que cuando se invente la inteligencia artificial nuestros puestos de trabajo correrán peligro. Sin embargo quiero hacer notar que en sectores donde ya hay una alta robotización, como por ejemplo, el de la industria automovilística, no han prescindido de sus empleados. Y eso que el grado de automatización es mayor que en el del desarrollo del software.
Es irónico que el movimiento del agilismo empezara en la industria automovilística, en Toyota, empresa que creo es bastante seria y afronta problemas reales a la hora de hacer negocios. De hecho el agilismo no es más que la adaptación de la forma de trabajar de Toyota a la industria del software.
Sobre como como encaja Scrum en el día a día, pues es difícil de contestar en breve. Simplemente Scrum intenta atajar las malas prácticas que producen esos retrasos y falta de calidad que dices. En organizaciones con Scrum implantado se vigila de forma continua el nivel de calidad y los tiempos de entrega, para optimizarlos una y otra vez. De hecho este es el fin último del Scrum y el agilismo, mejorar de forma continua y sin fin. ¿Cómo hacemos esto?¿Cómo implantamos Scrum?¿Por qué Scrum es eficiente en este sentido? Son preguntas complejas que intentaré aclarar a lo largo de la vida de este blog, pero que evidentemente, me va a costar mucho.
¡ Me alegra de verte por aquí !
Conservar o incluso mejorar la motivación de un equipo es un trabajo continuo.
He tenido muy buena experiencia trabajando en un equipo con un tutor y sábio personal, un jefe de proyecto como counselor y Team Events periodicos con un presupuesto como parte del proyecto.
Así los sin experienca están animados a aprender y mejorar. Incluso los sábios salen aprendiendo.