Tratar con plazos no negociables como el único recurso en un proyecto de software [duplicado]

La pregunta :

¿Cómo trato los plazos poco realistas en un proyecto de software? ¿Cómo me aseguro de no pasar por alto ningún plazo cuando los plazos en sí no son realistas? ¿Qué le digo a mi gerente cuando pierdo una fecha límite? ¿Qué hizo cuando se enfrentó a plazos poco realistas que no eran negociables?

El fondo :

Estoy trabajando en un proyecto de software desde hace 6 meses. Soy el único desarrollador del proyecto. Hay un módulo en el proyecto que fue desarrollado por un desarrollador muy senior que fue trasladado a otro proyecto hace 6 meses cuando me uní al proyecto. Si bien me hice cargo del proyecto desde entonces, no tuve la oportunidad de ver el módulo desarrollado por el desarrollador principal. Hay un nuevo marco desarrollado por nuestra empresa. Se nos ha pedido que utilicemos este marco en nuestros proyectos. El uso de este marco en el proyecto en el que estoy trabajando requiere deshacerse del módulo escrito por el desarrollador principal y refactorizar otros módulos que se verían afectados por este cambio.

El problema: el gerente de desarrollo sénior de mi proyecto ha presentado estimaciones poco realistas para esta actividad. He planteado una preocupación con él, pero me ha salido el tiro por la culata. He aquí un ejemplo del tipo de conversaciones que he tenido con él:

Yo: ¿Podemos aumentar la cantidad de días para la subtarea de 1 a 5 días?

Gerente: ¿Por qué cree que esta subtarea llevará más tiempo? Pensé que conocías el código base.

Yo: Conozco nuestra base de código. No conozco la base del código del marco. No puedo darle una estimación exacta sin mirar el código del marco. Lo que sí sé en este momento es que esta subtarea no se puede hacer en 2 días. Necesitaremos al menos 5 días para ello.

Señalé algunas tareas secundarias más que pensé que tomarían más tiempo. Finalmente, así terminó nuestra conversación:

Gerente: No puedo cambiar las estimaciones ahora. Tienes que manejar esto de una forma u otra. Empiezo a sentir que no eres la persona adecuada para trabajar en este proyecto.

Me han dado 1 mes para completar esta actividad y estoy atascado con algunas estimaciones poco realistas. Después de haber trabajado en la industria durante un par de años, sé que tendré que trabajar 12 horas al día y probablemente también los fines de semana solo para cumplir con la fecha límite de cada subtarea.

Editar: esta pregunta no es un duplicado de esta

Hay una diferencia entre ser el único desarrollador en un proyecto y tener 5 desarrolladores en un proyecto. Los aspectos psicológicos asociados con ser el único desarrollador de un proyecto son diferentes. Por ejemplo, 5 desarrolladores pueden formar equipo contra un gerente si llega el momento, pero un solo desarrollador corre el riesgo de ser insultado o humillado frente a todos si se opone a las opiniones de los gerentes. 5 desarrolladores pueden apoyarse mutuamente en tiempos difíciles, pero un solo desarrollador tiene que soportar toda la carga por sí mismo. Será mi palabra contra mis gerentes, pero ese no sería el caso si tuviera más desarrolladores que trabajaran conmigo y sintieran que los plazos no son realistas.

@JoeStrazzere Poco realista es un término relativo. Mi gerente no ve estos plazos como poco realistas. Me ha pedido específicamente que me las arregle con sus estimaciones, lo que significa trabajar 12 horas y los fines de semana. Esto puede ser normal para él, pero no es realista para mí.
te quedas sin opciones. Intentaría hacerlo lo mejor posible sin horas extras, por supuesto. No tendrías nada que explicar cuando llegue la fecha límite, ya que ya has dicho claramente que no era posible. Además, quizás podrías concentrarte en las partes importantes e intentar ajustar el trabajo de esas partes al tiempo que tienes, dejando lo que puede ser accesorio o de menor importancia.
Creo que lo que está pasando aquí es que el gerente quiere que trabajes esos días de 12 horas.
El primer estudio que escuché sobre el tiempo de trabajo fue el de Hans Eysenck en la industria de armas en Gran Bretaña durante la Segunda Guerra Mundial, donde los trabajadores deberían haber estado realmente motivados. Descubrió que las personas que trabajaban 57 horas a la semana eran menos productivas que las personas que trabajaban 48 horas a la semana. No menos productivo por hora, pero menos productivo por semana. Como regla general, un desarrollador de software que trabaja 60 horas a la semana durante seis semanas y otro que trabaja 40 horas a la semana durante seis semanas tienen la misma productividad por semana, excepto que después de seis semanas, uno está cansado y perderá productividad rápidamente.
Los detalles son diferentes, pero la pregunta es la misma. ¿Hay alguna razón por la que las respuestas no te ayuden? Sería mejor incluir eso en su edición que su explicación de cómo sus detalles son diferentes.
Entonces, ¿cómo terminó esto? :)

Respuestas (5)

Gerente: No puedo cambiar las estimaciones ahora. Tienes que manejar esto de una forma u otra. Empiezo a sentir que no eres la persona adecuada para trabajar en este proyecto.

Su gerente está renunciando a la responsabilidad de su función, por lo que también tendrá que hacer su trabajo.

  • Comience por armar lo que considere una línea de tiempo realista para esta tarea, trazando un mapa de todos los pasos que ve y estimando la cantidad de horas para cada paso. No dediques demasiado tiempo a esto, ya que podrías ser acusado de "detener" el proyecto. Puede ser algo tan simple como una hoja de Excel que enumera los pasos, la cantidad de horas estimadas y el cálculo de la fecha de finalización estimada. No incluya ninguna referencia a la fecha límite. Envíelo por correo electrónico a su gerente.

  • Al final de cada día, junto a su tiempo estimado, coloque la cantidad de horas que pasó en el paso junto a su estimación y el porcentaje completo (ciertamente subjetivo) junto a eso. Incluya también una referencia a cualquier tiempo "fuera del proyecto" (reuniones obligatorias, solicitudes de emergencia, etc.). El cálculo de la fecha estimada de finalización debe actualizarse a partir de eso. Envíelo por correo electrónico a su gerente al final de cada día.

  • No te quejes. Proceda en su mejor habilidad. Pon todo el esfuerzo que puedas.

Al final del proyecto, habrá sucedido 1 de dos cosas:

  1. Te habrás sorprendido a ti mismo y realmente habrás cumplido con la fecha límite.
  2. Habrá incumplido el plazo y su jefe no tendrá ninguna razón (legítima) para ser duro con usted, ya que lo ha mantenido informado en cada paso.

Sobre todo, mantén tus emociones fuera de esto. Esto es solo trabajo. Si te emocionas al respecto, no te irá bien y las cosas que digas mientras estás angustiado pueden usarse en tu contra más tarde. Si mantiene la calma, la concentración y la productividad, podrá decir honestamente que hizo su mejor esfuerzo y que no le ocultó nada a su gerente.

Si su organización no puede respetar eso, entonces nunca hubo una manera de tener éxito en primer lugar.

Es posible que no pueda trazar un mapa de todos los pasos porque no sé cuáles serán los pasos. Necesitaré algo de tiempo para analizar cuáles van a ser los pasos y la estimación de cada paso. Desafortunadamente, el tiempo corre y llegar a estimaciones que realmente tengan sentido tomará una cantidad considerable de tiempo.
Una mejor opción sería dedicar 20 minutos todas las mañanas a mi plan del día y enviarlo a mi gerente todos los días antes de comenzar con cualquier trabajo. De esta manera, estaré más organizado y mi gerente tendrá la oportunidad de ver la cantidad de trabajo que felizmente olvidó tener en cuenta en las estimaciones.
@Bot: el punto es la comunicación. Haz tu mejor esfuerzo, agrega detalles y revisiones a medida que los encuentres. Cuando digas que necesitarás "algo de tiempo", hazlo para empezar. El punto es que no desea llegar al día de la fecha límite y que su gerente le pregunte "¿Qué pasó?" Manténgalo actualizado diariamente con tanto detalle y con la mayor precisión posible. Comunicarse en exceso.
Buen punto sobre estar tranquilo y no emocionarse demasiado.
Creo que la comunicación podría muy bien ser la solución aquí. Aunque, mi gerente podría darse cuenta de mi objetivo detrás de enviarle actualizaciones diarias y pedirme que deje de hacer esto. Si un desarrollador junior me enviara correos electrónicos todos los días sobre lo que iba a lograr, sentiría que está haciendo esto para cubrir sus huellas. Incluso podría encontrarlo un poco molesto.
@bot: Tengo a mis superiores enviándome actualizaciones de estado diarias. Reciben actualizaciones de las personas que administran. Estos son cortos: debe tomar 2 minutos armarlos y 30 segundos leerlos, pero le da a la cadena suficiente información para saber cómo van las cosas.
@bot: no eres el desarrollador junior. Usted es el ÚNICO desarrollador de este proyecto y, por lo tanto, es el líder del equipo. Título oficial o no, esa es su función, y los informes de estado al gerente del proyecto (su gerente) no solo son apropiados, sino esperados.
@CKing Cualquier gerente que le pida que deje de enviar informes de estado sobre proyectos en curso es completamente incompetente. Esa es literalmente una de las partes más importantes de su trabajo, verificar cómo van las cosas constantemente.

¿Cómo trato los plazos poco realistas en un proyecto de software? ¿Cómo me aseguro de no pasar por alto ningún plazo cuando los plazos en sí no son realistas?

Si no son realistas, los extrañará. Dicho esto, es posible que su gerente considere alcanzables los plazos (como en "no poco realista") considerando que hará horas extra (ver más abajo).

Después de haber trabajado en la industria durante un par de años, sé que tendré que trabajar 12 horas al día y probablemente también los fines de semana solo para cumplir con la fecha límite de cada subtarea.

No sé cuál es tu situación, pero si alguien me dijera que tendría que trabajar 12 horas al día para cumplir con un plazo con el que (personalmente) no me comprometí, respondería repasando mi CV y ​​comenzando a busca en otra parte Hay dos cosas a tener en cuenta sobre las horas extras planificadas:

  • primero, cuando la fecha límite no es realista, las horas extraordinarias no son la respuesta, sino un síntoma del problema.

  • segundo, a menos que trabaje en un país sin leyes de protección laboral, no se le pueden imponer horas extras. Si le pagan por 9 horas al día (por ejemplo), es completamente irreal que su gerente espere obtener más de su tiempo, básicamente de forma gratuita. Le piden que invierta 1,5 días-hombre por cada día-hombre y no obtenga nada a cambio (es tan poco realista como la fecha límite).

  • tercero, cuando trabaja horas extras, trabaja por debajo de la mitad de su capacidad, durante más tiempo. No se siente así, porque estás reparando cosas y tienden a funcionar a corto plazo. Considerablemente cometes más errores cuando trabajas horas extras, y la mayor parte del código que escribes se traduce en deuda técnica. Los retrasos y problemas causados ​​por la deuda técnica aumentan exponencialmente con el tiempo, hasta que terminas con un código base que no se puede mantener.

Para responder a su pregunta, haría dos cosas:

  • asegurarme de que el gerente comprenda y realice un seguimiento de mi progreso en este proyecto (es decir, si hice el 50 % de lo que debería hacer para cumplir con la fecha límite, lo comunicaría en los términos menos ambiguos posible).

  • negarse a hacer horas extraordinarias sistemáticas. Si hay una emergencia y el futuro de la empresa está en juego, aceptaría quedarme hasta tarde en la oficina por un día o dos (y el tercero, respondería con "Lo siento, tengo planes" y me iría).

Si nada se quemó y un gerente decidió "No puedo cambiar las estimaciones ahora" por algunas estimaciones poco realistas, haría lo mejor que pudiera en el tiempo que le di a la empresa . Su contrato con la empresa está ahí para especificar lo que la empresa puede pedirle (¿especifica horas extras? ¿en qué términos?).

Si no se cumpliera con el plazo, sería un problema de gestión (es decir, no sería mío para resolverlo), y la responsabilidad sería del gerente.

Su responsabilidad en esto es hacer lo que realmente pueda (teniendo en cuenta que no es realista que la empresa espere trabajo gratis de usted) y comunicar los retrasos y problemas a su gerente. A partir de ahí, es su problema.

Editar en negrita .

Buen punto acerca de que las horas extras son un síntoma más que la solución.
Re: Horas extras. No establezca un precedente para expectativas poco realistas. Se sorprendería de cómo trabajar un par de meses de tiempo extra para terminar un proyecto se convierte automáticamente en TIEMPO EXTRA PERMANENTE ESPERADO de parte de su gerente. Cuando las cosas se calmen y te vean trabajando en horas normales, lo percibirán como si estuvieras holgazaneando. Como dijo utna, las horas extraordinarias poco frecuentes a corto plazo para cumplir con un plazo realista no son irrazonables. Las horas extraordinarias extendidas ciertamente lo son. Si cedes y lo haces, habrás sentado un precedente que se esperará de ti cada vez que te lo pidan.

¿Qué hizo cuando se enfrentó a plazos poco realistas que no eran negociables?

Muy pocos plazos son realmente no negociables. Si realmente no fuera negociable, habría más de una persona en el proyecto. Por el simple motivo del riesgo de que ya no esté disponible para trabajar en él y, por lo tanto, la posibilidad de que se pierda la fecha límite.

Gerente: No puedo cambiar las estimaciones ahora. Tienes que manejar esto de una forma u otra. Empiezo a sentir que no eres la persona adecuada para trabajar en este proyecto.

Si un gerente me dijera esto, mientras me da una fecha límite que considero irrazonable, entonces amablemente estaría de acuerdo con él y le preguntaría a qué proyecto le gustaría que me cambiara.

Si realmente siente que no puede realizar el trabajo en el tiempo requerido, entonces su trabajo es levantar esa bandera ante la gerencia. Lo que has hecho. El trabajo de la gerencia es entonces determinar si hay barreras para la finalización que puedan eliminar o impulsar el cronograma y hablar con las partes afectadas.

Sin embargo, si la gerencia simplemente va a tratar de obligarlo a cumplir con el cronograma, entonces esta es una receta para el desastre que simplemente no terminará bien. En cuyo caso, es mejor terminar con la parte difícil ahora en lugar de estar completamente estresado y lidiar con un posible despido más tarde.

Al aceptar cortésmente que tal vez no sea la persona adecuada para trabajar en estas condiciones, sucederá una de tres cosas. O le estás engañando y cambiará el horario, agregará a otra persona para que te ayude o terminarás sin trabajo. Honestamente, si te despiden por eso, probablemente lo habrías hecho si no cumplieras con la fecha límite de todos modos.

+1 para "si lo despiden, entonces probablemente lo habría sido si no cumpliera con la fecha límite de todos modos". Una forma segura de que su gerente no cumpla con la fecha límite es despedirlo ahora.
La verdad es que el desarrollador senior y yo somos los únicos que conocemos muy bien el sistema existente. Con estimaciones tan agresivas, somos las únicas dos personas que pueden venir a la mente de alguien para esta actividad. El desarrollador sénior está ocupado con varios proyectos, por lo que soy prácticamente la única opción si tienen en mente plazos tan agresivos. Lo único que me molesta es el hecho de que puedo hacer todo el trabajo duro requerido para cumplir con estos plazos y aun así correr el riesgo de ser considerado como alguien que tiene miedo de enfrentar los desafíos.
@bot: si los plazos son posibles, entonces no estoy del todo seguro de por qué estabas en la oficina de tu jefe para empezar. O puedes hacer el trabajo en el tiempo asignado o no puedes. Si puede, pero simplemente se está resistiendo al trabajo, entonces necesita "ganarse el botón de oro" y "simplemente hacerlo". Sin embargo, si la cantidad de horas extras es tal que se siente abusado, entonces necesita solicitar ayuda. Si no recibe ayuda, entonces debe tomar algunas decisiones sobre dónde quiere trabajar.

¿Cómo trato los plazos poco realistas en un proyecto de software?

En general, hay un par de puntos a considerar aquí:

  1. ¿La fecha límite se debe a algún evento externo que no se puede mover? Por ejemplo, si hay una feria comercial en la que se debe realizar el proyecto, esto es un poco diferente a una fecha límite arbitraria.

  2. ¿Qué tan bien puede probar que la fecha límite no es realista? La fecha límite puede estar planificada, pero ¿qué evidencia tiene para contrarrestar estos puntos?

¿Cómo me aseguro de no pasar por alto ningún plazo cuando los plazos en sí no son realistas?

Poner horas extra y pedir ayuda sería mi sugerencia.

¿Qué le digo a mi gerente cuando pierdo una fecha límite?

Si sabe que se perderá una fecha límite, le sugiero que informe a su gerente lo antes posible y vea qué curso de acción se recomienda. Quizás haya una lucha de poder o algo más aquí, pero puede haber alternativas. También está la cuestión de cómo se manejan los plazos dentro de la empresa, ya que he visto todo, desde todos en la empresa ayudar a cumplir con el plazo hasta los plazos son solo fechas esperanzadoras que no significan nada.

¿Qué hizo cuando se enfrentó a plazos poco realistas que no eran negociables?

Dependiendo de esos primeros puntos, habría algunas opciones:

  1. Plan de contingencia - Revisar el alcance para que se pueda hacer una demostración pero con funcionalidad limitada.

  2. Rechazar: De acuerdo, esto fue feo, ha habido ocasiones en las que mis compañeros de trabajo y yo le dijimos al líder que la fecha límite no era posible y le preguntamos qué querían que hiciéramos. Después de todo, es posible que tengan otras cosas que se puedan hacer dependiendo de por qué se presionó tanto.

  3. Sumérgete: también he visto momentos en los que el equipo dedicaba horas extra y cumplía con la fecha límite. De acuerdo, esto conlleva el riesgo de que posiblemente se le pida que haga esto nuevamente, pero aquí es donde uno debe tener cuidado con la forma en que se maneja el tiempo en la empresa, ya que si se invierte mucho tiempo adicional, esto podría usarse más adelante. Alternativamente, obtener la aprobación de OT puede ser otra estrategia aquí.

Los plazos han sido impuestos a mi gerente por su gerente. Los plazos son una religión en mi lugar de trabajo y he trabajado horas extras muchas veces antes para cumplir con los plazos. Los plazos actuales están en un nivel completamente nuevo, pero deberán cumplirse independientemente de si se cumplen por algún motivo específico. Buen punto sobre pedir ayuda.
JB trae buenos puntos. ¿Cómo sabes que la fecha límite no es realista? No desea hacer el trabajo requerido para demostrar que no es realista (es decir, un cronograma), entonces, ¿cómo lo sabe? También, respecto a un plan de contingencia. Averigüe específicamente lo que es absolutamente necesario antes de la fecha límite. por ejemplo, si es para una demostración, tal vez algunas funciones solo necesitan parecer que funcionan, pero no realmente. Luego proponga trabajar en esta funcionalidad al final con la funcionalidad simulada como alternativa. Sin embargo, no sé cómo llegarás a algún lado sin un horario y estimaciones propias.

Esta es la respuesta de su gerente:

Gerente: No puedo cambiar las estimaciones ahora. Tienes que manejar esto de una forma u otra. Empiezo a sentir que no eres la persona adecuada para trabajar en este proyecto.

Y la clave para mí es esta:

Empiezo a sentir que no eres la persona adecuada para trabajar en este proyecto.

El argumento principal de este gerente para que cumpla con un plazo poco realista es que quizás no sea la persona adecuada para el proyecto. ¿En serio? ¿Cómo inspirará realmente el acoso el trabajo?

Mi instinto me dice que la presión para cumplir con este plazo, y las consecuencias de por qué no puedo ser yo, realmente recae sobre su gerente y la falta de perspectiva de su gerente.

Y, lamentablemente, este gerente quiere asegurarse de que cualquier retroceso por esta fecha límite incumplida recaiga sobre el desarrollador (es decir, usted).

El mejor consejo que puedo darte es mirar el proyecto en sí mismo y dividirlo racionalmente en estas categorías.

  • Funcionalidad central: lo que se puede hacer antes de la fecha límite que sería sólido y beneficioso para que el proyecto avance. Su objetivo sería avanzar dando lo mejor de sí mismo admitiendo que la fecha límite general no puede cumplirse, pero qué bien me veré y qué bien se verá el proyecto para cuando se cumpla la fecha límite.
  • Problemático pero necesario: lo que no se puede hacer antes de la fecha límite sin comprometer seriamente la calidad. FWIW en cada proyecto de programación en el que he estado, siempre ha habido una funcionalidad central que puede ser invisible para los no técnicos, pero cubre el 80% de lo que se debe hacer. Entonces, si puede poseer esa base al obtener esa funcionalidad central sólida, gana a lo grande.
  • Problemático y requiere una nueva estrategia: qué partes del proyecto parecen "cosas buenas" pero, de manera realista, serían un pozo de tiempo y recursos que afectaría negativamente al proyecto en general. Muchas veces, especialmente en el mundo invisible de la programación, las ideas que parecen conceptualmente buenas en el papel pueden terminar siendo una pesadilla en el mundo real. Por ejemplo, si su proyecto incluye aspectos de diseño frontal que requieren una revisión grupal y sabe que consumirán tiempo y requerirán revisiones, eso entraría en la última categoría.

Ahora, dicho esto, compile esa lista y acérquese a su gerente con los detalles. Si bien claramente están diciendo que no eres una buena opción para el proyecto, la realidad es que si hubiera alguien más que pudiera manejarlo, ya habría obtenido la tarea. O tal vez su gerente encontraría una manera para que ustedes dos trabajen de manera cooperativa.

Pero tal como está, mi actitud es que si el proyecto cae en tu regazo y sabes que los plazos no son razonables, estás en tu poder para dar forma a una discusión sobre la mejor manera de abordar esto.