Typefully

Cosas que aprender para mejorar de verdad como developer

Avatar

Share

 • 

3 years ago

 • 

View on X

Con frecuencia hay hilos de "las N tecnologías/lenguajes/herramientas que debes aprender para impulsar tu carrera de desarrolladora". Voy a proponer una lista de cosas que aprender que realmente van a marcar una diferencia y que no te atan a ninguna tecnología.
Si quieres tener una referencia única de estas técnicas, consigue este libro, que aumenta su valor cada día: Working Effectively with Legacy Code de @mfeathers amazon.es/Working-Effectively-Legacy-Robert-Martin/dp/0131177052
1. Hacer tests de caracterización: aprende a hacer tests cuando no conoces el código con el que trabajas, logrando alta cobertura y entender cómo funciona el software. Por ejemplo, con este vídeo de Emily Bache youtube.com/watch?v=zyM2Ep28ED8
Una alternativa es este vídeo de mi compa @jchacana sobre la técnica Golden Master (que es muy similar) youtube.com/watch?v=cI7CtKwsE_w
2. Romper dependencias. Una de las fuentes de alto acoplamiento son las dependencias duras. Para esto hay varias técnicas. Por ejemplo, los "seams" o costuras. Aquí un vídeo de Codely, con @JavierCane youtube.com/watch?v=uQwaicxUbb0
3. Sprout. En vez de cambiar código existente y que tal vez no tenga tests, introduce una versión nueva en paralelo (con TDD y todo eso) y finaliza llamándolo desde el viejo. Ejemplos aquí: biratkirat.medium.com/working-effectively-with-legacy-code-mechanics-of-change-part-ii-chapter-1-91f2129c3b72
4. Wrap. Renombra un método que quieres cambiar y añade uno nuevo con el mismo nombre y signatura que el "viejo". Llama al viejo desde el nuevo. Progresivamente, realiza los cambios que necesites en el nuevo método. biratkirat.medium.com/working-effectively-with-legacy-code-mechanics-of-change-part-ii-chapter-1-91f2129c3b72
5. Cambio paralelo. Supón que quieres reemplazar cierto método usado desde muchos lugares del código. Introduce el cambio en un nuevo método (usa TDD). Marca el viejo como deprecated. Migra progresivamente las llamadas al viejo método por el nuevo. Cuando no quedan llamadas...
elimina la versión deprecated. Una explicación aquí: xurxodev.com/trabajando-con-codigo-legado-parallel-change/
6. Branch by abstraction. En lugar de ramas en Git haz las "ramas" en código. Introduce una abstracción que aisle el código que necesitas cambiar, de modo que el resto "no se entere". Cambia progresivamente el nuevo código haciendo commits a main branchbyabstraction.com/
7. Aprende Calisthenics: una serie de prácticas simples que te ayudarán a desarrollar un sentido del diseño de código limpio y legible. blog.avenuecode.com/object-calisthenics-principles-for-better-object-oriented-code
8. Método Mikado. Introduce un cambio deseado en el código y observa qué error genera. Deshaz el cambio y modifica para que no se vuelva a producir el error. Repite hasta que el cambio funcione. Lo tienes en libro: mikadomethod.info/ y understandlegacycode.com/blog/a-process-to-do-safe-changes-in-a-complex-codebase/
Hay muchas más técnicas que puedes aprender. Todas ellas son independientes de tecnología concreta y todas ellas te serán útiles.
Por otro lado, sé que estas técnicas se refieren a trabajar con código "legacy", pero en realidad todo código es "legacy" en cuanto está en producción, así que... haz cuentas.
(corrijo: el vídeo sobre Golden Master es de mi también compa Sebastian Kulinski, y presentado por Javi Chacana)
Avatar

Fran Iglesias

@talkingbit1

Testing, refactoring, patterns, software design. (he/him) Personal opinions. Rollos: typefully.com/talkingbit1. Mastodon: mastodon.online/@talkingbit