¿Cómo le digo a mi jefe que tenemos que rehacer un proyecto?

El proyecto

Recientemente me contrataron para trabajar en un proyecto que es esencialmente un sistema que registra eventos a través de una llamada de servicio web y entrega informes a través de otra llamada de servicio web. Pasé 4 semanas en un intento infructuoso de entender cómo se supone que funciona la implementación actual, pero no lo he logrado. Tengo la sensación de que el resto del equipo tampoco sabe cómo se supone que funcionan las cosas. . Probar el proyecto requiere mucha magia arcana en la que no estoy muy versado y tampoco las personas que lo escribieron.

La solución

Jugué un poco con el proyecto en mi propio tiempo y se me ocurrió un diseño mucho más simple en unos 10 minutos. Una maqueta reveló que el nuevo diseño reduciría la cantidad de código en aproximadamente un 98 % (sí, tanto). El nuevo diseño es mucho más simple, es fácil de entender, es extensible y consume menos recursos. También elimina la necesidad de 4 de los 5 subsistemas, incluida la ejecución de procesos en segundo plano cada pocos minutos para realizar la limpieza.

El problema

Le indiqué a mi jefa que teníamos que desechar el proyecto y comenzar de nuevo y que tenía lista una solución mucho más simple: todo lo que tenía que hacer era decir 'adelante' y yo lo haría. Calculo que me llevaría alrededor de 3 días implementar y probar el sistema (por lo que una semana parece razonable).

Este proyecto sienta las bases para un proyecto mucho más grande que es en parte lo que la dirección cree que será el futuro de la empresa y si este proyecto no se soluciona ahora, el proyecto más grande se hundirá en llamas.

¿Cómo le digo a mi jefe que creo que el proyecto actual debe reiniciarse?

Tenga en cuenta que soy el chico nuevo y mi huella en el proyecto en este momento es prácticamente nula. El desarrollador principal del proyecto se va a buscar otro trabajo y la otra persona asignada como desarrollador del proyecto no es exactamente la persona más inteligente del mundo.

Si no entendió cómo funciona el código en sí, ¿cómo descubrió lo que se supone que debe hacer la aplicación hasta el punto de sentir que puede construir algo que haga lo mismo?
Solo miré lo que se suponía que debía hacer en lugar de cómo funciona la implementación. El verdadero problema surge de una base de datos SQL sobrediseñada junto con dos almacenes de datos (uno SQL y otro NoSQL). Esto conduce a un conjunto de trabajos en segundo plano que mueven datos de la base de datos NoSQL a la base de datos SQL. Tengo una comprensión justa de los diferentes componentes del sistema, pero la implementación es simplemente demasiado compleja.

Respuestas (1)

¿Puede probar que su solución cubre todos los casos legítimos que cubre la versión actual? Idealmente, ¿puede probar que produce resultados idénticos incluso para los casos de error? (A veces eso importa). ¿Puede probar que, después de manejar cualquier caso extremo, seguirá siendo más simple?

Puedes hacer el primer 90% de un problema de programación con el 10% del trabajo. El 10% restante se lo lleva el otro 190% si la obra. Y, a veces, incluso ese 10 % es más de lo que se puede estirar para manejar el presupuesto de este año además de los costos de soporte continuos.

A veces, la respuesta correcta es comenzar la reescritura como un producto completamente nuevo... O incluso como un esfuerzo de "skunkworks", escribiéndolo según las especificaciones hasta que tenga suficiente para demostrar que realmente es mejor.

Un sistema que funcione es una prueba :-) Sí, estoy bastante seguro de que puedo probarlo. El sistema debe ser tan simple como lo describo: obtenga información, póngala en la base de datos, genere un informe. Realmente no está pasando nada especial. No hay casos de error reales ya que se supone que el sistema debe tomar cualquier cosa que se le dé y yo controlo todas las fuentes de entrada de todos modos (una sola aplicación que genera eventos en la entrada fija de un usuario). La única parte que puede ser complicada es la parte en la que estoy trabajando ahora y que no se volverá más o menos compleja.