Code a jeter

13.08.11

Bonjour et bienvenue pour ce premier billet,

Je ne suis pas du genre très bavard sur internet, car il y a beaucoup de sites, de blogs technique qui parle bien mieux que moi des choses qui m’intéressent.

Néanmoins, le thème de ce soir est relativement peu abordé parmi les programmeurs. Je vais vous parler de l’abandon de code, ou plutôt sa suppression pure et simple. Ce qui entraine une espèce de sentiment de développer pour rien, ou pour pas grand-chose.

Je débute personnellement en programmation « avancé ». Avant, je « scriptais ». Activité qui implique beaucoup ce genre de situation: Je code, ça marche. Si ça ne fonctionne pas/plus, je jette, je recommence.

Évoluer vers la conception de site/logiciel/jeux nécessitant beaucoup plus de lignes de code, de complexité, obligation d’architecturer du code qui ne doit plus être « jetable ».

De nouvelles contraintes entrent en jeux : Simplicité de la conception, maintenabilité du code, clarté, design modulaire, testé, qualité.

Or pour arriver à ce programme que l’on imagine plus ou moins, il faut irrémédiablement passer par plusieurs étapes de mise en forme. Jeter un bon nombre de fichiers, plusieurs heures, voir jours de travail, car l’on fait « fausse route ».

J’ai beaucoup de mal à faire ce genre de chose. Curieusement, cela est beaucoup plus compliqué à faire que pour les divers scriptes que je faisais.

Je pense que le premier obstacle est d’admettre que le code est mauvais, ou qu’il ne correspond plus aux exigences techniques ou fonctionnelles. C’est d’autant plus difficile, que le nombre de ligne, de fichiers, de temps passé est long.

La seconde barrière est pour moi de reconnaitre que ce que l’on a fait n’était pas optimal… Mais qu’il le fût à un moment donné.

Donc, dans un esprit de « comment je peux m’améliorer sur ce point », j’ai cherché quelques idées.

La plus commune des divers gourous du code est l’entrainement. Je code, je teste, je jette (ou je teste, je code, je jette, je conçois…). L’ordre n’a pas vraiment d’importance du moment qu’à la fin on jette, on supprime définitivement ce code, quitte à le réécrire indéfiniment à la manière d’un kata.

Or cette idée d’entrainement à l’écriture, on la trouve également dans tout bon atelier pour écrivain. Vous savez pour ne plus avoir peur de la page blanche. Plusieurs techniques existent. Rédiger le flot de pensée en continu sans rien supprimer pendant quelques minutes, se forcer à faire des rimes, des alexandrins, s’imposer des mots, en interdire d’autres, etc.

Ces exercices servent à gagner d’une part une certaine discipline, et d’autre part une flexibilité de l’esprit.

Ce genre de travail est tout à fait imaginable pour un programmeur. Un grand classique est par exemple le tri d’une liste. Il existe plusieurs dizaines d’algorithmes de tri, du plus naïf au plus ésotérique.

Mais est-ce que réinventer plusieurs fois ce genre de roue est intéressant pour l’esprit ? J’ai quelques doutes. Passez la dizaine de tris par tas, bulle, récursive, quicksort, shellsort,comb,merge sort, etc. Qu’en retient-on ?

En dehors de l’étude comparative en complexité ( O(X)), en mémoire et en stabilité, pas grand-chose… mais si l’on n’a jamais fait l’exercice au moins une fois, on rate quelque chose.

De la même manière, coder plusieurs fois de différentes façons un « système », liste, projet, os… permet de se rendre compte que:

  • Le code de l’un n’est pas forcément le meilleur ni même qu’il est à jeter dans les oubliettes de l’oublie.
  • Différent paradigme de programmation et technique offrent plusieurs possibilités (voir le Spaghetti sort et les sorting networks)
  • Les nombreux objectifs (taille en mémoire, stabilité, temps) impliquent différents codes, pas forcément évidents.

Tout ça pour dire qu’avoir fait plusieurs fois l’exercice sur les listes, dans différents langages, avec différentes contraintes fonctionnelles et techniques, s’avère être très formateur pour l’esprit (on s’en doutait). Mais surtout cela me permet de relativiser (et de refactorer, recommancer “from scratch”) avec moins de doutes et moins d’appréhension.

Hé! bien sûr, ce “post” fait partie de ce nouveau défi d’un billet par semaine afin de me forcer à me remettre à l’écriture… en douceur.

Pierre Bousquie

,

---

Commentaire

Commentaires fermés pour cet article

---