Software. Malgré un terme très explicite en anglais, le logiciel a longtemps été construit comme quelque chose de figé et pérenne, souvent à l’image du BTP. Pourtant, s’il y a bien un levier dont il faut absolument tirer parti, c’est son côté soft, malléable à merci dans l’espace et dans le temps ; bref, agile. En prenant du recul sur l’écosystème logiciel, nous l’abordons désormais à travers le prisme de la culture potagère.

Une attention quotidienne

Un potager est un écosystème vivant où il y a du nouveau tous les jours. Nos courgettes fleurissent, nos fraises rougissent, nos radis sortent de terre… À propos de croissance, nous avons semé nos salades un peu trop près de nos carottes. Elles profitent vraiment bien, il est tant de les repiquer… Comme cette fonctionnalité que nous avons développée qui plaît vraiment à nos utilisateurs et que nous allons encore améliorer. Et améliorer. Et améliorer. Le code devient vraiment dense… Il est temps de prendre un peu de recul et de le réusiner pour qu’elle se développe encore mieux. Rien ne change pour l’utilisateur, il y aura toujours les mêmes fonctionnalités, comme il y aura toujours le même nombre de salades après repiquage. Mais le réusinage offrira une base de code plus pérenne pour permettre à l’application de grandir plus sereinement.

D’ailleurs, il n’y a pas que nos semis qui grandissent. Il y a aussi des adventices. Vous savez, ces plantes qui poussent dans nos plates-bandes sans y avoir été invitées. Autant que faire se peut, nous préférons que ces herbes jouent leur rôle bien au chaud dans notre bac à compost (et oui, l’activité bactérienne génère de la chaleur). Ces petits empêcheurs de tourner en rond trouvent aussi leur équivalent en développement logiciel : les bogues. Survenant un peu partout, et notamment dans les bibliothèques logicielles que nous utilisons, ils doivent être retirés dès que possible. Ils peuvent être anodins comme exposer de véritables vulnérabilités en matière de sécurité. Il est donc essentiel de maintenir ses dépendances à jour tout au long de l’exploitation du logiciel, et pas seulement pendant son développement.

Un développement sans raccourcis productivistes

Gaver la terre d’intrants chimiques pour augmenter la productivité est une vision très court-termiste de l’agriculture. Elle rend notre alimentation dépendante de l’industrie pétrochimique tout en détruisant ses capacités naturelles de régénération des sols. Prendre le temps de préserver un terrain naturellement fertile permet de développer une production riche, soutenable et résiliente.

Il en va de même pour les tests logiciels automatisés. Leur mise en place et leur écriture demande effectivement du temps que l’on ne passe pas à développer de nouvelles fonctionnalités, mais préservent une base de code naturellement fertile. Une base de code fertile est une base de code que l’on peut faire évoluer sans avoir peur des régressions : nous en serons avertis en moins de temps qu’il n’en faut pour se faire un café.

Qu’un cahier de tests automatisés puisse être joué en moins de cinq minutes et parcourt les parties cruciales de l’application, du plus petit test unitaire à la navigation de bout en bout dans le navigateur, est un harnais de sécurité essentiel pour tout projet au long-court. Ces tests sont un investissement qui apporte de plus en plus de valeur dans le temps, au fur et à mesure que l’application grossit, au fur et mesure que l’équipe évolue, au fur et à mesure que ses dépendances bougent.

Comme tous les organismes qui interagissent dans un sol vivant, animaux, végétaux, champignons, bactéries, et préservent sa fertilité, ces tests automatisés tourneront sans que vous ayez besoin d’intervenir et sauveront votre productivité à long-terme.

Cas d’école : un fournisseur qui périclite

Lorsque vous cultivez votre potager, vous utilisez toutes sortes d’outils plus ou moins sophistiqués, de la simple pelle au semoir de précision Coleman. Plus l’outil est sophistiqué, plus votre dépendance à son fournisseur est grande en cas de souci. Si ce fournisseur disparaît, plus aucune assistance en cas de doute, plus aucune pièce détachée en cas de casse. Remplacer une pelle par une autre, rien de plus simple. Trouver une alternative à la Campagnole à ressorts, c’est une autre paire de manches.

Imaginez maintenant que la bibliothèque d’interface graphique que vous avez choisie il y a trois ans au début de votre projet donne des signes de fin de vie : peu de mises à jour récentes, une réactivité aux remontées d’anomalie qui diminue visiblement… Il est alors temps de changer de fournisseur, et dans ce cas précis, il ne s’agit pas d’une simple pelle ! C’est dans ces situations que l’on est reconnaissant à l’équipe d’avoir gardé les composants logiciels à jour au fil du temps, et d’avoir des tests automatisés qui pourront nous rassurer quant au bon fonctionnement de l’application une fois le changement de bibliothèque mené à bien.

Toute ressemblance avec ce qui arrive à Filaé en ce moment n’est pas du tout fortuite. Nous sommes confrontés à la décrépitude de ember-paper, bibliothèque de composants graphiques, et œuvrons à son remplacement par ember-bootstrap. Ce n’est pas une mince affaire, mais nos tests Gwen sont là pour nous faire gagner temps et confiance dans notre réfection complète de l’interface graphique de Filaé.

L’imprédicitibilité de l’environnement

Tout est impermanent et rien n’est prévisible à coup sûr. Quel temps fera-t-il dans deux mois ? Quels petits insectes prendront leur quartier sur notre plant d’artichaut ? Comment le sol répondra à ce nouveau paillage cette année ? Ces bibliothèques logicielles seront-t-elles maintenues assez longtemps ? Pourrais-je les mettre à jour aisément ? Pourrais-je en changer en toute sérénité le cas échéant ? En développement logiciel aussi, il est bon d’avoir un plan, il est encore mieux d’être en capacité de l’ajuster en fonction de la réalité du terrain.

À ce titre, nous nous voyons plus comme des jardiniers du logiciel : nous semons des graines et veillons bien à suivre leur évolution dans un environnement en mouvement. Parce que, quoi que nous fassions, un jour ou l’autre, un oiseau déposera une fiente avec une belle petite graine d’adventice qui se fera une petite place au soleil dans notre petit pré carré 🌱