Trabajo en una MNC bastante reconocida, y el módulo en el que trabajo ha sido asignado a un nuevo "líder". La base del código es bastante grande (~ 130K o más, con interdependencias en otros módulos), pero estable: algunas partes se han vuelto feas a lo largo de los años, pero es probable que funcione. (Nuestros productos llevan años funcionando, incluso nuevos). El problema es que nuestro líder quiere reescribir el código desde cero , para abarcar "una granularidad más fina y un diseño proactivo".
Sé en mis entrañas que no es una muy buena idea, pero ¿cómo puedo convencerlo a él / al resto del equipo (que son mucho más altos que yo en términos de años de experiencia), sin sonar demasiado pedante (No deberías ser demasiado pedante) reescribir, ya que Joel et al tienen artículos claros que lo prohíben)?
¡Tengo una buena relación de trabajo con la persona en cuestión, y no quiero arruinarla, pero tampoco quiero ser parte en una decisión que seguramente nos afectará en los próximos años ! ¿Alguna sugerencia para un enfoque más suave pero efectivo? ¡Incluso los relatos de cómo has abordado tal situación a tu gusto me ayudarían mucho!
EDITAR: La base de código de la que estoy hablando no es un producto / GUI, sino a nivel de núcleo con todas las funcionalidades críticas para nuestro producto. ¡Espero que ahora sepas por qué sueno tan aprensivo!
fuente
Respuestas:
Hagan las matemáticas con él juntos:
Del lado de la deuda:
cuánto tiempo llevará recrear las funciones que tiene en este momento. ¿Cuánto cuesta eso (desarrolladores + gastos generales)
¿cuánto perderá la compañía por no poder implementar nuevas funciones / correcciones de errores o solo a un ritmo mucho más lento?
¿Cuál es el riesgo de no poder completar la reescritura y recurrir a la base fuente actual después de n meses? Incluyendo el riesgo de matar el producto todos juntos.
¿Cuánto tiempo pasará hasta que la nueva base de código se vea tan fea como la actual?
En el lado del activo:
Súmelo todo, posiblemente haciendo una comparación del mejor / peor de los casos.
Al final tendrás una respuesta. Si ignora la respuesta, hable con su jefe.
fuente
Obligatorio: Cosas que nunca debes hacer, Parte 1 (Lo has visto, pero en caso de que alguien encuentre esta pregunta y no la haya visto).
Reescribir desde cero es muy tentador para los desarrolladores. Nadie quiere trabajar en código heredado, todos quieren escribir código nuevo y sexy. Pero al final del día, se trata de lo que es mejor para el negocio. ¿Por qué se necesita una reescritura? ¿Pueden presentar ese caso de una manera clara que demuestre un valor agregado para el negocio?
No debería tener que convencerlos de que no gasten recursos. Deberían tener que convencer a la empresa para que gaste recursos.
fuente
¿Cuán bien cubre su enfoque de prueba la base del código? ¿Qué hay de las pruebas unitarias?
Si ya no está allí, sugiera que cualquier código solo se reescriba una sección a la vez y que cualquier sección en reescritura tenga una cobertura de código de prueba de unidad casi completa (90% +). Una vez que haga esto, habrá definido una parte del código que está bien definido (podríamos probarlo) y también tiene una interfaz conocida.
En ese punto, reescribir ese código es un riesgo mucho menor. Los errores deben ser detectados por las pruebas unitarias / otras pruebas, y suponiendo que también tenga el control de la fuente puede revertirse fácilmente.
Tomar la reescritura en fragmentos más pequeños también les permite a usted y a su equipo tener una idea más precisa de una reescritura completa. ¿Ambos saben en lo que se están metiendo? ¿Uno de ustedes es demasiado pesimista / optomista?
fuente
Hay algunos factores relevantes a considerar:
fuente
Solo di no." Sea convincente, pero esté dispuesto a decir "No solo está equivocado acerca de sus beneficios, sino que está equivocado porque es un desperdicio de esfuerzo humano".
fuente
¿Dónde está el caso de negocios para una reescritura? Tiene una base de código que satisface una necesidad. Por supuesto, puede que no sea perfecto, pero representa una inversión sustancial en términos de tiempo y recursos. El único momento en que se justifica una reescritura completa es cuando la calidad del código es tan mala que está causando que la organización pierda dinero u oportunidades comerciales. Uno debe recordar el viejo adagio, si no está roto, ¡no lo arregles!
fuente
Compre tantos pantalones cortos en la acción como sea posible. Si la gerencia acepta suicidarse, al menos debería ganar algo de dinero. Después de todo, pronto estarás en la calle después del tanque.
fuente