La importancia de iterar

👨‍💻 Aprendizaje
🧠 Reflexión
📅 2022-10-23

Desde que he comenzado en la profesión de la programación me he dado cuenta de que se me olvidan bastante las cosas, una de las razones principales es que la mayoría de ellas no las aplico en el día a día, como por ejemplo CQRS o BDD. Por ello mucha gente he visto que toma apuntes o suele escribir sobre ello o intenta enseñarlo como un medio para retener el conocimiento. En mi caso me es necesario buscar formas alternativas o generar un mayor esfuerzo, por eso me gusta iterar cada cierto tiempo en aquello que se considera obvio.

Un buen ejemplo de esto es con el libro de “Diseño Ágil con TDD”, en las prácticas de Lean Mind estuve pasando el libro enteramente a Java, pero reconozco que no es que no entendiese las cosas, sino qué no las había interiorizado. Con el paso del tiempo he ido aplicando exactamente cada test de la forma más correcta posible, además de tener la capacidad de entender el porqué he elegido esa solución sobre otras basándose en los conocimientos o el contexto. En las pausas de haber leído el libro he leído otros libros de TDD en diferentes lenguajes para complementar con otros puntos de vista, por lo que volver al original es reconfortante, ya que no solo puedes entenderlo mejor, sino tener la habilidad de mejorarlo incluso.

En el trabajo escucho mucho el “80/20” que viene a decir que el 20% del trabajo de la solución completa, realiza el 80% de los criterios de aceptación, por lo que la solución es algo de usar y tirar para pruebas de concepto de negocio. Me gusta este tipo de aproximaciones porque fuerza a desarrollar algo sencillo, pero abierto al cambio para trabajar sobre la solución o si hiciese falta tirar la solución se perdería muy poco obteniendo el feedback del consumidor. Es realmente difícil plantear una solución completa con poco contexto, pero es muy asequible conseguir un mínimo y luego ir añadiendo capas encima, refrescando el contexto del conocimiento aplicado, ¿os suena? Este es el modelo que uso para aprender dándole mucha importancia a cosas transversales como pudiese ser saber, separar entre problema o solución, sabe buscar en Google, estimar de una mejor manera, testear correctamente el código sin generar sobre ingeniería en dichos tests.

Con el paso del tiempo me he dado cuenta de que no hace falta iterar sobre todo lo aprendido, sino que vas eligiendo que debes mejorar en base en el contexto en el que estás en la empresa o tus gustos, aunque yo intento alinear lo que me gusta con lo que hago en el trabajo buscando puntos medios a dónde pueda sacar un mayor partido a lo que hago. Un ejemplo podría ser pasar a Python “Diseño Ágil con TDD”, ayudo a los lectores a tener la posibilidad de poder leerlo en su lenguaje favorito, a la imagen de la empresa, al cliente, ya que repaso Python y me ayuda a mi mismo a refrescar TDD. Optimizar el aprendizaje es fundamental hoy en día, tras mucho meditarlo me he dado cuenta del impacto tan grande que tiene hacerlo incluso si es 1 hora al día.