¿En serio? ¿Cómo es posible que la mejor manera de hacer debug sea usando un patito de goma? Aunque visto así, pueda parecer un poco bizarro voy a contarte porqué hacer debug con un patito de goma es más efectivo de lo que parece. No es una técnica novedosa, los programadores más experimentados utilizan esta técnica para encontrar problemas en su código de una manera sencilla e intentar reducir su frustración cuando algo no termina de encajar del todo.

En realidad, está técnica viene explicada en el libro The Pragmatic Programer, voy a intentar explicar que es exactamente eso del patito de goma y porqué creo que es una táctica super efectiva.8164695884_25b5c6744d_z

Explicando la forma de hacer debug con un patito de goma

Cómo su nombre indica, la técnica se basa en hacer debug con un patito de goma encima de la mesa. La idea es que le cuentes al patito cada paso de tu código, incluso entrando en detalles, así podrás darte cuenta de los errores que pudiesen causar un comportamiento inesperado de tu funcionalidad.

El primer paso es tener un patito de goma cerca de tu monitor, al lado de tu teclado o donde quiera pero que puedas mirarlo.

Ahora, presenta al pato la funcionalidad que quieres hacer y después empieza a explicarle el propósito de cada linea al patito. Asegúrate de que se llama correctamente y con todos los parámetros necesarios a cada función y de que no te queda ninguna «rama lógica» del código por explicar. Mira al patito, para que no se sienta solo y señala con el dedo en la pantalla las llamadas importantes del código.

Si todo va bien, seguro que encontrarás ese punto del código que te está causando problemas. Normalmente, es cuando cortas el problema en pequeños trozos y se lo explicas poco a poco al patito encontrarás la solución a se dolor de cabeza. Al final todo termina encajando.

¿Por qué la técnica de hacer debug con un patito de goma es tan efectiva?

Cuando estás escribiendo código, estás en el barro, trabajando con if, for, while, llamadas a funciones y a veces estar tan abajo, te hace perder (a mi también) la perspectiva global de la funcionalidad que estamos desarrollando. Por eso es necesario que te revisen el código, que haya testing exploratorio y funcional,para tener una perspectiva distinta al ver el problema.

El patito de goma, mitiga el «efecto tunel» de meterte en un problema y perder el foco de la funcionalidad real. Del mismo modo, hace que examines tu código sin necesidad de necesitar ayuda y así podrás date cuenta si has comprendido la funcionalidad completamente y no has ido perdiendo «trozos» por el camino.

¿De verdad es tan efectivo? El hecho de que le cuentes a alguien el problema y como lo estás solucionando hace que tu cerebro funcione de manera distinta a cuando estás programando. El patito de goma necesita que vayas despacio, hablando y contando que es lo que tu código está haciendo, además esto mismo te hace mostrar atención por lo detalles, las variables, los tipos,…

Otra razón para usar la técnica del «patito de goma», no molestas innecesariamente (a veces) a compañeros de trabajo, la perdida de concentración disminuye muchísimo la productividad. Sin embargo, tu «patito de goma» tiene una paciencia infinita y puedes contarle tu problema tantas veces como quieras que él seguirá mirandote tranquilamente.

De acuerdo, si realmente estás bloqueado, lo mejor es pedir ayuda. Tus compañeros, stackoverflow, Internet,… te van a echar un cable, pero es mucho mejor ir con un problema que hayamos trabajado «bien» para que la ayuda de en el blanco.

Conclusiones

Los beneficios del patito de goma no solo te ayudan a hacer debug, sino a otras muchas tareas cotidianas como: escribir emails, preparar presentaciones, escribir documentos,… etc.

Aprender a describir cosas de una manera sencilla y simple es una habilidad increíblemente difícil de aprender, pero usando el patito podemos practicarla para que nos ayude en otros aspectos de nuestro día a día.

Cuando te esfuerzas por entender la funcionalidad e ir paso a paso examinando el comportamiento de la misma desde cierta perspectiva es sorprendente la cantidad de cosas que puedes descubrir.

5 respuestas a «Haciendo debug con patitos de goma»

  1. Avatar de Roberto
    Roberto

    No hay nada como hacer explicar el problema a los compañeros para que luego ellos mismos resuelvan su propia duda y te digan «¡Gracias! ¡Qué bueno eres!» x)

    Me gusta

  2. Avatar de Alwar
    Alwar

    ¿Vale un Chewbacca?

    Es mi compañero de desarrollo 😉

    Me gusta

  3. Avatar de No sólo escribimos código – Jesús L.C.

    […] contestar. Y cuando contestes, relee tu respuesta varias veces incluso puedes leerle el email a tu patito de goma. Yo tengo activado el delay de gmail 30 seg para poder deshacer el envío por si se me olvida […]

    Me gusta

  4. Avatar de Retrospectiva y Objetivos 2018 – Jesús L.C.

    […] año he escrito un poco sobre testing y bastante sobre equipos, aprender y “debug de pensar”. Aunque he escrito 10 posts, de un modo u otro no me he sentido cómodo del todo escribiendo y […]

    Me gusta

  5. Avatar de ¿De verdad tenemos que hacer code review? – Jesús L.C. – Apuntes de un aprendiz

    […] En un contexto de equipo que trabaja de manera síncrona, en el mismo huso horario, deberíamos preguntarnos ¿por qué un incremento de software que podría estar en producción aportando valor, este parado porque es necesaria una code review? Estamos cortando el flujo de entrega de valor ¿sólo para asegurarnos de que hemos puesto en común los nombres de las variables? Si no estamos seguros de como afrontar parte del problema, quizás estaría bien que pidiésemos ayuda para que otra persona del equipo nos eche un cable (hacer de pato). […]

    Me gusta

Comenta la entrada

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

Jesús López

Soy un Ingeniero en Informática y apasionado de la programación. Me gusta disfrutar de mi familia, viajar y perdernos paseando.  Me mola programar, hacer tests y refactorizar código . Practico Test Driven Development (TDD) y me lo paso bien con el legacy codeLeer más

Sígueme en: