en: For my job, I needed to resolve a problem. It first seems not too hard.
en: Then I started working directly on my program.
en: I entered in the *infernal*: *try & repair loop*.
en: Each step was like:
fr: Je devais résoudre un problème à mon travail. Au début cela
fr: semblait assez facile. J'ai donc commencé à programmer
fr: tout de suite. Je suis alors entré dans un cercle infernal d'essais
fr: et de réparations. Voilà à quoi ressemblait cet étrange état
fr: de boucle infini :
en: > -- Just this thing to repair and that should be done.
en: > -- OK, now that should just work.
en: > -- Yeah!!!
en: > -- Oops! I forgotten that...
en: > `repeat until death`
fr: > -- Plus que ça a réparer et ça devrait être bon.
fr: > -- Très bien, maintenant ça doit marcher.
fr: > -- Oui !!
fr: > -- Ah mince! J'ai oublié ce détail...
fr: > `répéter jusqu'à la mort`
en: After two days of this [Sisyphus](http://fr.wikipedia.org/wiki/Sisyphe) work, I finally just stopped to rethink the problem.
en: I took a pen, a sheet of paper. I simplified the problem, reminded what I learned during my Ph.D. about trees.
en: Finally, the problem was crushed in less than 20 minutes.
fr: Après deux jours à me prendre pour [Sisyphe](http://fr.wikipedia.org/wiki/Sisyphe), je me suis arrêté pour repenser le problème.
fr: J'ai pris un stylo et une feuille de papier. Je me suis souvenu de de ce que j'avais appris sur les arbres pendant mon doctorat.
fr: Finalement, le problème fut résolu en moins de 20 minutes.
en: I believe the important lesson is to remember that the most efficient methodology to resolve this *pragmatic* problem was the *theoretical* one.
en: And therefore, argues opposing science, theory to pragmatism and efficiency are fallacies.
fr: Je pense que la leçon à retenir de cette expérience est de se souvenir que la méthodologie la plus efficace pour résoudre ce problème *pragamtique* était la méthode *théorique*.
en: Apparently 90% of programmer are unable to program a binary search without bug.
en: The algorithm is well known and easy to understand.
en: However it is difficult to program it without any flaw.
en: I participated to [this contest](http://reprog.wordpress.com/2010/04/19/are-you-one-of-the-10-percent/).
en: And you can see the [results here](http://reprog.wordpress.com/2010/04/21/binary-search-redux-part-1/)[^1].
en: I had to face a problem of the same kind at my job. The problem was simple to the start. Simply transform an <sc>xml</sc> from one format to another.
fr: Apparemment 90% des programmeurs sont incapable de programmer une recherche binaire sans faire de bug.
fr: L'algorithme est pourtant connu et facile à comprendre.
fr: Cependant, il est difficile à programmer sans bug.
fr: J'ai participé à [ce concours](http://reprog.wordpress.com/2010/04/19/are-you-one-of-the-10-percent/).
fr: Vous pouvez voir les [résultats ici](http://reprog.wordpress.com/2010/04/21/binary-search-redux-part-1/)[^1].
fr: J'ai dû faire face à un problème similaire à mon travail.
fr: Il paraissait simple au départ.
fr: Transformer un <sc>xml</sc> d'un format à un autre.
en: At first sight I believed it will be easy. I was so certain it will be easy that I fixed to myself the following rules:
fr: À première vue, cela m'a paru simple. J'étais certain de pouvoir y arriver en me fixant les règles suivantes :
en: 1. do not use <sc>xslt</sc>
en: 2. avoid the use of an <sc>xml</sc> parser
en: 3. resolve the problem using a simple perl script[^2]
fr: 1. ne pas utiliser <sc>xslt</sc> ;
fr: 2. ne pas utiliser de parseur <sc>xml</sc> ;
fr: 3. résoudre le problème en utilisant un simple script perl
en: You can try if you want. If you attack the problem directly opening an editor, I assure you, it will certainly be not so simple.
en: I can tell that, because it's what I've done. And I must say I lost almost a complete day at work trying to resolve this. There was also, many small problems around that make me lose more than two days for this problem.
fr: Vous pouvez essayer si vous le souhaitez. Si vous attaquez ce problème directement en écrivant le programme, ce ne sera certainement pas si simple.
fr: Je peux le dire, parce que c'est ce que j'ai fait.
fr: Et je dois dire que j'ai perdu une journée de travail complète en m'y prenant de la sorte.
fr: En réalité, il y avait pas mal de petits détails dont je ne parle pas qui m'ont induis en erreur et qui m'ont fait perdre encore plus de temps.
en: Why after two days did I was unable to resolve this problem which seems so simple?
en: This was a *standard* workflow for computer engineer. The flaw came from the first step.
en: I thought about how to resolve the problem but with the eyes of a *pragmatic engineer*. I was saying:
fr: Il s'agissait d'une méthode de travail standard pour un ingénieur en informatique. L'erreur venait de la première étape.
fr: J'ai d'abord pensé à comment résoudre le problème mais avec des yeux d'*ingéinieur pragmatique*. Je me suis simplement dit :
en: > That should be a simple perl search and replace program.
en: > Let's begin to write code
fr: > Ça à l'air de pouvoir se résouvre avec un petit script de *search&replace* en perl
fr: > Commençons à écrire le code maintenant.
en: This is the second sentence that was plainly wrong. I started in the wrong direction. And the workflow did not work from this entry point.
fr: C'est la deuxième phrase qui est complètement fausse. Parce que j'avais mal commencé et que cette méthodologie de travail ne fonctionne pas lorsque l'on part vraiment mal.
en: Considering Tree Edit Distance, each unitary transformation of tree correspond to a simple search and replace on my <sc>xml</sc> source[^nb].
en: We consider three atomic transformations on trees:
fr: Dans les distances d'éditions sur les arbres, chaque opération atomique correspond à un simple *search and replace* sur mon fichier <sc>xml</sc> source[^nb].
fr: On considère trois opérations atomiques sur les arbres :