Desde que empecé mi carrera como ingeniera de software, todos los desarrolladores sénior con los que he hablado recomiendan la refactorización como técnica para mejorar y crecer como desarrolladora. Su importancia y beneficios son ampliamente reconocidos: mejora la calidad del código, reduce la deuda técnica, aumenta la mantenibilidad y, en general, mejora el diseño del código. También reduce la probabilidad de errores y facilita que se puedan añadir nuevas características y funcionalidades al software.
Pero a pesar de estos beneficios, ¿cuántos desarrolladores se toman el tiempo de hacerlo de forma regular? Como dijo el gran Martin Fowler, “refactorizar es como hacer la colada. No es divertido, pero si no lo haces, tu código empezará a oler mal”.
Durante un tiempo, estuve pensando en cómo incorporar esta buena práctica en mi rutina diaria, pero sabía que necesitaba darle una vuelta de tuerca para convertirla en un hábito. Fue entonces cuando se me encendió la bombilla: me puse en contacto con mi compañera Victoria Kovaleva y juntas creamos nuestro reto de refactorización de 30 días.
Queríamos que nuestro reto fuera realista, por lo que acordamos hacer una refactorización diaria de no más de una hora y también nos aseguramos de que esta no interfiriera con nuestros objetivos personales o de equipo. Para que fuera de alto impacto, revisamos los diferentes tipos de refactorizaciones que podríamos abordar y repasamos los que eran nuevos para nosotras o no dominábamos del todo. Por último, queríamos que el desafío fuera empoderador para ambas. Por eso, decidimos reunirnos a la semana para medir nuestro progreso y apoyarnos mutuamente.
Para hacerlo oficial, comunicamos nuestro reto a nuestros respectivos equipos. Esto nos ayudó a mantener nuestro compromiso y a la par, gracias a ello, arrojamos luz acerca de la importancia de la refactorización. Victoria sugirió que mantuviéramos un registro de nuestras refactorizaciones diarias y plasmáramos nuestros pensamientos, frustraciones y aprendizajes en un documento, lo que nos permitió reflexionar sobre nuestro progreso y compartir nuestras experiencias.
Arrancamos el desafío pidiendo sugerencias de refactorizaciones a nuestros compañeros para así crear un backlog de tareas que requerían nuestra atención. Una de nuestras compañeras sugirió dedicar tiempo a crear o mejorar nuestra documentación. Al principio, nos pareció una tarea tediosa, pero ¿cuán útil es encontrar documentación actualizada cuando más la necesitas? Otro compañero nos recordó la importancia de que las refactorizaciones fueran seguras y estuvieran cubiertas por tests. También mencionó la relevancia de verificar la validez de las sugerencias de nuestros respectivos IDE. Estas sugerencias nos ayudaron a empezar con fuerza y a mantenernos motivadas durante el desafío. Con todo esto, nos sentíamos preparadas y listas para triunfar.
Así pues, después de pasar un promedio de 11,5 horas refactorizando y haber trabajado en 7 proyectos diferentes, ¿qué hemos aprendido durante el último mes? Aquí os dejamos nuestros cinco aprendizajes más importantes:
- El momento que se escoge para hacer la refactorización importa. Hacerlo al principio del día es clave. Es un muy buen calentamiento y marca la pauta del resto del día. Además, ¿no es genial saber que hemos empezado el día aportando valor a nuestro equipo?
- Refactorizaciones cortas y sencillas. Establece un límite de tiempo y divide las refactorizaciones complejas en partes más pequeñas y manejables. Es muy fácil perderse por el camino.
- Aprovecha al máximo el tiempo que dedicas a ello. Mientras refactorizas, puedes aprovechar y practicar otras habilidades complementarias. Para Victoria, fue mejorar sus habilidades de mecanografía, y para mí, aprender nuevos atajos de teclado de mi IDE.
- Involucra a tu equipo. Reta a tus compañeras a practicar la refactorización de forma regular y propón la creación de un backlog de equipo. Esto te ayudará a priorizar las tareas y a que tu trabajo sea siempre relevante. Además, puede generar conversaciones interesantes sobre diferentes enfoques y técnicas dentro del equipo.
- ¡No existe el fracaso en la refactorización! No importa si es pequeña o si finalmente se deshace. El objetivo de la refactorización es triple: mejorar el código, aprender cómo funciona y comprender el modelo de negocio. Si cumples aunque sea uno de estos objetivos, ha valido la pena. Tiempo bien invertido.
Al poco tiempo de empezar el desafío, comenzamos a recoger los frutos de incorporar la refactorización en nuestra rutina diaria. Fue muy emocionante ver que identificábamos posibles casos en nuestro código de forma más rápida, la calidad de nuestro código mejoró y nos sentimos más conectadas con nuestro trabajo. La refactorización también nos ayudó a ganar confianza en nosotras mismas y en nuestras habilidades, acallando así nuestro síndrome de la impostora.
En resumen, completar este reto e incorporar la refactorización como hábito nos ha beneficiado más allá de simplemente mejorar nuestro código. Hemos ganado confianza en nosotras mismas, ha mejorado la calidad de nuestro código y ha fomentado la colaboración dentro de nuestro equipo. Recomendamos encarecidamente este desafío a cualquier persona que busque mejorar sus habilidades de programación y tener un impacto positivo en su equipo.
Con miras al futuro, ahora nos preguntamos: ¿qué otros desafíos podemos abordar para seguir mejorando nuestras habilidades de programación, ganar confianza y apoyar a nuestro equipo? Comparte tus ideas en la sección de comentarios.
Victoria Kovaleva – Linkedin Twitter
Marta Vila- LinkedIn