Voy a ser muy directo ...
- ¿Estás a cargo de los desarrolladores en este trabajo?
- ¿Eres el líder del proyecto?
- ¿Cuánta "participación" tienen los desarrolladores en el proyecto?
- ¿Cuál es su justificación comercial para una reescritura?
- ¿Qué tiene el código base que lo hace completamente inútil e irrecuperable?
Has declarado que acabas de comenzar un trabajo y, sin embargo, ya pareces ser un maestro de la situación allí. Tal vez he entendido mal la intención de su pregunta, pero tengo la impresión de que ha ingresado a un trabajo donde ve una serie de problemas, y ha llegado a la conclusión más fácil en la que el código está roto y el único camino a seguir es una reescritura, pero ¿realmente ha considerado el costo para su empleador?
Con cualquier base de código existente, sin importar cuán pobre sea el estado en que se encuentre, el propietario generalmente tendrá una inversión considerable en los productos que representa el código. Hay costos directos e indirectos asociados con la base del código, y una reescritura es a menudo lo último que desea hacer como desarrollador de software, ya que corre el riesgo de devaluar los activos de su código y, por lo tanto, obtener un rendimiento más bajo de todos sus anteriores esfuerzos
Tome el sistema operativo de Windows como ejemplo. Con cada nueva versión creada, ha habido una gran porción de código de la versión anterior. En ocasiones, se arrastran bibliotecas y API completas a través de varias generaciones de SO. ¿Por qué? Debido a que los desarrolladores saben que estos elementos funcionan, se han probado, se han parcheado y reparado para evitar problemas de seguridad y memoria, y porque han costado muchísimo dinero entrar en ese estado. Nadie quiere tirar el código de trabajo cuando les está haciendo dinero, incluso si los costos de mantenimiento son relativamente altos, el costo de comenzar desde cero siempre será aún mayor, y en una compañía como el caso de Microsoft, tienen miles de millones en el banco que permitirles comenzar desde el principio si quieren, pero no lo hacen t porque quieren maximizar el retorno de su inversión. Su empleador no es diferente a Microsoft, excepto por el hecho de tener miles de millones en efectivo para lanzar en un proyecto.
Por lo tanto, el código es un desastre y parece que hay problemas de comunicación y límites entre las diversas áreas de la empresa. ¿Qué pueden hacer usted o sus colegas al respecto?
Una opción es simplemente continuar como lo ha estado el equipo y esperar un milagro en el futuro. Probablemente no sea una buena idea, y es probable que solo aumente su frustración y estrés.
Una mejor opción es simplemente esforzarse y hacer su trabajo, pero como parte de esta búsqueda de oportunidades para agregar pruebas para admitir aquellas áreas de código que parecen ser las más frágiles, luego refactorícelas hasta que se vuelvan más estables. Te resultará más fácil hacer un argumento convincente para mejorar la inversión de la compañía en lugar de argumentar que simplemente lo descartes.
Una opción aún mejor es organizarse como un equipo y asegurarse de que alguien esté de acuerdo con la suficiente antigüedad como para que puedan hacer un buen caso para permitir que el equipo tenga más flexibilidad para programar el tiempo para mejorar la base del código. No me importa cuán ocupada esté una empresa, o cuán rígido parezca ser el cronograma, siempre hay "pausas" ocasionales en la actividad que se pueden usar para exprimir una o dos mejoras. Sin embargo, es aún mejor si las mejoras se pueden realizar al completar otras tareas. Si fuera yo, me estaría acercando a un gerente y presentándoles conceptos en algunos de los libros canónicos que leen los desarrolladores de software. Código limpioes probablemente la que más necesita tu equipo. Plante algunas semillas sobre cómo mejorar el código y proporcione algunos ejemplos de lo que quiere decir. Un buen administrador verá el valor de agregar mejoras incrementales al código, especialmente si puede describir el concepto de Deuda técnica . Ayude al líder o gerente de su equipo a hacer un buen caso de negocios para mejorar el código, y tendrán una mejor motivación para actuar en consecuencia.
Tampoco es suficiente decir "el código está desordenado". Debe alentar a sus colegas a que practiquen la codificación limpia todo el tiempo, y a utilizar una técnica de codificación limpia para alentar un poco la limpieza a medida que avanza. Tengo un pequeño póster que imprimo y cuelgo de la pared de mi oficina cada vez que tomo un nuevo trabajo. Dice "Siempre trata de dejar el código un poco más hermoso de lo que lo encontraste". Justo al lado, agrego otro que dice "Los lirios no necesitan ser dorados". Ambos sirven para recordarme que siempre debería tratar de mejorar lo que encuentro, pero evitar simplemente dorar un problema con otro. Las reescrituras masivas son a menudo el peor tipo de "chapado en oro", porque a menudo se hacen por razones equivocadas. Seguro que una versión de producto completamente nueva podría ser justificable en algún momento,