¿Cómo navegar trabajando con un proceso de desarrollo que no apoya el código limpio?

Empecé a trabajar en mi trabajo actual hace poco más de un año. Cuando comencé, el código base era un completo desastre. Todo el código estaba en un archivo, no se podía mantener y no se consideraron las mejores prácticas. No hubo separación de preocupaciones, principio de responsabilidad única y se ignoraron algunas de las mejores prácticas importantes para el marco AngualrJS.

Mientras trabajaba en él, logré extraer el código en archivos separados y hacerlo más manejable. Sin embargo, cuando compré la mala calidad del código con mis compañeros y mi supervisor, no apoyaron la refactorización a pesar de que realmente no podía trabajar con el código en su estado. Lo hice de todos modos.

Resultó que antes de empezar al menos 4 personas diferentes habían trabajado en el proyecto. La persona que escribió el código era muy joven y se la dejó sola sin ninguna revisión del código. Los desarrolladores posteriores abandonaron el rol después de 8 meses cada uno. Uno de mis compañeros de trabajo actuales trabajó en él por un corto tiempo, pero no estoy seguro de lo que hizo.

Cada vez que mencioné en el pasado que este código base no sigue las mejores prácticas, mi colega se ha puesto muy a la defensiva, resistente y emocional. Incluso dice cosas como 'bueno, aunque es un desastre, al menos funciona'. Parecía haber elegido su orgullo porque dije que un proyecto no estaba en buena forma.

El problema es que me voy de baja por maternidad en septiembre y mi colega difícil me cubrirá mientras estoy fuera durante 6 meses. Me preocupa que no siga las mejores prácticas mientras estoy fuera y volveré a ser un desastre.

¿Cómo puedo abordar esto con mi supervisor? Esta empresa no realiza revisiones de código, pruebas unitarias y la calidad del código no está en la mente de los supervisores.

¿El colega emocional es el que escribió el código cuando era junior?
No. El joven que lo escribió se ha ido. No estoy seguro de si lo despidieron o renunció, pero el colega demasiado emocional todavía está trabajando aquí en un proyecto diferente.
¿Entiendes por qué este colega se emociona entonces?
No, no lo hago. No entiendo por qué decir que un código que otra persona escribió no está siguiendo una buena práctica podría causar estas emociones.
El título de la pregunta aquí realmente no sigue la pregunta real. No es solo un desarrollador, es todo un equipo, todo el proceso y la gestión. Sugiero cambiar "un desarrollador que es" por "un proceso de desarrollo que es" . Se puede trabajar con un solo desarrollador, todo un proceso es otra cosa.
Sí, estoy molesto. Sé que estoy tratando de hacer lo correcto y mejorar las cosas y esta persona está en mi contra por alguna razón. El código era/es un completo desastre. No estoy seguro de por qué alguien que no lo escribió se molestaría incluso si solo pregunto quién lo escribió.
@ user1261710 obviamente, aunque la persona no escribió el código original, pasó tiempo manteniendo y presumiblemente corrigiendo errores, etc. Entonces, si sugiere que hay muchas cosas para mejorar y que la base del código es un desastre ilegible, está insinuando su compañero de trabajo actual no estaba haciendo su trabajo.
Su suposición de que el código original no se podía mantener no es necesariamente válida.

Respuestas (5)

Esta es tu respuesta aquí.

Esta empresa no realiza revisiones de código, pruebas unitarias y la calidad del código no está en la mente de los supervisores.

Así que la única persona que hace algo de forma estructurada eres tú. Aunque el código es (en su opinión) un desastre, los otros desarrolladores lo saben y lo entienden. Arreglar las cosas rompe su visión de cómo funciona todo.

Por lo tanto, siga trabajando de la manera que desee, pero no se tome más tiempo para refactorizar el código de los demás (ya ha visto que no les gusta eso).

Si alguien estropea su parte del código base mientras está fuera, programe un tiempo para arreglarlo cuando regrese.

Si no puede vivir así, es posible que deba explorar otras opciones de empleo: no es probable que cambie la forma en que funciona este equipo sin ser un líder del equipo.

Un acercamiento emocional a los temas relacionados con el trabajo no es nada productivo, pero es muy habitual. Usted mencionó en un comentario que el colega resistente al cambio no es la misma persona que escribió el código en primer lugar. Esto significa que podría ponerse a la defensiva porque no intentó arreglar el código por sí mismo, por lo tanto, percibe el cambio recomendado como un desafío. O tal vez simplemente es perezoso y no quiere refactorizar el código.

Estoy seguro de que ha utilizado argumentos como: el código mal escrito puede funcionar pero es propenso a errores, no es comprensible para los nuevos empleados, no se puede mantener fácilmente y todo esto conduce a la pérdida de un tiempo valioso. Si esto no funcionó, debe intentar usar el emocionalismo usted mismo.

  • Sé que el código funciona, eso se debe a que hizo un buen trabajo en la implementación/mantenimiento, pero es muy difícil para mí y potencialmente para cualquier nuevo miembro del equipo de desarrollo entenderlo y trabajar en él (esto también puede sonar como una campana). a por qué todos sus predecesores renunciaron).

  • Sé que ha hecho un buen trabajo y respeto su opinión, pero siento que la mía no es tan respetada. Estoy tratando de ayudar a todos con un cambio que nos beneficiará a largo plazo.

También puede organizar una reunión con los desarrolladores, el líder del equipo Y el gerente/supervisor del proyecto para hacer una breve presentación de la naturaleza beneficiosa del código limpio y las pruebas.

  • Trae tantos ejemplos como puedas de cómo esto te ayudará en el futuro.
  • Haz una estimación del esfuerzo.
  • Lo más importante es pedir sus recomendaciones sobre cómo se puede optimizar el código y cómo pueden trabajar juntos para implementar los cambios.
  • Haga un plan sobre cuándo puede llevarse a cabo esto.

En otras palabras, hacer un esfuerzo organizado y bien documentado para introducir la optimización de código en el proyecto. educarlos

¡Buena suerte!

Cuando se ve desde el punto de vista de la gestión, una enorme refactorización de código

  • Quema cientos de horas de tiempo del personal,
  • No agrega nuevas características al código,
  • Corre el riesgo de agregar nuevos errores que no estaban allí antes.

Es poco probable que las solicitudes para detener todo y simplemente refactorizar sean recibidas con entusiasmo por alguien que no sea la persona que quiere hacerlo.

Una opción más realista es la mejora incremental. Cada vez que agregue una nueva función o corrija un error, deje el código en un mejor estado que cuando lo encontró.

Esta empresa no realiza revisiones de código, pruebas unitarias y la calidad del código no está en la mente de los supervisores.

Si desea cambiar esto, depende de usted presentar buenos argumentos de por qué debería cambiar, respaldados con datos . Recuerde que las revisiones de código y las pruebas unitarias de escritura toman tiempo de los programadores, y eso es un costo. Cualquier hora que pases revisando el código de otra persona es una hora en la que no estás escribiendo código que genere dinero. Cualquier prueba unitaria escrita que nunca falla (es decir, nunca detecta un error potencial) es una pérdida de recursos que nunca se recuperará.

La gerencia sabrá cuánto cuesta hacer X horas de revisiones de código, Y horas de pruebas de escritura y Z horas adicionales para "mejorar la calidad del código". Una declaración de "pero tendremos menos errores más adelante" o "hace que escribir código en el futuro sea más fácil" es vaga y no está cuantificada; tendrá poco peso con la gestión. ¿Puede cuantificar cuánto tiempo se pierde debido a la mala calidad del código, la falta de revisiones del código y la falta de pruebas unitarias? Tenga en cuenta cuánto tiempo sobrevive el código. En la empresa para la que trabajo, una gran cantidad de código carece de pruebas unitarias, pero una gran cantidad de código también se descartará o se reescribirá en un plazo de 6 a 12 meses.

Las pruebas unitarias y la calidad del código son cosas buenas para tener (revisiones de código OTOH, no estoy de acuerdo), pero también lo son las computadoras portátiles rápidas y una cafetería interna con café gratis y de calidad. Mejorarán la productividad, pero también tienen un costo. Solo si la ganancia de la productividad mejorada supera el costo, tiene sentido que la gerencia los implemente.

¡Sigue adelante, no eres un árbol!

Como desarrollador, sabes que no puedes trabajar en un lugar como este, y sabes que no puedes cambiar nada (cambiar la forma de pensar de tu jefe), así que ¡sigue adelante! ¡Encuentra otro trabajo en el mejor lugar!

Bueno, la cuestión es que aumentaría sustancialmente mi viaje al trabajo. Además, esta empresa tiene licencia maté completamente pagada, así que si quiero tener otro hijo, tendré que quedarme... hmmm
¿Qué tal si haces lo mejor posible mientras te quedas en la empresa actual, pero sigues buscando otro lugar y mejorando tus habilidades (mediante proyectos propios)?
Puede cambiar las cosas si ahorra tiempo en general. Y si no ahorra tiempo en general, no lo cambie. Lo mejor es hacer cambios cuando tienes que trabajar en alguna parte de todos modos.