La théorie du Canard

Publié le 6 décembre 2017

Lorsque l'on n'y arrive plus, que l'on tourne en rond et que l'on ne comprend plus son propre code, c'est qu'il est temps de sortir le canard de sa boîte.

D'où vient la théorie du canard ?

Pour répondre à cette question, je cite Wikipédia:

L'ouvrage d'Andrew Hunt et David Thomas, The Pragmatic Programmer: From Journeyman to Master, publié en 1999, semble être le premier à mentionner la méthode du canard en caoutchouc sous ce nom (rubber ducking en anglais).

Selon cet ouvrage, David Thomas a fréquenté un étudiant à l'Imperial College London nommé Greg Pugh, réputé excellent programmeur. Greg Pugh transportait en permanence avec lui un canard en caoutchouc jaune et a expliqué le procédé à David Thomas à sa demande.

Cette méthode a ensuite été rendue célèbre en 2002 par Andrew Errington sur un forum en ligne.

Et je vous propose de lire ledit message d'Andrew Errington:

En quoi ça consiste ?

Il s'agit de ré-expliquer son propre code oralement, de manière compréhensible sans rien éluder de la démarche au canard. Cela aide à reprendre calmement le fil de son algorithme.
Le fait d'expliquer clairement son code oblige le cerveau à re-factoriser l'algorithme de manière à le rendre logique et cohérent.

Comment la mettre en pratique ?

Prenez un collègue s'il a du temps, un canard, un totem, ou tout autre élément du bureau, le choix importe peu. Ce qui compte, c'est de lui expliquer oralement et distinctement le fonctionnement de votre code. Si cela ne vous aide pas pour l'instant, vous pouvez essayer d'expliquer quel aurait du être le fonctionnement normal de votre code, le résultat pourrait être aussi efficace.

Est ce que ça marche ?

Pour l'avoir testée à maintes reprises, oui, c'est une technique efficace à 100%. Ayez toujours un canard sur vous !

Quels bénéfices ?

Débloquer des situations compromises et gagner du temps. Vaincre une persévérance vaine, un état de fatigue, voir même, un moment de désespoir.
Mais vous pourrez aussi trouver des optimisations dans votre algorithme !

Crédits:
Photo by Zan on Unsplash

Vous avez des remarques, une réponse à apporter ou vous souhaitez simplement prolonger la discussion ?