Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ecologie du logicel

Ecologie du logicel

un regard nouveau sur la consommation et l'exploitation du code

Avatar for guillaume saint etienne

guillaume saint etienne

October 26, 2022

Other Decks in Programming

Transcript

  1. Note d’Intention: Nous allons essayer de montrer d’après des bases

    scientifiques (entropie et théorie de l’information) que les principes écologiques (soutenabilité, moindre impact, parcimonie des ressources) s’appliquent au dev logiciel. Par quel moyen? TDD d’abord, isolation, limite des dépendance, Design Emergent, Code “pur”, effets de bords repoussés, architecture réactive, do just in time, acquire late/release early, no lock, tell don’t ask, YAGNI, le dernier moment responsable (LEAN) = late decision, et d’autres tactiques. Mais aussi des stratégies d’ensemble avec des outils comme les Wardley Map et le DDD.
  2. PLAN : 1. principes de l'écologie (énergie, entropie) 2. liens

    entre logiciel et pratiques éco responsables • minimiser lʼentropie • logiciels optimisés • valeurs utiles / zéro déchets • adapter lʼexistant • logiciels et permaculture • prendre soin des humains (harmoniser les équipes) • créer lʼabondance et redistribuer les surplus 3. Ecologie stratégique • Golden Circles, Divide & Conquer, • Wardley maps (maturité/valeurs), bounded contexts, patterns DDD • Outils: impact mapping, US mapping, Domain storytelling, event storming, 4. Ecologie tactique • code that fits in your head • CI/ CD • architectures organiques et évolutives (growing objects)
  3. Qu’est ce que le travail ? Le travail d'une (ou

    des) force(s) est l'énergie fournie par cette force lorsque son point d'application se déplace. Il est responsable de la variation de l'énergie (cinétique ou thermodynamique) du système qui subit cette force. On considère que le rendement est le rapport entre l'énergie utilisable après transformation et l'énergie fournie. Wikipedia
  4. La solution de Brillouin & Shannon Vingt ans plus tard,

    en 1949, Léon Brillouin propose une solution du paradoxe mettant l'accent sur la nécessité pour le démon d'acquérir de l'information, et mettant en évidence que cette acquisition augmente l'entropie du système et sauve la seconde loi. temps entropie information
  5. Trop d’entropie logicielle (pollution) Epics Feature Envy Silos Technical decisions

    Performance concerns Security concerns Over-engineering Frameworks (!!!) Dead code Code smells (unclean) Untested code Misaligned User stories UX Bottlenecks Unused Features Strong coupling Technical locks Ergonomic issues Performance issues Security issues... Meetings Artefacts Engineering Code CI/CD DevOps
  6. Néguentropie http://www.revue3emillenaire.com/blog/la-creation-collective-du-temps-par-joel-de-rosnay/ La néguentropie est l’inverse de l’entropie : c’est

    en quelque sorte une forme d’énergie potentielle. Toute acquisition d’information se paie par une dépense d’énergie, donc un accroissement de l’entropie BRUIT VALEUR AJOUTÉE (pouvoir d’organisation)
  7. Les principaux risques • Fausses hypothèses de valeur • Inconnue

    technologique / Dérive / Complexité accidentelle / Dette • Risque social
  8. Diminuer l'entropie Maîtriser l’entropie (la dissipation, le désordre) N’acquerir que

    ce qui est nécessaire (le plus tard et libérer les plus vite) Créer des systèmes de forte valeurs ajoutée Créer des systèmes réutilisables et ouverts (- entropie) Créer des systèmes avec peu de fuites: ➔ moins de dépendances ➔ moins de ressources et de verrous ➔ plus de résilience ➔ plus de parcimonie
  9. Entropie logicielle = transformer le potentiel en valeur ➔ Users

    ➔ PM / PO ➔ Managers (all) ➔ Developers ➔ Testers ➔ Infrastructure ➔ Supply ➔ Utilities Product Solution Application Service Large capability to work Small capability to work
  10. 1. LEAN / Design Thinking 2. TDD, KISS, DRY 3.

    TDD, minimal code / design, JIT, acquire later / release early 4. Composition (over inheritance) 5. Modularity, IoC 6. OCP, High Order Functions 7. Learning, creative destruction Augmentation soutenable de l’entropie
  11. minimal entropy lower entropy les tests garantissent un comportement maintenant

    et pour toujours faites passer le test avec un minimum d’effort optimisez le code produit pour diminuer la dette L’augmentation de l’entropie est limitée à son juste minimum
  12. Gérer ses frontières (boundaries) Gérer les échanges (Open Host, Shared

    Kernel, Conformist, etc) Pour limiter la dissipation d’énergie, on isole:
  13. Eviter la complexité accidentelle et incidentelle • Garder le code

    : Familier / Disponible / A la portée / Compréhensible • Expressivité du code (facilite la compréhension) • Élégance: Concis et non confus. • Façon de procéder “standardisée”, connue. • Courtes boucles de feedback • Des outils simples, qui aident • Des composants/libraires tierces “Simples” (pas de gros framework qui tache)
  14. Travailler à plusieurs créé encore plus d’entropie Quelle drôle d’idée!

    (tout seul on va plus vite, non?) Différence de compréhension Différence de compétences Différence de conception Différence de motivation Luttes pour le pouvoir https://psychologie.savoir.fr/le-travail-le-pouvoir-au-coeur-de-l-organisation/
  15. Organiser, cette obsession du vivant! Diminuer l’entropie !!! = Rendre

    simple • Une vision claire des choix d’architecture • Façon cohérente de résoudre un problème • Facilement remplaçable • Facilement extensible là où cela est approprié • Aussi simple que possible mais pas simpliste • Cohésion forte / couplage lâche • SOLID / Unix Style / CUPID • Les tâches les plus ordinaires/communes sont les plus simples à réaliser
  16. Accélérer ? Les moyens permettant de s’opposer à l’entropie ne

    sont pas à rechercher du côté de l’accélération de la machine économique qui conduit à un accroissement de la consommation. Elle va dans le sens du désordre et de l’entropie. Joel De Rosnay
  17. Ralentir Maintenir l’organisation d’un système ouvert, cellule vivante ou société

    humaine, revient donc à ralentir la vitesse d’accroissement de l’entropie dans ce système. C’est à dire ralentir l’écoulement du temps. C’est l’action créatrice (...) qui permet de compenser l’écoulement du temps, car toute œuvre originale est analogue à une réserve de temps. D’où la notion individuelle de temps « créateur », de temps accomplissement. Joel De Rosnay