¿Cómo debo decirle a mi jefe que no puedo cumplir con la fecha límite?

Recientemente comencé a trabajar para una empresa de software en otro país. Me volaron para avanzar con el proyecto. Allí hice algunas tareas y luego regresé a mi tierra natal para seguir trabajando desde aquí.

Se me ha encomendado la creación de nuevas funciones para una aplicación basada en web mal escrita. Realmente no entiendo el código de espagueti. No tiene documentación, no utiliza ningún patrón de diseño y la estructura de datos no está normalizada.

La gestión de proyectos está desordenada: no hay trabajo atrasado, no siguen ninguna metodología de software y ni siquiera usan correos electrónicos para comunicarse. Todo se comenta en las llamadas. El equipo toma notas, pero no hay integración. Los gerentes no entienden la complejidad involucrada. He perdido interés en el proyecto.

La gerencia me pidió un plan para completar las tareas. En un torrente de sangre, les dije que entregaría el miércoles. No puedo terminar mis tareas y he perdido el sueño. Cada pieza de código que toco rompe algo más, y no puedo refactorizar o agregar las funciones requeridas por el tiempo comprometido.

¿Cómo debo decirle a mi jefe que no puedo cumplir con la fecha límite?

Realmente no me importa que me despidan porque la empresa no cumple con la cultura que esperaba, y ya no quiero trabajar aquí, pero tampoco quiero irme de una manera en la que la gerencia se sienta irrespetada. teniendo en cuenta que invirtieron algo de dinero en mí.

Simplemente les dijiste que terminarías el miércoles y no tienes que decirles que no sabes cuándo terminarás. No va a salir bien. Sólo dilo.
"¿Qué debo hacer?" generalmente no es la mejor pregunta, incluso con el contexto anterior. Es posible que desee utilizar la pregunta del título, que está perfectamente bien, en su lugar.
¿Podrá entregar si se le da tiempo adicional (pero limitado)? ¿Puede entregar en un alcance reducido pero a tiempo (o poco después)? Básicamente, ¿puedes entregar algo de valor en un futuro muy cercano?

Respuestas (3)

Dar un plazo que no puede cumplir fue extremadamente poco profesional. Levantar las manos y decir que no te importa que te despidan aún más.

Infórmeles lo antes posible que no puede manejar el trabajo. si puede, bríndeles lo que crea que es una solución y un plazo razonables y continúe desde allí.

Eso es todo lo que puede hacer, si no son personas técnicas, tendrán poco o ningún interés en sus excusas y razones. He visto a muchas personas en tu situación, no es un buen lugar para estar y, a menos que aprendas de él, estás haciendo lo mismo que ellos, vendiendo un producto defectuoso.

Tenemos un empleado aquí que está fuera de su alcance. Le echaría la culpa por igual a su gerente, que debería haber sabido que una estimación dada bajo una gran presión no se cumplirá. El trabajo del administrador es principalmente realizar la tarea a un costo mínimo, y presionar a un desarrollador sin experiencia no lo logrará.
@gnasher729 Le echaría la culpa principalmente al gerente. Parece que el gerente estaba tratando de manipularlo para que se comprometiera a hacer lo que ya decía que era imposible.
@ gnasher729 No estoy de acuerdo, el gerente no es una persona tecnológica, es un vendedor por lo que parece. Pastel en el cielo y técnicas de ventas de alta presión son su stock en el comercio. Depende de la tecnología mantener los pies en el suelo. El OP puede aprender de esto o culpar a todos los demás y seguir cavando en un agujero hasta que se derrumbe sobre él.
  1. Hágales saber que no pueden esperar nada de usted. Hágales saber por qué: el código no tiene documentación, no ha podido identificar ninguna estructura en el código y la naturaleza de espagueti del código hace que sea imposible entenderlo y mucho menos entenderlo. Hágales saber que intentar trabajar con el código tal como está para introducir nuevas funciones es un ejercicio inútil.

  2. Sugiera una alternativa que incluya construir desde cero. Déles una estimación de cuánto tiempo debería tomar si pudiera hacerlo desde cero.

En este punto, su enfoque debe estar en desarrollar y proponer alternativas factibles a lo que ellos quieren que haga.

Podrían despedirlo, pero eso no hará que desaparezca el problema de que es imposible trabajar con el código.

No le digas a nadie que no puedes hacer algo sin proponer alternativas factibles. Dado que está dando malas noticias, asegúrese de tener sus patos alineados antes de dar las malas noticias. Una vez que tenga sus patos alineados, no se demore en dar las malas noticias. No espere a la fecha límite si no es necesario esperar.

Trabajar con el código tal cual simplemente significa que el hecho de que el código esté extremadamente mal escrito, no tenga estructura y no esté documentado, ese hecho es ahora su problema irresoluble. No tener que trabajar con este código es la única forma de eludir todos los problemas integrados con este código.

Dígales que si el código fuera modular, podría agregar funciones mientras comprende, digamos, el 10% de la base del código. El hecho de que el código sea espagueti significa que debe comprender el 100% de la base del código antes de poder hacer algo. El código espagueti y tener que comprender el 100 % del código base es una combinación muy mala.

En lugar de centrarse en lo que está mal con el código, debe encontrar una ruta para resolver el problema. Eso puede significar rehacer todo el proyecto si quieren un marco de tiempo preciso. Luego déjelos decidir cómo quieren seguir adelante. Esté preparado para explicarles por qué necesita seguir los pasos que propone.

Las respuestas como esta no cumplen con los estándares, o es todo código Spagetti, son excelentes diatribas para un foro web, pero en realidad no son razones por las que no pueda completar el proyecto. Que el Módulo A tiene requisitos del módulo B y C y que al hacer el cambio a A, B y C dejarán de funcionar debido a que la Función A(3) ya no podrá llamar a B o C porque los cambios requeridos para hacer B y C funciona correctamente significará que la función b (4) y C (1,3,9) ahora tiene el requisito previo de D, que también es un requisito previo de A.

A partir de aquí, debe poder proporcionar un cronograma realista y entregables iterativos para la finalización. Si todo eso está fuera de su alcance, tal vez debería llamar a la compañía que lo colocó allí y pedirles ayuda para resolver el problema.