¿Cómo construir equipos de alto rendimiento en el mundo de la programación?

13 técnicas para convertir tus programadores en un equipo de alto rendimiento

Cómo transformar un grupo de programadores en un equipo de alto rendimiento

En este artículo vamos a estudiar una de las funciones más importantes de un Jefe de Proyecto. Cómo transformar un grupo de jóvenes ingenieros informáticos en un equipo de alto rendimiento.

Ya os adelantamos que no es una tarea sencilla. Cuando incorporas un grupo de juniors, en pocas semanas tu oficina parece la taberna de Piratas del Caribe. Y eso lastra su productividad.

 

Este es el aspecto de tu oficina dos meses después de incorporar a diez becarios.
Este es el aspecto de tu oficina dos meses después de incorporar a diez becarios.

De Marco, en su ensayo de 1.987 ‘Peopleware’, avisa que existen multitud de formas de destruir equipos de alto rendimiento, pero ninguna técnica garantiza el éxito. Ni siquiera las que 13 os presentamos en esta entrada. No te desanimes si no tienes éxito en tus primeros intentos.

Qué son equipos de alto rendimiento

Antes de intentar construir un equipo de alto rendimiento, es importante saber qué son y por qué son más productivos.

Un equipo de alto rendimiento es un grupo de consultores que trabajan con confianza. Solo eso. No tienen que ser gurús de la programación ni excelentes arquitectos de sistemas. Simplemente tienen que confiar unos en otros.

Confianza y productividad

¿Por qué la confianza incrementa la productividad? Porque cuando hay confianza, puedes tomar riesgos y resolver los problemas de forma creativa. No es lo mismo buscar soluciones que buscar culpables, ¿verdad?

Cuando no existe confianza, nadie se atreve a tomar decisiones y los equipos se ‘esclerotizan’.

Putnam, en su clásico ‘Five Core Metrics’, determina que el ritmo de avance de un proyecto sólo depende del número de buenas ideas que tiene el equipo. El número de horas empleadas es importante para determinar el coste, pero irrelevante para acelerar los desarrollos.

Para incrementar la productividad, tienes que gestionar el talento de tu equipo. Debes conseguir que cada día tengan buenas ideas. Y para eso es necesaria esa confianza que vas a construir.

Cómo identificar equipos de alto rendimiento

Estos son algunos síntomas de que tu equipo comienza a fraguar:

  1. Están auto organizados. No hace falta que distribuyas las nuevas tareas, siempre hay alguien que las asume.
  2. No necesitan presión externa. Cada uno sabe cuándo debe hacer un sobreesfuerzo.
  3. Aparece la Presión Inter Pares (PIP). La exigencia la marcan los compañeros. Tu sólo apartas las trabas burocráticas para que ellos puedan avanzar más rápido.
  4. Sensación de SWAT. Sienten que son capaces de superar al resto del mercado en alguna faceta de su trabajo.
  5. La rotación es inferior a la del entorno y se produce fuera de periodos críticos.
  6. Es divertido ir a trabajar. Te sientes bien los domingos por la tarde.

13 técnicas para construir equipos de alto rendimiento

Vamos con las 13 técnicas que puedes emplear para transformar a tus consultores en un equipo de alto rendimiento. Recuerda, ninguna de ellas garantiza el éxito. Ten paciencia y descubre poco a poco cuáles se adaptan mejor a tu personalidad.

1. Explícales cuál es su misión

Funcional, funcional, funcional. Explícales qué están desarrollando!
Funcional, funcional, funcional. Explícales qué están desarrollando!

No hay nada más descorazonador que programar sin tener claro qué estás haciendo.

Así que dedica todo tu esfuerzo a que los programadores entiendan la especificación. Asegúrate de que tienen acceso a alguien que conoce el problema. Busca la complicidad y el apoyo del cliente o del business analyst. Si usas la metodología SCRUM, asegúrate de que el cliente aporte un  Product Owner al squad.

Y avisa a tus programadores de que la especificación cambiará a lo largo del proyecto. Esto les afectará porque, con frecuencia, su esfuerzo de varias semanas terminará en el cubo de la basura.

Tienes que explicarles que esos constantes cambios de funcionalidad son la esencia misma del software. Si fuera posible hacer una especificación cerrada, el desarrollo se haría en Asia y los consultores europeos estarían en paro.

En la literatura sobre ingeniería del software, se insiste en que, con frecuencia, la especificación se construye en esas reuniones informales delante de la máquina del café. Una buena idea es fomentar estos ‘momentos de café’ y asegurarse de que participa todo el equipo.

2. Asegúrate de que disponen de los medios materiales adecuados

Comprueba que tus programadores disponen de los medios adecuados para hacer su trabajo. Es desesperante esperar quince minutos por una compilación. ‘Haz lo que puedas con lo que tienes’ no fomenta el compromiso.

Un chip de memoria cuesta menos de 100 € y obra milagros en la motivación de un consultor.

Un simple chip de memoria obra milagros en la motivación de los consultores.
Un simple chip de memoria obra milagros en la motivación de los consultores.

3. Comprueba que todos los días tienen ocasión de hacer las cosas que les gustan

Este es un problema endémico en nuestro sector.

En muchas ocasiones, los consultores no están haciendo aquello para lo que se los contrató, sino que están usando una tecnología obsoleta para resolver un problema urgente del cliente.

Otras veces tienen la sensación de que sus entornos se están quedando desfasados y hay tecnologías más punteras que deberían estar aprendiendo.

En ambos casos sienten que están ‘perdiendo su tiempo’ o ‘perdiendo oportunidades’. Empiezan a prestar atención a las ofertas de trabajo que reciben y de ahí a su renuncia solo hay unos días.

Tienes que saber si tus consultores están haciendo lo que les gusta, y una buena forma de averiguarlo es preguntarles. Reúnete con cada uno de ellos varias veces al año. Antes de que pidan la baja voluntaria, cambiales de proyecto o reserva una parte de su jornada para que experimenten con nuevas tecnologías.

4. Dales feedback positivo

El feedback positivo es LA HERRAMIENTA para mejorar la motivación. Y además es gratis. Solo tienes que decirles lo que han hecho bien, seguro que hacen cosas increíbles todos los días. Incluso puedes montar una pequeña celebración para dar más énfasis a algún logro del equipo.

Muchos jefes de proyecto pasan de puntillas por los éxitos y solo dan feedback cuando algo sale mal. Es un error de novato. El feedback negativo solo puedes usarlo con los equipos de pruebas de sistemas. ‘Este error se os ha escapado’ es todo el aliciente que necesitan para redoblar sus esfuerzos destructivos.

Las técnicas clásicas del palo y la zanahoria, como el bonus por objetivos, no funcionan en los entornos tecnológicos. Conseguirás que trabajen más horas, pero no que tengan mejores ideas.

El feedback positivo es una herramienta muy poderosa. Seguro que todos los días tus programadores hacen cosas increíbles.
El feedback positivo es una herramienta muy poderosa. Seguro que todos los días tus programadores hacen cosas increíbles.

5. Preocúpate por su situación personal

Recuerda que tus consultores, por encima de todo, son personas.

El trabajo no es solo una forma de obtener ingresos, cubre también muchas necesidades emocionales. En el ámbito laboral muchos encuentran su familia. sus amigos y su tribu.

Es importante que conozcas la situación de cada uno de ellos y les preguntes con frecuencia por sus parejas, sus hijos  o sus seres queridos. Ofréceles consejo si la situación lo requiere, o consuelo si es lo único que puedes darles en ese momento.

Tus programadores no son robots, son personas. Atiende sus necesidades emocionales.
Tus programadores no son robots, son personas. Atiende sus necesidades emocionales.

6. Anímales a formarse

El ser humano es curioso por naturaleza y tus programadores lo son aún más.

Una buena forma de mejorar su motivación es mediante el aprendizaje. La formación les da seguridad e incrementa su creatividad.

Pídeles que realicen cursos o consigan certificaciones. O reserva una parte de su jornada para que prueben y experimenten con nuevos entornos y aplicaciones.

7. Ten en cuenta sus opiniones

Otra de nuestras necesidades emocionales es influir en las personas que nos rodean.

Así que puedes mejorar el compromiso y la creatividad de tu equipo escuchando sus sugerencias y probando algunas de ellas. O puedes darles un poco de tiempo libre para experimentar y crear prototipos, seguro que algunos se transformarán en valiosas herramientas.

SCRUM utiliza esta idea del empoderamiento y prescinde de los líderes técnicos. Las decisiones de diseño y construcción del sistema las toman los programadores del squad.

Ten cuidado con los procedimientos empresariales, son una forma de decirles ‘tu opinión no cuenta’. Una de tus principales misiones como Jefe de Proyecto es ayudar a tu equipo a superar las trabas burocráticas.

La burocracia es una de las formas más eficaces de destruir equipos de alto rendimiento. Protege a tu equipo de los procedimientos empresariales.
La burocracia es una de las formas más eficaces de destruir equipos de alto rendimiento. Protege a tu equipo de los procedimientos empresariales.

8. Explícales por qué su trabajo es importante para la sociedad

El ser humano es más feliz cuando tiene una misión que dé sentido a su existencia. Esforzarse sin tener un propósito en la vida es como programar sin tener clara la especificación funcional.

No corren buenos tiempos para encontrar una misión vital, toda vez que la religión y la ideología se tambalean en sus pedestales. No es de extrañar que ante este vacío, muchos confundan los fines con los medios y se lancen en busca de la riqueza o la fama.

Aprovecha a tu favor este vacío existencial para mejorar el compromiso de tus consultores. Explícales cómo los servicios de la empresa no son solo un proceso para generar beneficios sino que contribuyen a construir un mundo mejor.

Por usar un ejemplo sencillo, si no hubiera servicios de ciberseguridad, nuestra sociedad colapsaría en 24 horas. Pensad en el impacto para cientos de familias del ataque informático al SEPE. Multiplicadlo por varios millones.

9. Vigila los ‘garbanzos negros

El consultor con el rendimiento más bajo fija el estándar de excelencia de todos los demás.

Una de las labores más complejas de un líder es detectar a aquellos cuyo rendimiento es inferior al del resto. Y es difícil porque no existen métricas, cada desarrollo es único y diferente. Así que sólo puedes tener sospechas de que alguno de tus consultores ha bajado los brazos.

Reúnete periódicamente con cada uno de ellos, posiblemente no quieran criticar abiertamente a un compañero, pero leyendo entre líneas  encontrarás la información que necesitas.

Uno de los momentos más peligrosos para un equipo de alto rendimiento es la incorporación de un nuevo miembro. ¿Estará a la altura de los demás? ¿Será capaz de construir buenas relaciones con el resto? Si la respuesta es no, tienes un grave problema.

El éxito es un potente catalizador. ¿Quién no quiere estar en un equipo que consigue cosas increíbles? Celebrar los éxitos es una buena forma de motivar a esos ingenieros que han llegado a tu equipo rebotados de otros grupos.

Si nada de lo anterior funciona, debes apartar a esos garbanzos negros del equipo.

10. Fomenta las relaciones de amistad

Como hemos visto en puntos anteriores, el trabajo cubre necesidades emocionales además de las económicas.

Se ha demostrado que la productividad de los programadores crece si en el equipo tienen un buen amigo. Así que fomenta las relaciones de amistad; busca ‘momentos de café’ dentro de la jornada laboral y asegúrate de que participe todo el equipo, invítales a comer a un sitio nuevo, incluso proponles actividades lúdicas como el pádel o el MTB.

O también puedes reservar un poco de su tiempo para que prueben nuevos entornos con algún compañero de su elección.

Las relaciones de amistad son una buena forma de mejorar la productividad, la creatividad y el compromiso. Foméntalas en tu equipo de trabajo.
Las relaciones de amistad son una buena forma de mejorar la productividad, la creatividad y el compromiso. Foméntalas en tu equipo de trabajo.

11. Haz reuniones individuales de seguimiento varias veces al año

Esta es una idea que ya ha aparecido en varios de los puntos anteriores. Con estas reuniones cubres buena parte de tus funciones como jefe de proyecto:

  • 3. Puedes averiguar si están haciendo lo que les gusta.
  • 5. Te interesas por su situación personal
  • 6. Puedes animarles a formarse.
  • 7. Es una forma de conocer y tener en cuenta sus opiniones
  • 8. Puedes explicarles por qué su trabajo es importante para la sociedad.
  • 9. Puedes descubrir si hay algún ‘garbanzo negro‘ en el equipo.

Pero además de todo eso, tus ingenieros necesitan saber cómo están creciendo.

Dales feedback sobre su crecimiento. Es una poderosa herramienta para construir su compromiso. Cuéntales qué cosas te gustan de su trabajo y explícales hacia donde esperas que avancen.

Las sesiones individuales de seguimiento no tienen coste y no tienen precio.

12. Celebra los éxitos

Otra idea que ha aparecido en varios de los puntos anteriores:

  • 1. Estas reuniones informales ayudan a construir la especificación.
  • 4. Son una forma de dar reconocimiento y feedback positivo.
  • 8. Es un buen momento para recordarles por qué su trabajo es importante para la sociedad.
  • 9. Es una forma de sacar de su apatía a los ‘garbanzos negros
  • 10. Fomentas las relaciones de amistad

La parte más complicada de celebrar los éxitos es, precisamente, encontrar un éxito. Recuerda que el porcentaje de proyectos que está en una situación delicada es del 80%. Tendrás que decidir que algo de lo que se ha conseguido es extraordinario.

La ceremonia de celebración es muy sencilla, solo tienes que llevar a la oficina algo ‘especial’ como manolitos o palmeritas de Morata y compartirlo con todo tu equipo en algún momento de la jornada laboral. Una mínima inversión económica pero un gran trabajo de liderazgo.

Una pequeña celebración, un gran trabajo de liderazgo.
Una pequeña celebración, un gran trabajo de liderazgo.

13. Reserva parte de su tiempo para que hagan prototipos o prueben nuevas tecnologías

Otra idea muy interesante que salpica todo el texto. Google lo hace. Amazon lo hace. Los motivos están claros:

  • 3. Te aseguras de que parte de su jornada la dediquen a las cosas que realmente les gustan.
  • 6. Les animas a formarse y a incrementar sus conocimientos.
  • 7. Tienes en cuenta sus opiniones.
  • 10. Fomenta las relaciones de amistad.
  • 1X. Algunas de esas pruebas de concepto acabarán siendo valiosas herramientas o nuevas fuentes de ingresos.

Puede que te preguntes: ‘si ya vamos fuera de plazo, ¿cómo emplear parte de la jornada en cosas ajenas al proyecto?’.

No te preocupes por el tiempo invertido en este aprendizaje. La mejora de la motivación, el compromiso y la productividad pagarán con creces estas horas de crecimiento personal.

¿Y el dinero?

El único Dios verdadero (Joaquín Sabina, ‘Como te digo una co, te digo la o’).

¿Qué papel juega el dinero en la motivación de los consultores y en la construcción de equipos de alto rendimiento?

El dinero es un problema complejo. Cubre necesidades básicas, pero también es una forma de rankear a los miembros de un equipo. Mas ganas, mas vales.

Con frecuencia los programadores más antiguos te pedirán aumentos de sueldo porque los junior a los que están formando ganan más que ellos. Es otro problema endémico de nuestro sector, sobre todo en épocas de fuerte crecimiento económico.

Pero las mas de las veces, cuando tus consultores te piden un incremento salarial, es porque hay problemas en otras facetas de su trabajo. Y el dinero no compensa hacer cosas que no te gustan, tener un portátil antiguo o que tus compañeros estén desmotivados.

Cuando el dinero no es el problema, el dinero no es la solución.

Bibliografía

Este artículo está basado en los estudios de Gallup recogidos en ’12, the elements of great managing’. Hemos adaptado las conclusiones al mundo de la programación y enriquecido el contenido con nuestra experiencia de 25 años en el sector.

También hemos incorporado algunas referencias de los estudios de Putnam y DeMarco con sus respectivos enlaces.

Es una buena idea leer todos estos libros si quieres crecer como Jefe de Proyecto.


El líder técnico, un rol que desaparece en la era SCRUM

Funciones del líder técnico en la era SCRUM

El líder técnico en la era SCRUM. Las funciones de un rol condenado a desaparecer

El rol de líder técnico es la carrera profesional más deseada por los jóvenes ingenieros informáticos. En este artículo vamos a estudiar su historia, sus vías de crecimiento profesional y cómo se transforman sus funciones con la llegada de SCRUM.

Un poco de historia

El líder técnico es el primer rol de liderazgo que surge en las empresas tecnológicas, junto con el de analista/programador. En los albores de la informática, era el responsable del diseño y la construcción de los sistemas.

Su misión original era extensa; entender las necesidades del cliente, hacer un primer diseño de alto nivel, preparar el diseño de bajo nivel, controlar los costes, determinar el alcance del sistema y, por supuesto, motivar y dirigir al equipo técnico.

Nuestro líder técnico terminó apoyándose en su ayudante, el gestor del proyecto. Un personaje gris al que delegó las aburridas tareas de control económico, interlocución con el cliente y motivación del equipo. Durante los años 80 del pasado siglo, el gestor del proyecto arrebató progresivamente el protagonismo y el reconocimiento al líder técnico y se transformó en el Jefe de Proyecto.

Funciones del líder técnico

El líder técnico mantiene dos de sus funciones originales, el diseño de bajo nivel y la supervisión del trabajo técnico.

El diseño de bajo nivel es su actividad preferida. Recibe del Business Analyst una especificación de alto nivel y la transforma en un conjunto de actividades más simples y detalladas que asigna a los diferentes equipos técnicos.

Brooks, en su clásico ‘The mythical man month’, nos advierte no existe un lenguaje de alta precisión para comunicar esas especificaciones de bajo nivel. Por eso es tan importante la segunda de sus funciones, el seguimiento de la actividad del equipo técnico. Sin esta supervisión, los analistas y programadores desarrollarían funciones diferentes a las especificadas.

El seguimiento del equipo técnico puede ocupar hasta el ochenta por ciento de su tiempo.

¿Cómo se llega a líder técnico?

Para ser un buen líder técnico necesitas un profundo conocimiento funcional del sistema y de su arquitectura, es decir, qué problema resuelve y cómo están construidos sus módulos. La única forma de adquirir estos conocimientos es participando en la construcción, por lo que el Líder Técnico suele ser uno de los programadores más veteranos.

A este rol se accede con paciencia. Como la permanencia media de un consultor en un proyecto es de 24 meses, en tres o cuatro años serás analista/programador y en otros tres o cuatro probablemente serás el líder técnico.

Crecimiento profesional del líder técnico

Ya eres líder técnico y tu equipo ha desarrollado con éxito varios proyectos. ¿Cuál es el siguiente paso de tu carrera profesional?

La evolución natural es hacia CIO/CTO, el responsable de los sistemas informáticos de la empresa, por tus conocimientos funcionales y tecnológicos.

Si has estado desarrollando un producto, lo mas probable es que acabes siendo el Product Manager. Tu misión será definir el roadmap de los futuros desarrollos.

Siempre puedes crecer hacia posiciones de Business Analyst, por tus conocimiento de las necesidades de los clientes.

Por último puedes crecer hacia Jefe de Proyecto, pero entonces toda tu experiencia anterior será inútil. Necesitarás desarrollar habilidades de motivación y negociación.

La desaparición del Líder Técnico en la era Scrum

La transición a las metodologías ágiles es un proceso complejo.

No basta con agrupar los equipos técnicos en squads y desarrollar en sprints de tres semanas. Es necesario que el cliente se involucre y participe de forma activa en el desarrollo, aportando un product owner al squad.

Y sobre todo es necesario que el cliente entienda que el alcance de los trabajos está abierto. La gran aportación de Scrum es cambiar la definición de éxito de un proyecto. ‘Desarrollar la mejor funcionalidad posible dentro de un plazo y con un presupuesto’.

En este artículo analizamos los errores más frecuentes que cometen las organizaciones al implementar la metodología SCRUM.

Con la llegada de las metodologías ágiles, desaparece paulatinamente la figura del Líder Técnico.

No pueden ser el Product Owner, porque sólo el cliente conoce el retorno de inversión de cada desarrollo. Y los squads no necesitan un líder técnico, son los programadores los que deciden la arquitectura de sus módulos.

Con la llegada de SCRUM, el rol de líder técnico está llamado a desaparecer.


Los postit, quizás la herramienta más conocida de Scrum

Factores del éxito en los proyectos informáticos

Factores del éxito en los proyectos informáticos

¿Cuáles son los principales factores que influyen en el éxito en los proyectos informáticos?

La metodología por si misma no basta para explicar el éxito o el fracaso de los mismos. Hemos participado en muchos proyectos exitosos que no seguían ninguna metodología formal. También en proyectos con fuertes retrasos y  sobrecostes gestionados con diferentes metodologías; CMMI, Waterfall, ITIL y también Scrum.

¿Cuáles son entonces los principales factores que influyen en el éxito de un proyecto informático?

Desde nuestra experiencia, y por orden de importancia:

  1. Experiencia previa en el proyecto. Los proyectos de mantenimiento evolutivo tienen una tasa de éxito muy superior, porque tanto el equipo de desarrollo como el de gestión conocen los requisitos funcionales.
  2. Tamaño del proyecto. Los proyectos pequeños son más exitosos porque pueden abordarse con un equipo reducido. Esto facilita la coordinación de los participantes y acelera la construcción de los requisitos funcionales.
  3. Liderazgo. Si el Jefe de Proyecto domina los fundamentos de la gestión de proyectos, no sólo mejora la productividad. Puede cambiar la precepción de éxito o fracaso del mismo.
  4. Metodología. Los proyectos gestionados con SCRUM tienden a ser más exitosos. Sobre todo porque SCRUM, como los buenos líderes, cambia la definición de éxito de un proyecto.

La experiencia previa y el tamaño del proyecto vienen impuestos por las circunstancias y no podemos gestionarlos.

Sin embargo, liderazgo y metodología son factores clave para el éxito de los proyectos informáticos que si están dentro de nuestra esfera de influencia. Por eso los estudiamos en nuestro méntoring Novanotio Certified.

Liderazgo

Los cuatro principios básicos de la gestión de proyectos informáticos se condensan en cuatro sencillas frases. Son todo lo que necesitas conocer para liderar equipos:

1ª ley. Las especificaciones son inciertas, imprecisas e infinitas.

2ª ley. One project, one team, one site.

3ª ley. Presión x Talento = Constante.

4ª ley. Alcance, Plazo y Calidad. Si fijas dos de ellas, la tercera se degrada porque es la variable de ajuste

Estas 35 palabras son el credo de todo buen Jefe de Proyecto. En este artículo explicamos con más detalle su contenido y cómo utilizarlas.

Metodología

La metodología elegida para gestionar el proyecto también es importante.

Últimamente cobran especial relevancia las metodologías ágiles, con SCRUM a la cabeza. Hay cientos de libros y artículos sobre SCRUM que seguramente ya habrás leído. Solo añadiremos algunas reflexiones que consideramos importantes:

Las empresas cometen una y otra vez los mismos errores al implantar Scrum. Esta lectura de tres minutos evitará que caigas en las mismas trampas para novatos.

Es importante que conozcas los fundamentos de Scrum para implantarlo con éxito en tu organización. Si no entiendes estos fundamentos, vas a implantar Scrum como si fuera una religión. Y tus proyectos no mejorarán.

¡Mucha suerte en la gestión de tus proyectos!