Développement logiciel soutenable, mais depuis quand ?

Développement logiciel soutenable, mais depuis quand ?

J’ai choisi de consulter l’histoire de cette notion de “sustainability” dans le développement logiciel, pour voir si ses racines étaient toujours d’actualité, et si nous n’étions pas passé à côté de quelque chose ou carément à autre chose, à l’heure du Green IT et du numérique éthique ou responsable.

Sustainability dans la culture et littérature agiles

Le Manifeste agile

La première référence qui peut venir à l’esprit est le Manifeste agile et son 8ème principe:

Les processus agiles encouragent à respecter un rythme soutenable lors de la réalisation. Les commanditaires, les réalisateurs et les utilisateurs devraient pouvoir maintenir indéfiniment un rythme constant.

Ce principe traduit l’importance de protéger l’équipe d’une certaine pression ou variabilité dans ses efforts pour garantir une meilleure qualité des résultats. Attaché aux autres principes, nous pourrions définir le développement soutenable par la capacité de l’équipe à faire fonctionner le logiciel indéfiniment en l’adaptant aux changements de besoins des utilisateurs.

Pas si mal, mais reste à expliciter dans le manifeste comment prendre en compte les enjeux sociaux et environnementaux. Peut-être en ouvrant les concepts comme la “business value” ou “l’attention continue à l’excellence technique” ?

eXtreme Programming

Avant le manifeste, Kent Beck a synthétisé l’eXtreme Programming par le Motto

minimiser le coût du changement

A coup / coût sûr, cela contribue à faire durer le logiciel, pour peu que le sponsor réalise l’importance de faire durer l’équipe (en considérant son CAPEX au-delà des COPEX). Aussi la maîtrise des pratiques d’eXtreme Programming fait sens pour atteindre la “sustainability”. On peut penser en particulier à l’intégration continue, sans retirer l’importance des autres.

Quoi d’autre ?

Le plus ancien ouvrage traitant spécifiquement de “sustainability” que j’ai trouvé (et que je me suis procuré) est Sustainable Software Development de Kevin Kate en 2005, préfacé par Jim Highsmith.

L’auteur conclut son livre par cette phrase:

I believe (today because I am always learning and adapting) that the principles outlines in this book are key ingredients to attaining sustainability.

A regarder de près et comme on pouvait s’y attendre, rien ne parle de développement durable au sens des impacts du numérique sur l’environnement ou le social.

Aussi, 18 ans après, en 2023, nous pouvons nous poser la question de savoir si ses principes sont toujours pertinents pour ce que nous appelons aujourd’hui “sustainability” et par quoi les compléter sinon les remplacer ?

Pour aller plus en détail sur les principes et pratiques, j’en entamé une fiche de lecture du livre, à compléter.

Et après ?

Rien encore à ma connaissance en provenance des fondateurs de l’agilité et autres grands noms du développement logiciel (sauf peut-être Henrik Kniberg, si on exclut Bill Gates) pour faire la jonction avec les enjeux environnementaux, à part quelques initiatives périphériques ou de laboratoires de recherche (j’en parlerai dans un futur article, ou en formation ;-)

De quelle “sustainability” parlons-nous aujourd’hui ?

Le sens commun de “Sustainable Development” dépasse le domaine de l’IT. Il se traduit par Développement Durable et se rattache aux Objectifs de Développement Durable (ODD) définis par l’ONU.

A ma connaissance, il n’y aucune trace des ODD dans littérature agile de ses 20 premières annéees (si vous en trouvez, écrivez-moi !)

Ce qui émerge comme une nouvelle discipline peut se trouver à partir de 2020 sous les noms de Sustainable Software ou Sustainability & Green Software Engineering dans les devblogs de Microsoft.

Avant de regarder en quoi cela consiste, tentons de rapprocher les 2 significations en faisant “durer le logiciel” :

Pour qu’un logiciel dure il faut au moins 2 choses :

  • qu’il continue à répondre aux besoins des utilisateurs, factuellement qu’il continue à être utile, utilisable et utilisé.

  • que sa maintenance soit rentable pour le sponsor, c’est à dire qu’il puisse être opéré, corrigé, modifié à moindre coût, inférieur aux bénéfices.

Aussi, la place des enjeux / impacts environnementaux et sociaux dans ces 2 propositions n’est pas évidente.

  • d’un côté, il n’est certainement pas satisfaisant de faire confiance au seul jugement des utilisateurs et fournisseurs sur le caractère “soutenable” des solutions à des besoins potentiellement eux-mêmes discutables.

  • de l’autre, il n’est pas non plus satisfaisant de s’en remettre à la responsabilité du sponsor pour réfreiner la logique de maximisation des bénéfices et la croissance de la valeur commerciale de son entreprise, avec pour nouvelle contrainte de préserver la biodiversité.

Bref, il y a bien un hic, un engagement éthique que la plupart des fondateurs de l’agilité ne semblent pas avoir réalisé ou affirmé (ça peut se comprendre), en se laissant piloter par le marché, la business value, business-as-usual.

Cependant, le développement agile n’a pas dit son dernier mot. Les fondamentaux d’excellence technique, de simplicité, de confiance à l’équipe pour bien faire, sont des atouts majeurs pour relever les défis du sustainable software.

C’est ce chemin que nous continuerons à explorer dans un autre article.

Pour conclure et poursuivre…

  • Parler de “sustainability” demande à définir ce que l’on entend par “sustainability”, pour ou avec chaque partie prenante.

Qui décide de faire durable quoi et pour combien de temps ou pour quel coût (économique, environnemental, …) ?

Pour ce qui concerne le logiciel, quels sont les pouvoirs de décision des parties prenantes ?

  1. Ceux qui font ? Développeur(s)
  2. Ceux qui payent ? Sponsor / Client
  3. Ceux qui utilisent ? (ou voudraient bien - accessibilité)
  4. Comment faire parler les autres ? Les non-utilisateurs, les autres vivants ? les générations futures ?

Cela soulève des questions éthiques auxquelles les personnes et organisations ne sont pas encore habituées ni préparées.

Pour faire “durable”, il faut passer par la case “Réfléchir”, un des verbes du coeur de l’agile, avant d’“Expérimenter” et peut être renoncer à faire certaines choses comme on les faisait jusque là.

Un changement de sens, un changement de pratiques, un changement du culture, qui va demander du temps et quelques boucles de feedback.

2022 marque néanmoins l’émergence fulgurante de la préoccupation des questions environnementales dans la communauté agile avec plusieurs conférences engagées aux titres évocateurs et sympathiques :

Merci aux auteurs

Références à explorer du sustainable software developement au software sustainability

  • 1998 - eXtreme Programming explained

  • 2005 - Sustainable Software Development, Kevin Kate

  • 2018 - Accelerate sur les capacités d’une organisation apprenante et ses indicateurs

  • 2020 - Article de blog Microsoft sur le Sustainable Software Engineering