Estoy administrando un pequeño equipo de desarrolladores. De vez en cuando decidimos que vamos a pasar un día o dos para limpiar nuestro código.
¿Sería una buena idea programar un horario regular, digamos 1 semana cada 2 meses, para simplemente limpiar nuestra base de código?
Respuestas:
No.
Arreglalo mientras trabajas en él:
fuente
Mi opinión personal: es absolutamente necesaria para el 90% de los proyectos.
Particularmente para proyectos que están fuertemente impulsados por las ventas, generalmente hay un gran impulso para incluir nuevas características en cada lanzamiento, y inevitablemente terminas comprometiendo tus mejores instintos e introduciendo algunos trucos / trucos aquí y allá.
Eventualmente, ha acumulado suficiente 'deuda técnica' a través de estos pequeños compromisos que termina pasando una buena cantidad de tiempo trabajando en las fallas en la base del código, y no puede utilizar todo su potencial.
Por lo general, hay dos tipos de problemas generados de esta manera:
Generalmente trato de reservar tiempo para un ciclo puro de refactorización / corrección de errores cada 3 o 4 ciclos. Siempre les pido a mis desarrolladores que me digan cuándo se sienten frustrados con el código base también. No todos los desarrolladores tienen que trabajar en el esfuerzo de limpieza, por lo general (pero no siempre) puede escalonar un poco a los equipos, por lo que solo un equipo está trabajando en la limpieza en un momento dado.
fuente
Tengo a mis desarrolladores ordenando su código antes de registrarse (Subversion) o fusionarse con la rama de desarrollo principal (Git).
Les hago hacer lo siguiente:
Para los proyectos más grandes, el código se revisa formalmente antes de fusionarse desde la rama de desarrollo a la rama principal.
Creo que "dedicar tiempo" significará que es algo que podría diferirse o postergarse debido a la cantidad de trabajo involucrado. Al hacer que los desarrolladores lo hagan en un check-in (que equivale a una solicitud / problema de cambio en JIRA) es mucho más manejable.
fuente
No en mi opinión Si deja pasar demasiado tiempo entre el momento en que se encuentra con la deuda tecnológica y cuando la repara, pierde el contexto de cuál es el problema. Tarda más en arreglarse y tiende a arreglarse peor. Lo más importante es que la gente abandona las ventanas rotas porque no es una "semana de limpieza".
Personalmente, negocio la limpieza técnica de la deuda en cada sprint si sé que hemos creado algunos antes. Mantiene la deuda fresca en la mente de las personas. Limita la cantidad de código usando el código del problema para que la refactorización sea más fácil. Evita que la deuda técnica se acumule. Y ayuda a impulsar a los desarrolladores a simplemente juntar algo, porque voy a hacer que lo hagan el próximo sprint (también podría hacerlo bien en primer lugar).
fuente
Definitivamente diría que sí, con una condición: debe hacerse con frecuencia, preferiblemente semanalmente. Creo que una revisión de código regular programada junto con la acción real sobre los elementos que salen de la revisión de código vale la pena muy rápidamente. Ver la respuesta de pswg
1 semana cada 2 meses definitivamente no es suficiente. Esto habla a la mayoría de las otras respuestas que respondieron con 'No' a su pregunta. La esencia de la mayoría de estas respuestas es que si espera demasiado tiempo ya no estará en contacto con el código y, por lo general, lleva mucho más tiempo arreglarlo / limpiarlo / refactorizarlo.
fuente
No está tan claro si se refería a un ejercicio adicional de limpieza del código de vez en cuando. En ese sentido, si. Cualquiera que sea la práctica que sigamos, siempre se produce cierta degradación.
No debe usar eso como excusa para no hacer lo correcto [Aplicando principios SÓLIDOS, pruebas unitarias relevantes, inspecciones, etc.] en primer lugar.
fuente
Creo que las dos respuestas populares "No" y "Sí" son dos aspectos de la misma verdad. Recuerde que el OP está hablando de un grupo que está administrando, no solo de sí mismo como individuo. No podemos suponer que todos los desarrolladores del grupo sean lo suficientemente disciplinados como para escribir código limpio y fácil de leer; y está el problema de la presión externa y las metodologías de estilo ágil. Además, incluso con los mejores esfuerzos de las personas, sus diferencias de estilo significarán que podrían escribir código que se consideraría limpio cuando se separara, pero inmundo cuando se considerara junto con otras personas (sin mencionar las interfaces chirriantes).
Por otro lado, el "arreglarlo mientras se trabaja en él" es, en mi opinión, un ideal al que aspirar. Puede hacer que su código salga aún más "arreglado"
Ahora, si el equipo del OP adopta lo anterior, y si alienta a sus subordinados, por ejemplo, durante las revisiones de código y durante las sesiones periódicas de limpieza de código, para tratar de anticipar los escollos y evitar la fealdad por adelantado, con el tiempo, con suerte, necesitará menos tiempo de limpieza (Y luego podrían dedicar ese tiempo a la documentación, la refactorización más profunda y el intercambio de conocimientos de lo que han escrito y consolidado).
fuente
Creo que programar un horario regular es muy bueno, ya sea que sea una tarea en un proyecto de estilo cascada normal o historias en uno ágil. Tener un horario establecido puede no ser tan valioso como simplemente incluirlo en su horario. Esto le permite hacerlo como parte del cronograma versus cancelar el día de limpieza porque está atrasado en el proyecto.
Habiendo administrado un proyecto que tenía una enorme cantidad de deuda de código, trabajar en ellos de manera regular fue clave para que las cosas funcionen sin problemas. Algunas de nuestras cosas eran grandes, otras pequeñas.
Después de unos meses de este tipo de trabajo, el líder de nuestro equipo de operaciones me dijo lo fácil que estaba todo.
Puede que cada artículo no parezca mucho, pero al igual que todas las deudas, se anuncia.
fuente
La respuesta ideal es No, porque sigue los pasos necesarios para evitar que esto sea una necesidad (limpie a medida que avanza por varias razones ya mencionadas).
Este puede ser el objetivo al final, pero es posible que tenga un equipo que esté lejos de poner esto en práctica.
Los gerentes deben asumir cierta responsabilidad. No siempre es culpa del desarrollador. Los gerentes pueden decir una cosa, pero comienzan a presionar para que los proyectos se terminen y hacen sugerencias que promueven las malas prácticas. Literalmente pueden decir, "lo limpiaremos más tarde" o si funciona, es suficiente.
Es posible que deba comenzar dedicando un tiempo particular para mostrar que esto es importante. Una vez que sepa que su equipo es capaz de limpiar su código (no es un hecho), puede intentar incorporarlo con más frecuencia.
Finalmente, no debería tener que establecer una hora.
Personalmente, lucho por resolver un nuevo problema y hacer que funcione mientras trato de mantener las cosas ordenadas. Estoy mejorando en eso, pero a menudo tomo un descanso deliberado y limpio las cosas. Es una mentalidad diferente para mí. Finalmente, las prácticas sólidas se convierten en hábito.
fuente
No, debes hacer esto mientras estás codificando. Esto se llama refactorización si está utilizando TDD. El problema cuando espera un mes o dos para arreglar y limpiar su código es que puede alterar el comportamiento del código porque no recuerda cada parte de su código.
Sugiero refactorizar, que se basa en codificar primero el código necesario para que algo funcione, y tan pronto como funcione, rediseñarlo, optimizarlo y hacerlo bonito.
fuente