Recientemente, mi gerente realmente ha estado presionando para usar la velocidad como objetivo y medida de productividad. Actualmente estamos trabajando a una velocidad promedio de 50 puntos de historia. Mi gerente quiere que lo aumentemos en un 40% a 70 puntos de historia (sin aumento en los miembros del equipo). Si no logramos este aumento, quiere que entreguemos un desglose completo explicando por qué.
Toda la idea de medir el rendimiento del equipo por velocidad y usarlo como un objetivo me parece erróneo, pero me resulta difícil explicar por qué. ¿Alguna ayuda? ¿Por qué no es esta la forma correcta de medir e incentivar la productividad?
Respuestas:
Bueno, es perfectamente simple aumentar la velocidad en un 40%: solo agregue un 40% más de puntos a todas sus estimaciones y haga la misma cantidad de trabajo.
Dado que esto es así, debería ser evidente por qué usar la velocidad como un objetivo es incorrecto, solo alienta las estimaciones infladas.
Una respuesta menos simplista es que su estimación ya asume que va tan rápido como puede mientras hace todo correctamente. La única forma de aumentar realmente la productividad en un 40% es trabajar horas extras o no hacer todo correctamente. Ambas cosas aceleran las cosas a corto plazo, pero ralentizan las cosas a largo plazo. Y el largo plazo en este caso no es muy largo, un mes en el exterior. La estrategia óptima a largo plazo es nunca ir más rápido que su ritmo sostenible.
Peopleware habla elocuentemente sobre los problemas de tratar de forzar a los programadores a una mayor productividad, y es un clásico a menudo citado. Pero, en general, no será fácil cambiar la opinión de un gerente que está siguiendo el camino del suyo. Su proyecto bien puede estar en problemas, esto es ciertamente una bandera roja.
fuente
Como los comentarios han señalado, la solicitud obviamente es incorrecta en la forma en que se ha formulado. Pero no está realmente equivocado al querer mejorar constantemente la productividad. Como regla, eso es por lo que los gerentes se esfuerzan (y son evaluados).
Dicho esto, los gerentes siempre buscan mejorar el rendimiento, y Scrum and Agile se trata de ser adaptable. Si bien la velocidad es una medida de su ritmo sostenible actual, no debe sentarse en sus laureles. Scrum tiene un lugar para evaluar y cambiar lo que funciona y lo que no funciona en su proceso: la retrospectiva. Si aprovecha eso y ajusta su proceso, la productividad (y posiblemente la velocidad) debería aumentar.
Entonces, ¿estás buscando (en tus retrospectivas) formas de ser más productivo como equipo? ¿Hay algo en tus sprints que consuma regularmente una cantidad desproporcionada de esfuerzo? ¿Se puede abordar? Probablemente no te dará un aumento del 40%, pero 5-10% es un comienzo, ¿no? Cada sprint debe buscar cuellos de botella y abordarlos. Eventualmente, puede acercarse a la meta que él ha establecido para usted.
fuente
TL; DR
La velocidad es muy útil para estimar horarios o generar valores de planificación, y también puede ser un control detectivesco significativo para evaluar los cuellos de botella del proceso o los cambios en la capacidad del equipo. Sin embargo, no es una medida válida de productividad.
Cuando se confunde velocidad con objetivos de gestión
"Velocidad" es un rango que expresa la capacidad promedio de un equipo durante un período histórico. Es un análisis estadístico del rendimiento pasado, que luego se puede utilizar para proyectar estimaciones probabilísticas de la capacidad de carga de trabajo o tiempos de ciclo futuros. Esto está en marcado contraste con un "objetivo de programación", que es un objetivo administrativo que establece una línea de tiempo u objetivo para fines de planificación.
Los gerentes de proyectos ágiles con experiencia saben que el uso adecuado de la velocidad es determinar si un equipo tiene la capacidad sostenible de cumplir con los objetivos de programación definidos por la administración. A veces la respuesta es sí, y todos están felices. A veces la respuesta es no, en cuyo punto el triángulo de hierro obliga a las decisiones comerciales sobre el alcance, el costo, el tiempo y la calidad.
Evalúa tus opciones políticas
Suponiendo que sus prácticas de estimación son sólidas y que su velocidad es razonablemente estable, su gerente no se alegrará de ajustar la escala de estimación o establecer objetivos de gestión que no se basen en el rendimiento histórico. Como señala correctamente, esto es fundamentalmente un problema de capacidad .
El límite de capacidad puede estar relacionado con la cantidad de personas en su equipo, o puede ser una limitación de sus procesos organizacionales. Por supuesto, agregar más personas tampoco siempre agrega la capacidad real del proyecto; vea la Ley de Brooks para más información sobre este error común.
El problema que enfrenta es político. Por el tono de su publicación, parece que su gerente quiere ver un aumento en la productividad sin realizar ningún cambio real en la capacidad subyacente del equipo. Por lo tanto, las soluciones también son políticas y en gran medida de naturaleza educativa.
Si usted es una tienda Scrum, pídale a su Scrum Master que aborde este problema a través de los canales marco apropiados. La preparación del trabajo atrasado y las retrospectivas de Sprint son a menudo las oportunidades ideales de inspección y adaptación para este problema en particular.
Si no es una tienda Scrum, debe decidir cuál es la forma correcta de abordar sus inquietudes dentro de su organización. Si está en buenos términos con su gerente, incluso podría prestarle una copia de Agile Estimating and Planning para que los dos discutan durante el almuerzo.
Si todo lo demás falla, prepárate para una marcha de la muerte repasando tu currículum y haciendo tu mejor esfuerzo profesional hasta que el proyecto explote. El 68% de los proyectos de TI fracasan ; a menos que los objetivos de gestión estén sólidamente basados en la capacidad organizativa, el suyo probablemente sea uno de ellos.
fuente
¿No entiendo qué papel tiene su gerente en el equipo Scrum? ¿Es él un entrenador? ¿Es dueño de un producto?
Si está dentro del equipo como un entrenador o tal (trabaja en una tarea de desarrollo), puede preguntarle por qué subestima su propia productividad, porque parece que ese no era el caso para otros miembros del equipo. Si cree que puede asumir personalmente 30 puntos de historia más en cada iteración, permítale mostrarlo.
Más probable: él está fuera del equipo, ¿tal vez el dueño del producto? Si es así, debería entender hacer una solicitud tan estúpida que simplemente detuvo la agilidad.
Una regla básica es que el propietario del producto establece el objetivo mientras que el equipo establece lo que se puede hacer en una iteración. No hacerlo conduce al círculo de hierro clásico y bien conocido: recursos, velocidad, características. ¡Elige dos! No puede elegir tres de ellos a la vez (y recuerde: la calidad no es una variable de ajuste, tratar de cortar las esquinas a través de la baja calidad empeorará las cosas).
Si no quiere cambiar el objetivo actual, ¿quizás se pueda alcanzar un aumento del 40% en la productividad reclutando más personas para el equipo? ¿Tal vez invertir en algún entrenamiento avanzado para algunos miembros del equipo? Los equipos también pueden ganar velocidad con el tiempo a través de la mejora continua, pero ciertamente no por decisión arbitraria.
Intentar cambiar la velocidad de un equipo es como tratar de cambiar el tamaño de una habitación. Se puede hacer, pero básicamente necesitas cambiar la habitación.
¿No tienes algún Scrum Master, o alguna otra gente con conocimiento básico de Scrum que pueda explicarle eso?
fuente
En este caso, el gerente ha tomado la dirección equivocada después de recibir una estimación honesta y fiel del equipo. Se supone que el gerente debe dirigirse a la parte interesada y hacerles saber que sus requisitos no se pueden completar en el tiempo solicitado. El gerente / analista debe priorizar cuáles de las características DEBEN incluirse y las demás que pueden esperar (aunque solo sea un par de semanas). Si la parte interesada no es razonable, entonces podría requerir la participación de gerentes superiores, lo que generalmente puede ser desafiante y requerir otro conjunto de discusiones.
Si estuviera en su lugar, se me ocurriría un caso detallado de por qué el proyecto TOMARÁ tanto tiempo como se estimó. También trate de identificar artículos de bajo rendimiento. Encuentre los elementos que no agreguen mucho valor y requieran esfuerzos de programación sustanciales y haga un caso para eliminarlos del sprint. También proponga un enfoque iterativo que ofrezca "X" en la fecha "Y" y asegúrese de que sea factible, luego proponga una iteración de seguimiento que les permita obtener los elementos restantes.
Básicamente, alguien necesita decirle a las partes interesadas qué pueden esperar recibir antes de la fecha límite y que incluye la mayoría de sus requisitos. y que en la siguiente versión tendrán los elementos restantes. Si el cliente no es razonable, entonces la alta gerencia debe involucrarse, el gerente debe poder hacer que esto suceda.
Sin embargo, si el cliente se prometió en exceso y nadie ha hablado hasta ahora, será una batalla cuesta arriba. Desafortunadamente, esta no es una situación poco común.
fuente
Parece que te enfrentas a dos problemas.
La parte de medir la velocidad que le molesta es probablemente que la medida es el costo . Lo que realmente quieres mejorar es el valor . Desafortunadamente, medir el valor del software es notoriamente difícil y subjetivo. Aún así, incluso una métrica imperfecta y subjetiva puede ser útil. Podría ser que el problema real no sea que su equipo necesita escribir más código, sino que las historias deben ser más valiosas.
El otro problema es que, según su cuenta, su gerente esperaba un aumento del 40% en la productividad. No se indicó en su pregunta el contexto de esta solicitud. Podría ser un buen carácter si desea un deseo para que su equipo mejore. O podría ser una indicación no tan sutil de que su gerente cree que su equipo tiene un bajo rendimiento.
editar: según su comentario, la situación se ve mal. Parece que su empresa está sentando las bases para despedirlo a usted y a su equipo (tal vez su gerente también). Te sugiero que busques otro trabajo.
fuente
Despidelo. Es decir, vaya por encima de su cabeza y explique que ha perdido toda la confianza de su equipo, y explique que no tiene valor para el negocio. Explique que los gerentes con este nivel de incompetencia son mucho más fáciles de reemplazar que el equipo a continuación.
No hay una buena razón para soportar un administrador así, pero eso no debería significar automáticamente que los desarrolladores deberían renunciar. No hay necesariamente algo malo con el negocio, solo con este individuo. Arregla ese problema.
Y para evitar cualquier silencio de la alta gerencia, deje en claro que esto no es un error perdonable. Indica que el gerente responsable no comprende el equipo que está administrando. Eso no se presta a la fijación, ni es necesario hacerlo en el mercado laboral actual. Los gerentes son eminentemente reemplazables al igual que los entrenadores deportivos. Los propietarios no despiden equipos.
Ahora, esto podría parecer una estrategia que puede ser contraproducente. Pero considere: si la alta gerencia se pone del lado de su gerente, independientemente de eso, ya estaría en una posición perdedora de todos modos. Entonces, si solo considera las situaciones en las que aún no está en esa posición perdedora, el resultado probablemente será mucho más positivo. El riesgo real es que la alta gerencia simplemente despida a todo el equipo, incluido el gerente. Solo usted puede estimar ese riesgo. Al parecer, su producción es deseada, de lo contrario no pedirían más, pero ¿a qué precio?
fuente
Mi experiencia es que ha sido muy, muy difícil aumentar la velocidad real de un equipo, dado que ni el equipo, el dominio del problema o la pila de tecnología cambian.
Donde pude lograr aumentos, ha sido una cuestión de:
limpieza de la deuda técnica; asegurándose de que todo esté ejecutando la versión correcta (¡no necesariamente la última!), que el código esté bien factorizado y que no haya redundancia en el sistema (código duplicado, código no utilizado, etc.)
mejorar las prácticas; emparejamiento siempre que sea posible (sí, he descubierto que aumenta la velocidad), tomarse el tiempo para refactorizar agresivamente (¡lo mismo!) y ser despiadado con respecto al alcance y el enfoque
encontrar y / o comprar las mejores herramientas para el trabajo (por ejemplo, ReSharper para .NET vale su peso en oro, desarrollo de Airbrake y Splunk para Ruby, etc.)
Estoy de acuerdo con otros aquí que dicen que su gerente que solicita un aumento arbitrario de la velocidad es una señal de alerta. Estaría buscando otro trabajo como una alta prioridad.
fuente
Su gerente le pide (o le dice) a su equipo que trabaje horas extra. Si bien eliminar los cuellos de botella y aumentar la eficiencia puede mejorar un poco su velocidad, la única forma de obtener ese aumento (40%) es trabajando más horas, ya que necesita acumular más unidades de trabajo en ese período de tiempo.
Tomemos un escenario.
Para una interacción de dos semanas, digamos 10 días. La utopía sería de 8 horas al día, con un punto de la historia abstraído a un día de trabajo. Entonces, desde la cima, su velcoity sería 8. Pero, en realidad, la gente probablemente recibe 6 buenas horas al día con correo electrónico, reuniones, descansos en el baño, etc. Así que ahora tiene un costo de 6 por desarrollador. Entonces su línea de base es 6. Digamos que quiere que las personas trabajen horas extras, ahora allí a las 10 horas al día. Entonces, eso sería 10 puntos de velocidad por desarrollador.
Su velocidad siempre fluctuará, tal vez fue baja porque tuvo que lidiar con muchos errores durante esa iteración, tal vez faltaron requisitos, tal vez alguien se enfermó durante unos días. Tal vez fue alto porque el trabajo fue sobreestimado o su equipo invirtió horas adicionales.
Pero si estás en un estable 50, realmente para llegar a 70 requerirá horas extra.
fuente
El problema con la velocidad es que es una variable dependiente, una salida medida de su proceso de desarrollo. Exigir aumentar la velocidad en un 40% es como tratar de llegar al trabajo antes gritando a los autos que vayan más rápido. La velocidad aumenta al alimentar más combustible y aire al motor o al obtener un automóvil más rápido, además de encontrar una ruta con menos tráfico.
Trabajar más horas no aumenta la velocidad si la mide correctamente, por ejemplo, en puntos característicos por hora de desarrollador. Solo funciona si mide puntos por día y luego redefine lo que es un "día" en la mitad de la medición. Esto proporciona solo la ilusión de velocidad.
Un aumento en la velocidad requiere mejorar las variables independientes en el proceso de desarrollo; computadoras y compiladores más rápidos, un sistema de construcción más eficiente, un mejor proceso de diseño, desarrolladores más capaces, un mejor espacio de trabajo, una motivación súper inteligente. Una mejora del 40% requeriría cambios muy significativos.
Pregunte si su gerente consideraría la ubicación conjunta de su equipo en oficinas cerradas alrededor de una sala de trabajo común, la compra del hardware de desarrollo completamente nuevo del equipo o la contratación de un par de desarrolladores realmente senior para guiar al equipo si eso le daría su 40%. Si no hay recursos disponibles para mejorar las entradas a su proceso de desarrollo, eso prácticamente descarta un interés sincero en mejorar. Esto deja a su gerente en ingeniería inversa para descubrir qué es lo que realmente lo motiva, que sería el tema de otro tema.
fuente
Bueno, estoy un poco sorprendido de que las otras respuestas tomen en serio la solicitud del jefe. Alguien que exige un aumento del 40% en la productividad no sabe lo primero sobre el desarrollo de software.
Todavía disfruto leyendo a Phil Factor sobre este tema:
El consejo de no volverse "triste y amargado" es lo mejor que puede obtener. No luches contra un jefe técnicamente incompetente por cuestiones técnicas. Simplemente lo verá como un ataque personal.
fuente
Su gerente ha entendido mal el uso de la velocidad. No es una métrica y no es un objetivo. Su propósito es la calibración de la carga de trabajo del equipo por sprint.
Si lo piensas, tu velocidad emerge de una mejor suposición, que vuelves a medir después de cada sprint. Por lo general, a medida que pasa el tiempo, debería volverse algo estable. Pero eso no cambia el hecho de que es un subproducto de lo que su equipo está haciendo realmente: crear valor para sus clientes.
La razón por la que está mal usarlo como un objetivo y / o una métrica es porque eso lo convertiría en una métrica de vanidad. Se vería bien en papel, pero no haría absolutamente nada para reflejar si sus productos satisfacen o no las necesidades de sus clientes. Y eso es lo más importante (espero).
fuente
En cuanto a mi experiencia y yendo directo al grano.
Primero, podría inflar la estimación, pero eso no significa que esté haciendo más.
Segundo (premisa: sin inflar, solo enfocándose en la velocidad del equipo),
Intenta encontrar las habilidades dentro de tu equipo. ¿Están trabajando en lo que son mejores? ¿Necesita un arquitecto de sistemas para tomar decisiones difíciles con respecto a la construcción de la aplicación y cosas complejas? ¿Cómo está gastando el equipo sus esfuerzos? ¿Pasan tiempo investigando soluciones para sus problemas, refactorizando, tomando decisiones comerciales o qué?
¿Son cómodos, enfocados y estimados? ¿Qué sigue para ellos?
Esto no es "estoy sobre los límites" ... es más como una pregunta para todo el equipo "¿Estamos en los límites?" y "¿Cómo podemos empujar los límites?" ...
Tengo equipos líderes de alto rendimiento (para la primera construcción y / o migraciones) ... la motivación del equipo es la clave del éxito ... y planificar cómo sería la base de la aplicación es esencial. A veces, yo o un compañero de equipo tomamos el papel de Arquitecto de Sistemas y decidimos cómo y dónde debe ir la "cosa".
A veces, cuando veo que mis compañeros de té están perdiendo eficiencia, trato de romper e invitarlos a tomar una cerveza o algo que les guste. Esto resuelve cualquier conflicto y al día siguiente vuelven a enfocarse.
DE VENTA...
Si explicar las razones por las que no puede aumentar la velocidad es difícil, use el ROI.
Scrum se centra en lo que es más importante para el cliente. Teóricamente las tareas más rentables.
Si sus problemas están relacionados con la venta del esfuerzo de desarrollo, ¿qué cree que vende cuál es el ROI del esfuerzo de desarrollo? Si puede probar que su equipo trabaja con un ROI alto, ¿quién lo va a interrogar? Además, cada equipo tiene sus límites si el equipo ha encontrado su "tamaño de confort", intente mes a mes un ligero aumento, si no pudieron terminar todas las tareas este es (probablemente) el límite.
Muestre el historial de las tareas, los ingresos por beneficios (si están disponibles), el punto de la historia que ha utilizado y demuestre que LA PRODUCTIVIDAD NO ES EL ESFUERZO DEL EQUIPO es un cálculo determinado por el equipo para evaluar la complejidad y quizás el momento de obtener algo hecho
fuente