¿El "Equipo Quirúrgico" de Fred Brooks maneja efectivamente el factor del autobús?

10

Mi equipo de 4 desarrolladores experimentados trabaja en una gran aplicación modular de Windows (aproximadamente 200 KLoC). Me he centrado en la base de código central desde el comienzo del proyecto (hace 3 años) y gradualmente cambié a una posición de desarrollador semi-líder, aunque no soy el gerente del equipo.

Nuestra iteración actual es una actualización de la interfaz de usuario de alta prioridad solicitada por la administración superior, que involucra aproximadamente 15 cambios en la base de código central. Cuando el gerente me preguntó, calculé que cada uno de los 15 cambios tomaría menos de cuatro horas en completarse , un total de menos de 7 días hábiles. Luego me ofrecí para realizar el trabajo. En cambio, el gerente decidió repartir las 15 tareas a los cuatro desarrolladores.

En los tres días desde que comenzamos a trabajar, he observado dos cosas:

  1. Los otros miembros del equipo sin experiencia completaron aproximadamente 1 o menos tarea cada uno.

  2. La Ley de Brook en acción: pasé aproximadamente la mitad de mi tiempo brindándoles asistencia (intentando entrenarlos en el uso de los componentes). Como resultado, solo terminé 2 tareas yo mismo, en lugar de las 5 o 6 esperadas.

Me acerqué a mi gerente con la preocupación de que llegamos tarde y nuevamente sugerí que completara las tareas restantes. Mi solicitud fue amablemente rechazada, y las razones indicadas para dividir la carga de manera uniforme fueron dobles:

  1. Limite el factor camión / autobús : aumentar a otros desarrolladores en estas habilidades ahora, para que en el futuro cualquier trabajo se pueda realizar a cualquiera, no solo a mí.
  2. Para eliminar un "cuello de botella" (yo) y hacer el trabajo más rápido.

Para ser claros, no tengo problemas con: a) invertir el tiempo enseñando, b) personas que tocan mi código, o c) seguridad laboral. De hecho, le sugiero regularmente al líder del equipo que entrene a otros desarrolladores en ciertos aspectos de la base de código central para reducir el riesgo.

En esta iteración también tenemos una gran colección de correcciones de errores de alta prioridad dirigidas, por lo que parece que se podría hacer más progreso si la carga de trabajo se redistribuyera.

En Mythical-Man-Month, Brooks 'sugiere un " Equipo Quirúrgico " donde cada equipo se compone de un líder + sub-líder (el gerente y yo), y algunos roles menores. Siento como si naturalmente estuviéramos cayendo en esta organización, pero mi gerente está trabajando en contra de ella. Siento que el factor del bus ya está solucionado (el administrador está bien versado en el código central), y que el cuello de botella en realidad no existe (involucrar a más desarrolladores no hará que el trabajo vaya más rápido). Creo que, a este respecto, un equipo quirúrgico es algo bueno.

Estos son mis sentimientos, pero no soy un gerente experimentado, ni hemos tenido que lidiar con el factor del autobús (tocar madera). ¿Brooks tenía razón? ¿Has trabajado en un "equipo quirúrgico" donde el factor del autobús entró en juego? ¿Existen mejores técnicas para gestionar la experiencia de distribución?

Preguntas similares:

Kevin McCormick
fuente
1
Considérelo entrenamiento para comunicar sus habilidades al equipo.

Respuestas:

5

En realidad, diría que está siguiendo el modelo de "equipo quirúrgico". ¡Suerte!

Parte del punto de dicho modelo es que los miembros del equipo inferior tienen un rol de asistente. Cuando el equipo no está realizando una cirugía cardíaca, entonces está bien moverse más despacio y darles la oportunidad de practicar algunas de sus habilidades, o de entrenar en responsabilidades.

El trabajo del cirujano es examinar y administrar su equipo buscando puntos débiles y resolviéndolos, además de ser el principal desarrollador. No puede hacer que un no cirujano (gerente de negocios) haga esto, porque no entienden las habilidades requeridas, algo así como un aprendiz de un maestro artesano.

Entonces, el gerente está aprovechando esta oportunidad para trabajar en uno de sus otros objetivos. Si durante el transcurso de la misma, se revela algún defecto en el equipo, puede solucionarlo antes de que se convierta en un problema. Digamos, contratando a otro desarrollador.

O, los juniors pueden cometer un error. Este es el momento perfecto para que lo hagan, ya que tienen a alguien vigilando por encima del hombro. Oscar Wilde dijo

La experiencia es simplemente el nombre que le damos a nuestros errores.

Si estos jóvenes nunca tienen la oportunidad de cometer errores, nunca mejorarán. No solo robará a su equipo de futuros desarrolladores experimentados, sino que, en cierto sentido, les robará una oportunidad que deberían haber tenido.

Spencer Rathbun
fuente
Gracias por la respuesta. Esta experiencia ya revela dos debilidades de nuestro equipo: 1) nuestra base de código central es demasiado grande y necesita más modularización, y 2) cuando lo hacemos más modular, otros desarrolladores deben tomar la iniciativa de los nuevos componentes, en lugar de yo. El problema mayor, que no es necesariamente parte de mi pregunta original, es que tengo un conocimiento mucho mayor del código que el gerente (que es el cirujano "oficial"), por lo que no está delegando de manera efectiva como podría. .
Kevin McCormick
@KevinMcCormick: parece que debería permitir que su gerente se preocupe por estas cosas. Ajuste sus estimaciones para que ahora incluyan ayudar a los miembros de su equipo con sus tareas. Tienes muchas justificaciones para hacerlo.
Ramhound
@Ramhound, definitivamente cierto, e incluso ya lo discutí con el gerente y él lo aceptó en el futuro. Algunos de los desequilibrios en las habilidades no los conocía, y se ofreció a ayudar. Él sabe que el proyecto se apoya mucho en mí, que ambos estamos trabajando para resolver.
Kevin McCormick
7

Nuestra empresa solía funcionar como usted sugiere. Solo tuvimos dos personas que entendieron una parte crítica del código. Cada vez que surge una tarea en esa parte del código, en lugar de pasar algunas semanas poniendo a alguien más al día, la tarea se les asignará porque pueden completarla en un par de días. Esto realmente funcionó bastante bien por un tiempo.

Lo que sucedió es que finalmente su plato se llenó tanto que a pesar de que podrían terminar una tarea en 2 días, les llevaría semanas pasar a la parte superior de su lista. Los gerentes tendrían feroces batallas verbales sobre cuya tarea era más urgente. Las tareas dependientes urgentes quedarían sin hacer.

Finalmente, los gerentes se cansaron de esperar y comenzaron a capacitar a sus propios equipos. Sí, fue mucho más lento por un tiempo, pero ahora nuestro rendimiento es mucho mejor.

Es posible que ahora esté en esa primera fase donde puede manejar el trabajo, pero no tiene forma de predecir cuándo pasará a la segunda fase. Aquí hay una pista: siempre ocurre en el momento más inconveniente posible. Su gerente tiene razón al recibir el golpe cuando todavía tiene algo de espacio para respirar.

Sí, es frustrante ver a alguien luchar con algo que usted podría hacer mucho más rápida y fácilmente. Intenta criar a un niño de dos años en algún momento. Lo haces porque ayuda a todo el equipo a mejorar. El trabajo de su gerente es preocuparse por el horario. Si está preocupado por los errores de alta prioridad que se deshacen, desafíese a sí mismo para ver qué tan rápido puede solucionarlos.

Karl Bielefeldt
fuente
¡Gracias por la respuesta! Definitivamente puedo decir que la "fase 2" es un verdadero miedo, dado que tenemos otro empleado de otro proyecto que es un cuello de botella muy visible y que causó problemas importantes en el pasado. No estoy seguro de si nuestro proyecto tiene los mismos problemas, así que supongo que está ocurriendo un pequeño tirón aquí. De todos modos, estoy tomando esto como una oportunidad para compartir algunos conocimientos y tal vez revelar algunas debilidades en la documentación, la modularidad del código, etc. ¡Y sí, es increíblemente frustrante! Es reconfortante escuchar a alguien más que siente lo mismo.
Kevin McCormick
6

Puede que ahora no seas un cuello de botella, pero eventualmente lo serás si continúas haciendo todo el trabajo tú mismo. Su gerente se da cuenta de que es lo suficientemente importante para que aprenda a delegar para arriesgarse a que su proyecto llegue tarde: confíe en él. Una vez que aprenda a dejar ir, sus juniors comenzarán a aprender y producirán mucho más bajo su guía.

Matthew Flynn
fuente
Gracias por la respuesta, definitivamente estoy de acuerdo en que una persona que hace todo el trabajo es de alto riesgo y que el gerente lo sabe. En este caso, sin embargo, no estoy haciendo todo el trabajo. Los otros miembros del equipo son muy productivos cuando trabajan en otras tareas, como corregir errores y trabajar en subcomponentes, no en la arquitectura central del sistema. Sería algo similar a sugerirle a alguien del equipo de Windows Media Player en MS que realice cambios en el kernel de Windows.
Kevin McCormick
@KevinMcCormick: ¿Qué sucede si se agrega Media Player al kernel de Windows? Es una excusa válida para hacerlo. Parece que no quieres que los miembros del equipo se familiaricen más con la arquitectura central del sistema, y ​​no puedo ver la razón para hacerlo, solo te ayudaría a largo plazo.
Ramhound
@Ramhound, sí, por supuesto, en ese caso definitivamente sería cierto. Quiero que otros se apropien de lo que he escrito, haga cambios y lo entiendan (regularmente proporciono capacitación y documentación). Simplemente no creo que el enfoque de "todos trabajen en todo en el mismo grado" sea efectivo frente a algún nivel de asignación de roles, ya que todos tenemos diferentes conjuntos de habilidades y experiencia.
Kevin McCormick
3

Está aplicando una restricción que puede no estar presente o ser tan significativa en el grado que cree que es. Específicamente, le preocupa el tiempo hasta la finalización. Su gerente, por otro lado, no parece preocupado por las limitaciones de tiempo percibidas.

Si toma el tiempo de entrega de su pregunta, rápidamente comenzará a preguntarse por qué está haciendo la pregunta en primer lugar.

Eso no quiere decir que el tiempo siempre esté disponible, y usted indicó que esta es una solicitud de alta prioridad de la alta dirección. Pero no está al tanto de todas las conversaciones que su jefe ha tenido con ellos. Es posible que haya negociado por más tiempo para que usted pase ese tiempo entrenando a los otros miembros del equipo.

Y si bien cree que el factor del bus ya se ha abordado, su jefe puede estar atenta a la próxima solicitud que se presentará en el futuro y que no encajará fácilmente en 7 días de trabajo por parte de uno de sus desarrolladores estrella. Es mucho más seguro entrenar al equipo en una iteración más pequeña donde la magnitud objetiva del riesgo es mucho menor.

He sido un cuello de botella crítico antes; y sinceramente, no es un lugar agradable para estar. En mi caso, el vicepresidente de TI y yo hablamos y se nos ocurrió un plan para solucionar el problema de forma permanente. Me dolió, pero me dolió mucho menos que si hubiera sido transportado en camión.

Es fácil entrar en la mentalidad de todo lo que necesita ser eliminado lo más rápido posible. Un buen gerente detecta las raras oportunidades en las que un pequeño retraso (para capacitación / educación cruzada) puede pagar dividendos significativos más adelante.


fuente
¡Gracias por la respuesta! Desearía poder aceptarlos a todos. La limitación de tiempo es muy real en este caso, pero como otros han dicho, nunca hay un buen momento para hacer este tipo de inversiones de tiempo. Estaría interesado en saber cómo resolvió su situación.
Kevin McCormick
3
+1 Algunos jefes pueden ser idiotas, pero muchas veces tu jefe tiene una perspectiva más amplia y solo tienes que confiar en él.
Phil
@ Phil: Sinceramente, parece que en este caso el jefe podría tener una buena perspectiva. Deje que se preocupe por la línea de tiempo, se preocupe por llegar tarde, él proporcionó la estimación después de todo. En el peor de los casos, sucede el momento crucial y terminas todo lo demás tú mismo.
Ramhound