El principio de Pareto es uno de los pilares fundamentales de Scrum

Scrum y el principio de Pareto

Scrum y el principio de Pareto.

El principio de Pareto

El principio de Pareto, también conocido como la regla del 20 - 80, describe el fenómeno estadístico por el cual, el 20% de la población posee el 80% de las tierras de una región.

Esta regla fue enunciada en 1.896 por el matemático italiano Wilfredo Pareto. Desde entonces se ha aplicado a múltiples áreas de las ciencias, la economía y la organización empresarial.

  • El 20% de tu ropa la usas el 80% de las veces.
  • Con el 20% de tiempo de estudio, consigues el 80% de la calificación.
  • El 20% de tus clientes aportan el 80% de tu facturación.
  • El 20% de tus productos suponen el 80% de tus ventas.

En resumen, con el 20% del esfuerzo, consigues el 80% del rendimiento.

Este principio es, como veremos, muy importante para el desarrollo de sistemas informáticos. Aunque no lo encontrarás en el Manifiesto Agile, es uno de los pilares fundamentales de Scrum.

Bienvenido a una sesión de formación de novanotio.

Porcentaje de éxito en el desarrollo de sistemas informáticos

Ésta es la primera pregunta que hacemos a todos nuestros consultores en su primera sesión de méntoring. ¿Cuál es el porcentaje de éxito en el desarrollo de los sistemas informáticos?

La respuesta la obtenemos de los análisis que año tras año realiza The Standish Group en su informe 'Chaos Report'. Aproximadamente un 20%.

A pesar de todos los esfuerzos del sector para construir nuevas herramientas y desarrollar nuevas metodologías, el 80% de los proyectos tienen importantes problemas o se cancelan.

Es una aplicación más del principio de Pareto. El 20% de los proyectos aportan el 80% del valor. Organizaciones y estados han invertido miles de millones para escapar a esta regla sin conseguirlo.

No es posible tener éxito en los proyectos

La definición tradicional de éxito es: 'Completar el alcance que se ha acordado en la especificación, en el plazo establecido, con el coste presupuestado y con una buena calidad'

La cuarta ley de la gestión de proyectos informáticos nos avisa de que es imposible conseguir el éxito así definido. Alcance, plazo y calidad son tres parámetros que están interrelacionados, de forma que si fijas dos de ellos, el tercero se degrada.

No es posible alcanzar el éxito según la definición tradicional porque fija alcance, plazo y calidad. Obligatoriamente uno de esos parámetros debe degradarse.

El 80% de los proyectos quedan atrapados por la gravedad de la cuarta ley. Los pocos que consiguen el éxito suelen ser proyectos pequeños sin un alcance demasiado preciso.

Scrum no cambia el porcentaje de éxito, cambia la definición de éxito

Scrum no cambia el porcentaje de éxito de los proyectos. La cuarta ley no desaparece solo por dividir el desarrollo en sprints de cuatro semanas.

Scrum cambia la definición de éxito.

Y es que buena parte del software desarrollado nunca se utiliza. En concreto, aplicando la regla de Pareto, el 20% de la funcionalidad se utiliza el 80% de las veces.

Si conseguimos desarrollar ese 20% que más valor aporta, podemos construir casi todo el sistema con una fracción del esfuerzo.

Así que esta es la nueva definición de éxito que Scrum nos proporciona: 'Usar el presupuesto para construir la mayor cantidad posible de funcionalidad, empezando por aquella que se utiliza con más frecuencia y aporta más valor, con una buena calidad'

Ahora si es posible conseguir el éxito y escapar de la cuarta ley, porque en esta definición se fijan plazo y calidad, pero el alcance queda indeterminado.

Conclusión

El desarrollo de software seguirá siendo complejo a pesar de las nuevas herramientas y metodologías. Los proyectos seguirán retrasándose y fracasando, especialmente aquellos más grandes y complejos.

Afortunadamente Pareto nos indica el camino a seguir. ¡Busca junto con tu cliente ese 20% de la funcionalidad que aporta el 80% del valor!


¿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.


Las desconocidas funciones de un Jefe de Proyecto

¿Cuáles son las verdaderas funciones de un Jefe de Proyecto?

Las desconocidas tareas que debe realizar en realidad un Jefe de Proyecto

Dentro de la ingeniería informática hay un importante desconocimiento sobre las funciones del jefe de proyecto.

Se le atribuye la responsabilidad sobre el «resultado del proyecto», pero esta definición abarca la negociación de la propuesta, el diseño de la solución y el control de la ejecución. No es de extrañar que en ocasiones realicen las tareas del Key Account Manager y del Líder Técnico.

Las funciones de un jefe de proyecto las podemos resumir en tres, de menor a mayor importancia:

Control económico.

¿Cuánto vamos a ingresar por el proyecto? ¿Cuánto llevamos gastado? ¿Qué equipo técnico puedo permitirme y por cuánto tiempo?

El control económico parece una cuestión de sumas y restas; ingresos es lo que facturamos, costes lo que gastamos en licencias, servidores y en las nóminas de nuestros consultores.

La mejor receta para optimizar el coste es que todos los miembros del equipo estén en la misma sala y trabajen en exclusiva para el proyecto. Mucho mejor si ya han trabajado juntos anteriormente. De esta manera, la aparición de vínculos emocionales acelera el proceso de desarrollo.

Otro aspecto a tener en cuenta para el control de costes es el tamaño del equipo. La ley de Brooks establece que Plazo x Esfuerzo (en meses hombre) = Constante. Es más eficiente un grupo pequeño y un plazo de desarrollo mayor. El tamaño óptimo de un equipo es de entre 5 y 9 consultores. Por encima de esa cifra tus costes se multiplicarán.

La ley de Brooks. Plazo x Esfuerzo = Constante
La ley de Brooks. Plazo x Esfuerzo = Constante

Control del alcance.

¿Qué funcionalidades vamos a desarrollar? ¿Cuándo lo vamos a hacer? y por encima de todo ¿Cuándo dejamos de trabajar en el proyecto?

El control del alcance es crítico porque las especificaciones son infinitas. Los proyectos informáticos nunca terminan. Para conseguir beneficios, tendremos que finalizar el proyecto cuando todavía quedan muchas actividades por realizar.

Por eso es importante priorizar junto con el cliente las tareas. Las menos importantes podrían no ejecutarse nunca.

Muchos jefes de proyecto, en lugar de priorizar los desarrollos, optan por presionar a sus equipos, exigiéndoles horas extras y plazos imposibles. Es un error de principiantes. La presión destruye los equipos y ralentiza los trabajos.

Gestión de la motivación y las relaciones.

¿Cuál es el estado de ánimo del equipo? ¿Cómo se llevan entre ellos?

La gestión de la motivación y las relaciones es sin duda la función más importante de un jefe de proyecto. Y también la menos conocida.

Después de un macroestudio entre miles de profesionales en USA y Europa, la consultora Gallup determinó que el factor más importante para la productividad es el compromiso de los consultores. Y el 70% de este compromiso es responsabilidad directa de su responsable inmediato. Así que tu capacidad como jefe de proyecto determina el 70% de la productividad de los desarrollos.

Es una responsabilidad abrumadora. Un buen punto para empezar son estas trece técnicas para convertir a tus programadores en un equipo de alto rendimiento.

Quizás también te interese conocer los comportamientos que debes evitar. Los jefes de proyecto tardan de media seis meses en desmotivar a sus nuevos consultores. Esta es la lista de cosas que no debes hacer.

Novanotio Certified

Todos los consultores de novanotio reciben el proceso de mentoring ‘Novanotio Certified’. Esto que has leído es solo una de las sesiones. ¿Habría sido distinta tu carrera profesional si hubieras recibido esta formación?

Te animo a que revises nuestras ofertas y descubras si hay alguna perfecta para ti. Te esperamos para que disfrutes una experiencia novanotio.