¿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.
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.
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 gustaMe gusta
¿Vale un Chewbacca?

Es mi compañero de desarrollo 😉
Me gustaMe gusta