Appliquer les principes SOLID aux sociétés et systèmes

Malgré 40 ans d'alertes, notre société n'a pas pris les mesures qui s'imposaient pour préserver l'écosystème, et il faut désormais s'organiser pour y faire face. Comparaison avec les principes d'architecture logicielle pour celles et ceux à qui ça parlera.

Deprecation warning: the FOO API will be replaced by BAZ on June 32. Update your code to the new syntax ahead of time or your software will self-implode!

Qui n’a jamais trainé à prendre en compte ces messages avertissant d’un changement d’API, jusqu’à devoir s’en occuper en urgence au dernier moment ? Je ne vous jette pas la pierre, on fait tous ça.

Si programmer c’est déléguer des tâches à un ordinateur, procrastiner c’est déléguer des tâches à son moi du futur.

Eh bien l’écologie c’est pareil : depuis 40 ans tous les signaux passent au rouge, toutes les études, toutes les modélisations expliquent scientifiquement qu’il faut changer nos manières de faire, mais quasiment personne n’a réagi et le problème est devenu gigantesque désormais.

Garbage out, garbage in

Connaissez-vous David Latimer ? Peut-être son “jardin dans une bouteille” au moins :

54 ans sans arrosage, et même pas soif !

La nature ne produit pas de déchet : tout s’intègre dans un cycle ou un autre, se nourrissant d’une matière et nourrissant d’autres espèces en cours et en fin de vie.

L’une des particularités de la société humaine moderne (~100 ans), c’est qu’elle produit des déchets. Pour nous qui sommes nés entre deux poubelles ça paraît tout-à-fait normal, mais ça ne l’est pas.

Sauf que nous avons fait le tour de l’espace de stockage, et qu’il faut désormais nettoyer non seulement nos déchets mais également leurs conséquences sur l’environnement pendant plus d’un siècle.

La procrastination c’est comme un prêt dont on ne rembourserait les intérêts qu’à la fin en fait, plus on laisse traîner plus il faut se remonter les manches…

Rock-SOLID

En informatique, tout le monde connaît l’acronyme SOLID. Après, l’utiliser au quotidien pour ses choix d’architecture… Pas tout le monde, et pas tout le temps.

[S]: single responsibility principle

Une classe, une fonction ou une méthode doit avoir une et une seule responsabilité. (Wikipédia)

Le parallèle écologique est assez évident, c’est d’ailleurs celui qui m’a sauté à l’esprit au réveil et m’a motivé à écrire ce billet. Quand une fluctuation du prix du pétrole provoque banqueroutes, famines et révolutions, clairement il y a un problème de couplage.

[O]: open/closed principle

Une classe doit être ouverte à l’extension, mais fermée à la modification. (Wikipédia)

Il faut pouvoir réaliser de nouvelles tâches avec l’existant, sans devoir tout modifier. Donc encourager la création d’unités avec de l’autonomie d’action, mais dont l’existence est justifiée par des valeurs fortes qui guident chaque décision.

[L]: Liskov substitution principle

Une instance de type T doit pouvoir être remplacée par une instance de type G, tel que G sous-type de T, sans que cela ne modifie la cohérence du programme. (Wikipédia)

On pourrait ici parler de la déclaration universelle des droits de l’homme, de la femme et de l’enfant, en disant que tous les pays devraient les appliquer a minima, libres à eux ensuite de rajouter d’autres droits et devoirs selon leur philosophie.

[I]: interface segregation principle

Préférer plusieurs interfaces spécifiques pour chaque client plutôt qu’une seule interface générale. (Wikipédia)

Par interfaces, on entend un ensemble de comportements attendus. Par exemple : tous les mammifères sont différents, mais tous allaitent leurs enfants. Ou encore : vélos, mobylettes et motos fonctionnent différemment, mais tous ont des roues, un guidon, et des pédales. Les véhicules à moteur ont tous un moyen de démarrer et de couper le moteur, de remplir le réservoir, et d’accélérer ou ralentir le régime moteur.

Ici, ça encourage à accepter que les gens peuvent avoir des intérêts différents, et être connectés à différents réseaux : amicaux, familiaux, scolaires, travail, religieux, de quartier, de région ou pays d’origine… Plutôt que d’opposer les appartenances, valoriser autant les personnes au centre d’un réseau que celles et ceux qui en sont plus éloignés, les excentriques, qui font fréquemment le pont entre diverses idées, pratiques, savoirs…

Deux exemples concrets :

  1. la musique, depuis quelques dizaines d’années, se ramifie en branches de plus en plus nombreuses au fur et à mesure que les artistes fusionnent leurs influences et leurs instruments, leurs rythmes et leurs gammes. Il existe maintenant pléthore de variantes dans le jazz, le rock, la pop, la musique électronique, autant que de musiciens ou peu s’en faut.
  2. Dans le domaine des sciences, les découvertes fondamentales demandent un équipement de plus en plus poussé (des télescopes plus grands, des microscopes plus puissants, des accélérateurs de particules plus puissants…), des théories de plus en plus complexes (quelqu’un m’expliquait qu’un mathématicien pointu ne pouvait parler de son sujet de prédilection qu’à une poignée de gens sur terre), alors qu’il suffit de croiser économie et psychologie pour se voir décerné un prix Nobel.
  3. Et ne me lancez pas sur la cuisine fusion… Je compte bien préparer un jour les “dolmakis” dont je rêve depuis mon voyage en Grèce !

[D]: dependency inversion principle

Dépendre des abstractions, pas des implémentations. (Wikipédia)

On revient à une idée que je trouve importante : poser les intentions, les valeurs-phares, les directions générales, et s’y référer quand vient l’heure de faire un choix, plutôt que de s’appuyer sur ce qui s’est fait jusque-là. Avec ce genre d’attitude, on peut mettre fin à des millénaires d’oppression, en acceptant que les droits et responsabilités humains prévalent sur les habitudes de la société.

Par exemple, la galanterie est fondamentalement sexiste et doit être remplacée par de la bienveillance/bien-traitance généralisée, peu importe le sexe ou le genre.

Ou encore, il n’est pas nécessaire de travailler “à l’ancienne” pour être heureux et contribuer à la société. Un revenu universel de base est possible, en tout cas personnellement j’y crois, bien plus que dans la création d’emplois inutiles qui génèrent morosité, frustration et désespoir.

Publié le 29 juin 2018