Hablando al patito de goma

Es curioso como las buenas ideas son, a menudo, universales y aprovechables en múltiples escenarios. Es el caso de una técnica que aprendí en mi etapa de desarrollador de software y que, recientemente, vengo aplicando al diseño de interacción.

La técnica es conocida como ‘depuración con patito de goma’. Si sois informáticos probablemente sepáis de qué va el tema, si no, os lo cuento y así aprendéis algo de provecho y que creo valdrá para cualquier trabajo creativo y/o metódico.

¡Tengo un poltergeist!

Una de las cosas más frustrantes cuando se programa es la depuración de código erróneo. Es decir, has programado algo que en teoría debería de funcionar, pero no funciona. En ese punto tienes que revisar la ejecución completa del programa, paso a paso, tratando de dar con el fallo cometido (ya que, habitualmente, los ordenadores son infalibles y el problema está en las órdenes que les estamos dando). Estos fallos pueden ser de cualquier tipo, desde errores conceptuales a problemas más tontos como haber confundido una letra en una palabra, haber bailado un número aquí o allá, olvidado un punto y coma en determinado sitio y cosas por el estilo.

Depurar un fallo puede llevar desde unos pocos segundos hasta horas y horas de tedioso trabajo, recorriendo minuciosamente líneas y líneas de código intentando encontrar la aguja en el pajar. Es un trabajo ingrato.

Al parecer la clave de que esto funcione está en la disonancia cognitiva.

Para esos casos se inventó la técnica del patito de goma (o del programador de cartón). Es una de esas cosas que, aún pareciendo una gilipollez, realmente funcionan y resuelven bastantes quebraderos de cabeza.

Fotografía de una reunión de patitos de goma

Felix63.

La técnica consiste en tener una figurita de un patito de goma (o pedir a un compañero que se siente a escucharnos) al que se le explica de viva voz el código fuente que está dando los problemas, línea por línea, verbalizando lo que hace ese código y los motivos a los que responde su existencia. Es algo así como decirle al patito ‘aquí empieza la ejecución, inicializo esta variable a cero para ahora recorrer esta lista de elementos, cogiendo uno cada vez, y una vez hecho comparo que ese nuevo valor sea más grande que el que tenía en la variable, y si es así lo guardo en la variable, y bla bla bla…’.

Con menos que esto hay quien te hace un cursillo de productividad profesional.

En la totalidad de los casos, mientras se habla al patito (o a la figurita que cada cual tenga a mano), uno se da cuenta de cuál era la cagada que había cometido y visto pasar inadvertidamente ante sus ojos durante un buen rato. Es flipante pero el solo hecho de tener que contar las cosas hace que se vean desde una perspectiva más amplia y que los errores se descubran ante nuestros ojos como por arte de magia. ¡Anda coño, si era esta chorrada lo que estaba cascando, ahora puedo seguir avanzando, gracias a mi buen amigo Hugo y su magnífico blog!

Más allá del código

La cosa es que, como os decía, esto se puede aplicar a muchos otros campos, lejos del código fuente y su depuración.

En mi caso, cuando estoy diseñando y veo que algo no encaja, le explico al patito mis decisiones de diseño y los porqués de cada elemento, de cada pieza, de cada texto, de cada forma y tamaño, de cada sombra y color, de todo. Hasta que, de pronto, el cuadro completo cobra sentido y descubro dónde la estaba cagando y cómo puedo mejorar todo de un plumazo.

Contarlo de viva voz y explicar las cosas me hace identificar las fisuras de mi discurso y ver lo que, mientras me pegaba con el problema, no estaba viendo. Ya sabéis, lo de los árboles, el bosque, y tal.

De aquí a dar charlas TED.

Si trabajáis en equipo y ponéis todo en común varias veces cada jornada puede que esto no os haga falta, pero si sois trabajadores independientes o no tenéis supervisión directa en vuestro día a día os aseguro que la técnica del patito de goma os puede sacar de muchos bloqueos.

¡Cuac!

17 comentarios, se nota que es gratis

Cuac

Me acabas de recordar a mi profe de Programación de Sistemas. Nos contó exactamente eso mismo. Solo que él lo llamaba ‘programador hinchable’. :)

Yo he montado una empresa con un socio, y una de las mejores cosas de haber montado la empresa con un compañero en vez de hacerlo solo, es que las sesiones de depuración de código son mucho más productivas. Como dices, el simple hecho de explicar lo que haces a tu compañero ayuda muchas veces a que te des cuenta del fallo…

Desconocía que eso tenía nombre, pero como tengo la costumbre de hablar solo cuando me pongo en faena (ya sea en un ejercicio puramente mental o montando algún mueble de IKEA) llevo haciendo esto mismo toda mi vida. Y es cierto, funciona.

Cuando las cosas se hacen complicadas recurrir a algún amigo o compañero también ayuda, ya que si no soy capaz de encontrar el fallo yo solo, seguramente la otra persona lo enfoque de forma distinta y lo vea más fácilmente.

(Yo asistiría a una de tus charlas TED, de aquí a seis años o así.)

Pues no lo había oído nunca y me parece una idea genial. Hablar con un pato. Brillante. Y no es ironía.

Es de sobras conocido este método. No obstante buen artículo, muy bien redactado.

Yo no lo conocía como método estándar, ni mucho menos asociado a un pato de goma.

Pero cada día uso a mi compañero de enfrente para tal cosa… aunque como indirecta me haya enseñado a usar el modo “debug” de Matlab, sigo pidiéndole que me escuche cuando le cuento un código.

Casi siempre funciona.

A mi, como a Elia, me acabas de recordar a mi profesora de Metodologia y Tecnología de la Programación.

Era lo mismo, salvo que en su caso nos contó que un profesor suyo ponía un peluche antes de llegar a su despacho. Le contabas las dudas al peluche, si este no te las “resolvía”, entonces ya pasabas a hablar con el.

Me ha gustado mucho el post!

Esto lo hace House, el de la serie de televisión, con su equipo de médicos y Sherlock Holmes con Watson. En el fondo los programadores somos detectives de código :P

No lo conocía como técnica, pero habrá que probarla (la de veces que he estado horas mirando el código sin saber por qué carajo no funcionaba…) eso sí, si veis que el pato os responde, corred! XD

Te juro que acabo de mirar al muñecajo al que siempre le grito mis ‘problemas’ con nuevos ojos. Me encanta.

Alejandro Martinez
09/02/2012 a las 22:49

Brutal!
A mi me oasa esto muy amenudo. Le pido ayuda a un comoañero y mientras le explico el problema zas! No sabia que era una tecnica con nombre!

No sabía que esa técnica tuviese un nombre. Como traductora, yo lo hago constantemente: me leo en voz alta las frases que he ido traduciendo casi sin pensar para asegurarme de colocar los verbos, adjetivos, sustantivos y complementos en los emplazamientos adecuados. Y ya no cuando has traducido sin pensar, sino también cuando lo haces a conciencia. A veces le pones tanto empeño que te olvidas de la fluidez de la lengua y, después, lo lees y dices: dios, ¿cómo he podido escribir esto?

Yo también ratifico que esto de hablar en voz alta (o al pato, o al muñequito, o al compañero de enfrente, aunque muchas veces haga como que te escucha sin escucharte) funciona.

Tengo un patito por ahí por casa, pero me lo traeré a la mesa. No porque necesite que esté para contarle mis penas, porque lo de hablar sola en casa mientras trabajo ya es una práctica habitual en mí, sino para que me haga compañía.

La clave está en ponerle nombre con gancho a la técnica. Ese Hugo, que as en naming está hecho.

Aquí otro usuario de esta técnica que la ejecuta desde que programa y no tenía ni idea de ello. Doy fe de que es bien eficaz.

Confirmado…somos ñoños!!

¡Apúntate!, ¡habla!, ¡apúntate!, ¡habla!