Soyez flemmard, écrivez des scripts

Avoir la flemme, ça a aussi du bon. Et quand on est développeur, on peut s’en servir. On a une arme redoutable : la capacité de créer des programmes. On peut facilement automatiser une tâche.

C’était mon cas récemment. Je devais mettre à jour un référentiel dans l’application. On m’a expliqué la procédure habituelle (récupérer un gros fichier de données puis faire une multitude de modifications manuelles), et ça ne me donnait pas terriblement envie.

Faire le robot, en exécutant une série d’actions sans réfléchir, ne me motive pas trop. On n’a pas vraiment de valeur ajoutée. Par contre, faire un script qui le fera à ma place, ça c’était plaisant. Et j’ai même appris des choses au passage.


Automatisez

La mise à jour du référentiel se prêtait parfaitement à l’exercice. C’est une tâche simple — il faut télécharger un fichier, faire des traitements de données, et exporter. Et c’est une tâche récurrente — on nous demande régulièrement de le faire sur ce projet. Toutes les conditions sont réunies pour écrire un script.

J’ai sorti mon petit Python pour l’occasion. J’aime bien scripter avec ce langage, notamment lorsqu’il y a du traitement de données. Je trouve que le Python est adapté pour ce besoin, et il est très puissant. C’est aussi plus élégant et parfois plus simple qu’un script bash.

C’était ma préférence sur ce moment-là, mais on peut utiliser ce que l’on veut. Parfois j’utilise Python, parfois un script bash. Vous pouvez utiliser autre chose. Peu importe. Il faut juste faire attention à ne pas créer une usine à gaz, et à ce que ce soit très facilement utilisable.

Je trouve qu’il y a un petit côté créatif à écrire un script. On conçoit quelque chose plutôt que d’être un simple exécutant. On cherche comment automatiser. On réfléchit. On code. C’est au final plus proche de notre métier. On a de la valeur ajoutée.

La création du script m’aura pris un peu moins d’une heure. Ce temps passé est négligeable dans la vie du produit. Sachant que l’on doit régulièrement mettre à jour le référentiel, ce sera un grand gain de temps. En effet, cette tâche ne prend maintenant que quelques secondes. Il suffit de lancer le script. Tout est géré.

Et je peux même aller plus loin. Maintenant que le script est créé, on peut envisager d’automatiser à 100% la tâche. Plutôt que de prendre du temps à un développeur et même à un Product Owner (créer, tester et suivre un ticket), l’action pourrait être déclenchée automatiquement. À chaque merge ou release par exemple, avec l’aide de l’intégration continue.

Et appréciez

La productivité n’est pas le seul aspect positif. J’ai pris du plaisir à travailler sur ce sujet, en créant un script. Et j’ai même appris quelque chose. J’ai eu un problème de conversion de float en string. La manière dont Python tronquait par défaut ne convenait pas. J’ai découvert comment indiquer au parser le format que je souhaitais.

L’utilisation d’un script limite également les erreurs. Qui n’a jamais loupé un chercher / remplacer, ou oublié de modifier une ligne perdue au milieu de milliers d’autres ? Moi, ça m’est déjà arrivé. Lorsque l’on répète bêtement les mêmes actions des dizaines de fois, on peut facilement introduire une erreur. Le script ne se trompera pas, et on peut ajouter un filet de sécurité avec des tests unitaires.


Bref

Tous ces points positifs me font dire que la création d’un script est une idée intéressante dans ce genre de situation (une tâche récurrente, du traitement de données, une multitude d’actions à répéter, …).

Je ne dis pas qu’il faut y passer une semaine pour gagner quelques secondes, mais challengez l’idée, et essayez. Mettez-vous une timebox si vous avez peur d’y passer trop de temps. Commencez par quelque chose de simple.

Et vous, sur vos dernières itérations, quelles tâches pourriez-vous automatiser ? Qu’avez-vous déjà automatisé ?