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.
¿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.
usuario8365
más claro