Utiliser sa liste TODO

L’une des premières choses qui m’a marqué dans la lecture de Test Driven Development de Kent Beck, c’est sa manière de gérer sa liste de choses à faire lorsqu’il programme.

Attaquant un problème, il le grasse dans sa liste, de manière à mettre en avant ce sur quoi il est en train de travailler, ce qui est pratique pour savoir ce sur quoi on était en train de travailler, quand on revient le lundi au boulot. Voire après une simple pause café : un coup d’œil et on est repartit ! Pas besoin de réfléchir et pas de distractions (par ex. aller voir ses emails).

Par la suite, travaillant sur quelque chose il pense à divers problèmes ou choses à faire en rapport avec ce qu’il est en train de programmer. Systématiquement il note sa réflexion dans sa liste TODO, puis retourne à ce qu’il était en train de faire. Ayant noté sa réflexion, il peut l’oublier et y repenser plus tard, lorsqu’il consultera à nouveau sa liste. En attendant il reste à ce qu’il fait et ne se disperse pas.

Ceci est un principe de base des tests unitaires : décomposer les choses au plus simple, et les implémenter une par une. Lorsqu’on travaille sur une chose, on reste concentré dessus et on ne se disperse pas à vouloir régler tous les problèmes en même temps.

C’est pour cela, si j’ai bien suivi, qu’on parle de « tests unitaires » (unit tests en anglais) : on implémente les choses une à une. À vouloir tout faire en même temps on va tout mélanger. Par exemple un bon repas est composé d’une entrée, d’un plat et d’un dessert. On peut tout mélanger, mais je ne pense pas que ce soit une bonne idée. Imaginez donc un gâteau au chocolat avec une soupe de poisson. Pas top, hein ?

J’ai donc essayé d’appliquer cette méthode la semaine dernière au boulot, avec une petite fonctionnalité à implémenter. Nous avions plusieurs fois une liste de pays dans une liste déroulante (select). Avoir plusieurs fois une liste de 300 pays dans une seule page HTML ou tout simplement avoir cette liste sur quasiment chaque page du site, c’est loin d’être idéal.

Un collègue a alors pensé avoir cette liste stockée dans une variable JSON et une petite fonction JavaScript qui s’occuperait de remplir les SELECT de la page. Trouvant l’idée simple et intéressante, je l’ai alors noté dans ma liste TODO, je l’ai grassé, et je m’y suis mis.

  • remplir les champs pays via javascript :
    • générer la liste des pays en JSON
    • implémenter la fonction de remplissage des SELECT

Au fur et à mesure que je programmais la fonction initiale, j’ai pensé à divers problèmes : il vaudrait mieux éviter d’ajouter la liste ; que se passera-t-il si le JavaScript du navigateur se met à débloquer ? etc. Au lieu de me laisser distraire, comme cela m’arrive constamment (c’est tellement facile à régler) je les ai ajouté à ma liste à chaque fois que moi, ou mon collègue y pensait.

  • remplir les champs pays via javascript :
    • générer la liste des pays en JSON
    • implémenter la fonction de remplissage des SELECT
    • que faire si le JS débloque ?
    • ne pas remplir le SELECT s’il y a déjà du contenu

Une fois annoté, je suis revenu à ce que j’étais en train de faire : écrire la fonction de remplissage. Une fois celle-ci terminée et fonctionnelle, je l’ai rayé.  D’ailleurs c’est toujours agréable de rayer des trucs dans sa liste : hop, ça c’est fait, rayé. Ayant terminé une chose, j’en ai attaqué une autre. N’importe laquelle en fait. Par exemple « ne pas remplir le SELECT s’il y a déjà du contenu ».

Chaque problème fut ainsi réglé séparément, et ne prit pas plus de quelques minutes à chaque fois, avec la satisfaction d’avancer à chaque étape (on raye souvent) et en pouvant vérifier régulièrement que tout marche bien.

Une Réponse to “Utiliser sa liste TODO”

  1. Résolution 2009 « Julien Portalier Says:

    […] Julien Portalier Le blog d’un dévelopeur PHP qui lorgne sur Ruby/Rails « Utiliser sa liste TODO […]

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s


%d blogueurs aiment cette page :