leanmind logo leanmind text logo

Blog

BDD

Behaviour-driven Development es una técnica para tomar mejores requisitos de producto.

Técnica de casino ¿Cuánto estás dispuesto a perder?

Por Ricardo García Dorta

Hola! recientemente tuvimos, mi equipo y yo, la suerte de compartir una jornada de formación con J.B. Rainsberger. Tuvimos la oportunidad de lanzar preguntas y debatir de una forma cercana nuestras opiniones. Me llamó la atención su concepto del riesgo a la hora de trabajar con un código heredado, y aquí os lo comparto.

Problemas de un código heredado.

Cuando se trata de enfrentar el desafío del código legacy, en el mundo del desarrollo de software, a menudo se requiere una estrategia inteligente y reflexiva. El código legacy, como su nombre indica, es como un legado que dejaron los desarrolladores del pasado. Puede ser desordenado, poco documentado y, en muchos casos, problemático. Aunque puede parecer una apuesta segura mantenerlo funcionando, esta situación se asemeja sorprendentemente a un juego de azar en un casino.

Al igual que en el casino, esta “técnica de casino” implica saber cuánto estás dispuesto a perder antes de que algo inesperado y desagradable suceda. Para entender mejor esta estrategia, exploraremos cómo se relaciona con el mundo del desarrollo de software, y añadiremos una analogía con el estrés que puede generar la inversión de tiempo y dinero en el código legacy.

La técnica de casino en el desarrollo de software: Inversión de tiempo y dinero.

Imagina que estás en un casino y decides jugar a la ruleta. Consciente de que la ruleta es un juego de azar, estableces un límite de pérdida antes de comenzar. Esta cantidad representa cuánto estás dispuesto a perder o que riesgo estás dispuesto a tener. Si llegas a perder esa cantidad, te retirarás del casino sin lamentaciones. Esta estrategia es fundamental, para evitar perder más de lo que estás dispuesto a sacrificar en términos de dinero, y para reducir el estrés que puede acompañar a las apuestas.

En el mundo del desarrollo de software, el código legacy puede requerir inversiones de tiempo y dinero significativas para su mantenimiento o modernización. Antes de embarcarte en esta tarea, es crucial establecer un acuerdo de tiempo claro. Recuerda que, si tu trabajo es más caro que el propio software, probablemente la empresa que ha solicitado tus servicios, prefiera ahorrarse el dinero y el riesgo de cambiar sobre un código que ya funciona. Por eso, determinar cuánto tiempo estás dispuesto a invertir en la refactorización antes de considerar otras opciones, es crucial. Al igual que en el casino, este acuerdo de tiempo es una parte esencial de la Técnica de Casino en el desarrollo de software, ya que evita que la inversión de tiempo se vuelva excesiva, estresante y cara.

La realidad del código legacy.

El código legacy, si es nuestro, es como una apuesta que hicimos hace mucho tiempo. En el momento en que se escribió, pudo haber sido la mejor opción disponible, pero con el tiempo, las cosas cambian. La tecnología avanza, las necesidades del negocio evolucionan y el código legacy puede quedarse atrás. Si el código no es nuestro, hay muchos más problemas, principalmente la falta de contexto general del software.

La falta de documentación, la complejidad innecesaria y la dependencia de tecnologías obsoletas, son sólo algunas de las características que hacen que el código legacy sea una apuesta arriesgada. Además de la inversión de tiempo, la inversión de dinero puede ser significativa, y los problemas técnicos inesperados pueden generar estrés en el equipo de desarrollo.

Aplicando la técnica de casino.

Después de toda esta introducción, ¿cómo aplicamos la Técnica de Casino?

Aquí tienes un enfoque efectivo:

  1. Pon el temporizador: Inicia un temporizador o establece un límite de tiempo claro para tu tarea de refactorización. Esto te ayudará a mantener un seguimiento del tiempo que inviertes, y a evitar que la inversión de tiempo se vuelva excesiva.
  2. Encuentra una idea para refactorizar: Identifica una sección específica del código legacy que requiera mejoras. Define claramente tu objetivo de refactorización.
  3. Aplica la idea: Dedica el tiempo establecido a aplicar tu idea de refactorización. Mantén un enfoque claro y trabaja de manera eficiente. Entre los cambios que vayas haciendo es muy importante hacer micro commits, con la finalidad de poder regresar en todo momento a un código funcional.
  4. Después de que pase el tiempo, decide si tu idea es buena: Una vez que el tiempo establecido haya transcurrido, evalúa tu trabajo. ¿Has logrado mejoras significativas? ¿Tu idea de refactorización ha tenido un impacto positivo? Si no es así vuelve atrás en los commits.
  5. Repite: Si tu idea ha tenido éxito y estás satisfecha/o con los resultados, puedes repetir este proceso en otras partes del código legacy. Sin embargo, si sientes que tu idea no ha funcionado como esperabas, es importante saber cuándo detenerse y considerar alternativas. Recuerda también que el tiempo invertido aquí, por lo general, es poco valorado por tu cliente, asi que tienes que sacarle un buen rendimiento.

Aumentando la apuesta de tiempo.

En un escenario exitoso de refactorización de código legacy, surge una pregunta interesante: ¿y si nadie nota que has estado invirtiendo tiempo en el refactor? En este caso, podrías considerar duplicar la apuesta de tiempo. Esto significa que has demostrado tu capacidad para mejorar el código de manera eficiente y efectiva, sin afectar negativamente a tus responsabilidades actuales.

Sin embargo, debes ser consciente de que, al aumentar significativamente la inversión de tiempo, el proceso puede volverse más estresante. Debes estar atenta/o a señales de que estás sacrificando tu bienestar, o que tu rendimiento general está disminuyendo. El objetivo sigue siendo evolucionar tu código de manera efectiva y eficiente, y debes estar dispuesta/o a ajustar tu estrategia, si sientes que estás llegando a un punto de exceso de estrés o quejas de rendimiento.

Conclusión.

El código legacy es una realidad que muchas empresas enfrentarán en algún momento. Al igual que en un casino, es importante aplicar la Técnica de Casino para evitar perder más de lo que estamos dispuestos a sacrificar, ya sea en términos de tiempo, dinero o estrés. Esto implica establecer límites claros en todas estas inversiones, y estar preparados para retirarnos cuando sea necesario.

En última instancia, el éxito en el desarrollo y refactorización del código legacy, puede llevar a un aumento gradual de la inversión de tiempo, pero es importante mantener un equilibrio que no afecte negativamente tu bienestar, ni tu desempeño general. Como en el casino, en el desarrollo de software, la prudencia y la gestión adecuada de riesgos son clave para el éxito a largo plazo, y la transparencia en tus acciones es un signo de un buen jugador.

Publicado el 18/10/2023 por
Ricardo image

Ricardo García Dorta

¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.

Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?

Impulsamos el crecimiento profesional de tu equipo de developers