<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikiagile.coach/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nicolas+Mereaux</id>
	<title>Wiki Agile - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wikiagile.coach/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nicolas+Mereaux"/>
	<link rel="alternate" type="text/html" href="https://wikiagile.coach/Sp%C3%A9cial:Contributions/Nicolas_Mereaux"/>
	<updated>2026-05-05T15:26:09Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Automatisation_des_tests&amp;diff=16803</id>
		<title>LeSS - Automatisation des tests</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Automatisation_des_tests&amp;diff=16803"/>
		<updated>2022-11-06T17:55:53Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Création de la page LeSS - Automatisation des tests&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: Portail Equipe de développement]]&lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
[[Catégorie:TDD]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br/&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/test-automation.html Test Automation]&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux&amp;lt;br/&amp;gt;&lt;br /&gt;
Relecteur : Fabrice Aimetti&lt;br /&gt;
Date : 06/11/2022&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traduction :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]] &lt;br /&gt;
&lt;br /&gt;
== Manual Tests ==&lt;br /&gt;
&lt;br /&gt;
== Tests manuels ==&lt;br /&gt;
&lt;br /&gt;
Agile developers emphasize the importance of automated tests. With short cycles, manual regression testing is nearly impossible. Does that mean there is no manual testing at all? No. Some manual testing is still recommended, though such testing differs from the traditional script-based manual testing.&lt;br /&gt;
&lt;br /&gt;
Les développeurs agiles mettent en avant l’importance des tests automatisés. En effet avec des cycles courts, l’exécution manuelle des tests de régression s’avère quasiment impossible. Cela signifie t’il qu’il n’y a pas du tout de tests manuels ? Non. Certains tests manuels sont toujours recommandés, même si ces tests diffèrent quelque peu des tests manuels faits à l’aide de scripts.&lt;br /&gt;
&lt;br /&gt;
=== Automate your manual tests ===&lt;br /&gt;
&lt;br /&gt;
=== Automatiser vos tests manuels ===&lt;br /&gt;
&lt;br /&gt;
Product groups often claim “It is impossible to automate tests related to a lost network connection” or “You can’t automate tests related to hardware failure” Our answer usually is “No, it is not” or “Yes, you can.”&lt;br /&gt;
&lt;br /&gt;
« Il est impossible d’automatiser des tests de pertes de connexion réseau » ou « Il est impossible d’automatiser des tests portant sur un problème matériel » sont des affirmations qui reviennent souvent de la part des groupes produit. Notre réponse est généralement « Non ce n’est pas vrai » ou « Oui, vous pouvez faire ces types de tests »&lt;br /&gt;
&lt;br /&gt;
Elisabeth Hendrickson, the author of the mini-book [https://less.works/papers/et.pdf &#039;&#039;Exploratory Testing in an Agile Context&#039;&#039;] , dares to state that:&lt;br /&gt;
&lt;br /&gt;
Elisabeth Hendrickson, l’auteur du mini-livre (vo) [https://less.works/papers/et.pdf &#039;&#039;Exploratory Testing in an Agile Context&#039;&#039;] ose d’ailleurs dire&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;I do think that if you can write a manual script for a test, you can automate it.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Je pense que si vous êtes en mesure d’écrire un script de test manuel, c’est que vous êtes aussi en mesure de l’automatiser&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
It may be difficult to automate a test in &#039;&#039;exactly the same way&#039;&#039; as it would be carried out manually. For example, it is nearly impossible to remove the network cable automatically in a connection-lost test case. Therefore, the automated test is usually done in a different way. Instead of the cable being physically detached, the automated test instructs the driver to respond &#039;&#039;as if&#039;&#039; the cable were removed.&lt;br /&gt;
&lt;br /&gt;
Il peut s’avérer difficile d’automatiser un test &#039;&#039;exactement de la même manière&#039;&#039; que s’il était fait manuellement. Par exemple, il est quasiment impossible de débrancher automatiquement un cable réseau pour un cas de test de perte de connexion. Par conséquent, un test automatisé se fait généralement de manière différente. À la place de débrancher physiquement un cable, le test automatisé va instruire le pilote réseau de répondre &#039;&#039;comme si&#039;&#039; le cable réseau avait été débranché.&lt;br /&gt;
&lt;br /&gt;
Is automating all tests worth it? According to Hendrickson:&lt;br /&gt;
&lt;br /&gt;
Est-ce que ça vaut le coup d’automatiser tous les tests ? Selon Elisabeth Hendrickson :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;If it’s a test that’s important enough to script, and execute, it’s important enough to automate.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Si un test est suffisamment important pour être scripté, et exécuté, il est alors suffisamment important pour être automatisé.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Why is this? Iterative and incremental development implies that code is not frozen at the end of the iteration but instead has the potential to be changed each iteration. Therefore, manual regression testing would mean rerunning most of the manual test–every iteration. Automating the tests therefore pays back quickly.&lt;br /&gt;
&lt;br /&gt;
Pourquoi cela ? Le développement itératif et incrémental implique que le code ne soit pas figé en fin d’itération mais qu’il ait, à la place de cela, le potentiel d’être changé à chaque itération. Par conséquent, faire du test de régression manuel signifierait re-exécuter la majorité des tests manuels à chaque itération. Il va sans dire que l’automatisation s’avère rentable rapidement.&lt;br /&gt;
&lt;br /&gt;
Especially in large-scale development with feature teams and shared code-ownership, the safety net provided by automated tests is of paramount importance. Automating tests is well worth the effort.&lt;br /&gt;
&lt;br /&gt;
Cela s’avère être particulièrement vrai sur le développement à grande échelle qui a, entre autres caractéristiques, des équipes &#039;&#039;features&#039;&#039; et la propriété collective du code, et pour lequel le filet de sécurité offert par les tests automatisés est d’une importance capitale.&lt;br /&gt;
&lt;br /&gt;
=== Do some manual tests ===&lt;br /&gt;
&lt;br /&gt;
=== Faire quelques tests manuels ===&lt;br /&gt;
&lt;br /&gt;
Automating &#039;&#039;all&#039;&#039; tests might not be worthwhile or even possible. These tests may need to be done manually:&lt;br /&gt;
&lt;br /&gt;
Automatiser tous les tests pourraient ne pas valoir le coût voire même être possible. Certains tests tels que ceux évoqués ci-dessous devront alors être faits manuellement :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Tests requiring human opinion and creativity&#039;&#039; –A person is needed to judge whether the interface looks good–usability testing. Exploratory testing by definition needs someone to decide the next step to explore.&lt;br /&gt;
* &#039;&#039;Tests requiring physical movement&#039;&#039; –For example, tests with the system in different physical configurations. These can be automated with simulation, but the real configuration might be needed for the final test run.&lt;br /&gt;
* &#039;&#039;Expensive tests&#039;&#039; –Running capacity tests on the production environment may be too expensive and is therefore done only once or twice. This delays risk. These risks should be tackled early with cheaper tests–for example, running capacity tests on a simulated environment–so that running the expensive test is merely a final check.&lt;br /&gt;
* &#039;&#039;Les tests nécessitant de l’attention et de la créativité de la part de quelqu’un&#039;&#039;, c’est-à-dire d’une personne capable de juger si l’interface s’apprête bien à des tests d’utilisabilité. Les tests exploratoires, par définition, ont besoin de quelqu’un pour décider de la prochaine étape à explorer.&lt;br /&gt;
* &#039;&#039;Les tests nécessitant une action physique&#039;&#039;, par exemple dans le cas de tests d’un système ayant des configurations matérielles différentes. Cela peut être automatisé par le biais de la simulation, mais la vraie configuration matérielle pourrait s’avérer nécessaire pour l’exécution du test final.&lt;br /&gt;
* &#039;&#039;Des tests coûteux par nature&#039;&#039;. Par exemple, exécuter des tests de capacité en environnement de production peut s’avérer trop coûteux et par conséquent ne sont exécutés tout au plus qu’une ou deux fois au cours de la vie du produit. Toutefois, ces tests ne font que retarder le risque. Il est nécessaire de s’attaquer à ces risques le plus tôt possible avec des tests moins coûteux - par exemple, en exécutant des tests de capacité sur une simulation de l’environnement cible - cela permettra que l’exécution du vrai test, qui lui est coûteux, ne soit que la vérification finale.&lt;br /&gt;
&lt;br /&gt;
No false dichotomy: Try to automate all tests, but do not forget to do the manual tests when needed.&lt;br /&gt;
&lt;br /&gt;
Pas de fausse dichotomie : Essayez d’automatiser tous les tests, mais n’oubliez pas de faire des tests manuels lorsque c’est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Do exploratory testing ===&lt;br /&gt;
&lt;br /&gt;
=== Faire des tests exploratoires ===&lt;br /&gt;
&lt;br /&gt;
In [http://www.amazon.com/Perfect-Software-Other-Illusions-Testing/dp/0932633692 Perfect Software and Other Illusions about Testing], Gerald Weinberg calls it, “The Exhaustive Testing Fallacy, that it’s possible to test everything!” It is not. The number of possible scenarios to test is infinite and therefore automating all tests means infinite automation effort. Instead, automate all the anticipated tests and spend time as efficiently as possible on manual exploratory testing to find unforeseen cases.&lt;br /&gt;
&lt;br /&gt;
Dans son ouvrage [http://www.amazon.com/Perfect-Software-Other-Illusions-Testing/dp/0932633692 Perfect Software and Other Illusions about Testing] Gérald Weinberg évoque : « l’idée reçue quant à l’exhaustivité des tests, autrement dit il est possible de tout tester ! ». Ce n’est pas le cas. Le nombre de scénarios possibles à tester est pour ainsi dire infini et par conséquent automatiser tous les tests demanderait un effort d’automatisation infini. Essayez donc plutôt d’automatiser les tests déjà envisagés et consacrer du temps aussi efficacement que possible sur les tests exploratoires pour trouver des cas de tests non envisagés.&lt;br /&gt;
&lt;br /&gt;
over-view of exploratory testing &lt;br /&gt;
&lt;br /&gt;
Vue globale du test exploratoire&lt;br /&gt;
&lt;br /&gt;
https://less.works/img/test_automation/xet.png.pagespeed.ic.JppUJEJMw2.png&lt;br /&gt;
&lt;br /&gt;
[[Fichier:LeSS-Et-fr.png|800px|sans_cadre|centré|Tests exploratoires]]&lt;br /&gt;
&lt;br /&gt;
What is exploratory testing? “Simultaneous learning, test design, and test execution” [http://www.satisfice.com/articles/what_is_et.shtml [Bach03]]. This is in contrast to traditional scripted testing where test-case design and execution are separated and sequential steps—first design then execution. Exploratory testing aims at fully utilizing human creativity during test execution, using feedback and observations rather than mindlessly following a script. In exploratory testing, the tester is exploring the system, learning about it and using that information to make test-design decisions. It is best explained by an example.&lt;br /&gt;
&lt;br /&gt;
Qu’est-ce que le test exploratoire ? Dans un de ses articles James Bach le définit comme étant « la combinaison de l’apprentissage, de la conception de tests et de l’exécution de tests en simultané » – [[Bach03(vo)]](http://www.satisfice.com/articles/what_is_et.shtml). Cela vient en contraste avec le test scripté traditionnel dans lequel la conception des cas de tests et l’exécution se font de manière séparée et séquentielle avec d’abord la conception et après l’exécution. Le test exploratoire a pour objectif d’utiliser le plus possible la créativité humaine lors de l’exécution des tests, d’en tirer des informations et de les utiliser pour prendre des décisions relatives à la conception des tests. Cela sera plus clair à l’aide de l’exemple suivant :&lt;br /&gt;
&lt;br /&gt;
Imagine that Gita is testing a 2D modeling application. First, she defines the goal of her test session—in exploratory testing this is called a mission or charter. Her charter is “Explore changing shapes by dragging the control points.” She takes a shape, drops it on the canvas, and creates a couple of control points on it. She drags one of them and observes what happens. Based on this observation (learning), she determines the next step (design) and performs it (execute). The shape takes its new form, though she notices—while dragging the control points—that the shape temporarily took a form that it probably should not have. Therefore, she continues dragging it and moving it around until she can reproduce the accidental transformation.&lt;br /&gt;
&lt;br /&gt;
Imaginons que Gina soit en train de tester une application de modélisation 2D. Tout d’abord, elle commence par définir l’objectif de sa session de test exploratoire que l’on appelle une mission ou une charte. Sa charte est d’ « Explorer les changements de formes en déplaçant les points de contrôle ». Elle sélectionne une forme, la place sur le canevas, et y ajoute deux points de contrôle. Elle déplace l’un d’entre eux et observe ce qu’il se passe. En se basant sur ses observations (apprentissage), elle détermine quelle sera la prochaine étape (conception) et la réalise (exécution). La forme prend un nouvel aspect même si elle remarque que lors du déplacement des points de contrôle la forme a pris temporairement un nouvel aspect qu’elle n’aurait probablement pas dû avoir. Aussi, elle continue à les déplacer et à les déplacer jusqu’à ce qu’elle arrive à reproduire ce type de transformation accidentelle.&lt;br /&gt;
&lt;br /&gt;
In the example, there is no detailed preconceived script or test case but instead an area of focus—a charter. The first step is to observe the system, and the next action is determined from that observation—this is test design. All traditional test techniques and heuristics are applied during this design step.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, il n’y a pas de script détaillé préconçu ou de cas de test mais plutôt un périmètre de test — une charte. La première étape est d’observer le système et à partir de cette observation de déterminer l’action suivante à savoir la conception des tests. Toutes les techniques traditionnelles de tests et tous les heuristiques traditionnels de tests sont utilisés lors de cette phase de conception.&lt;br /&gt;
&lt;br /&gt;
https://less.works/img/test_automation/xet_scripted_difference.png.pagespeed.ic.X0uMS-HZ2g.png&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Less Et scripted difference-fr.png|800px|sans_cadre|centré|Tests exploratoires]]&lt;br /&gt;
&lt;br /&gt;
== Automated Testing ==&lt;br /&gt;
&lt;br /&gt;
== Test automatisé ==&lt;br /&gt;
&lt;br /&gt;
=== Create maintainable tests ===&lt;br /&gt;
&lt;br /&gt;
=== Créer des tests maintenables ===&lt;br /&gt;
&lt;br /&gt;
“Automated tests will increase our test maintenance load” is a common objection we hear. Test maintenance will cost some effort, but a few straightforward techniques can minimize this cost:&lt;br /&gt;
&lt;br /&gt;
« Les tests automatisés vont augmenter notre charge de maintenance des tests » est une objection que nous entendons régulièrement. Il est certain que la maintenance des tests vous coûtera un peu mais quelques techniques simples peuvent minimiser ce coût :&lt;br /&gt;
&lt;br /&gt;
* remove duplication in and between tests&lt;br /&gt;
* delete tests&lt;br /&gt;
* do not test through the UI&lt;br /&gt;
* run tests frequently&lt;br /&gt;
* supprimer toute duplication à l’intérieur et à l’extérieur des tests&lt;br /&gt;
* supprimer les tests&lt;br /&gt;
* ne pas tester à travers une IHM&lt;br /&gt;
* exécuter les tests fréquemment&lt;br /&gt;
&lt;br /&gt;
=== Remove duplication in and between tests ===&lt;br /&gt;
&lt;br /&gt;
=== Supprimer toute duplication à l’intérieur et à l’extérieur des tests ===&lt;br /&gt;
&lt;br /&gt;
Code duplication causes extra complexity, obscurity, and defects—resulting in extra maintenance effort. This is as true for test code as it is for production code. Avoid this by removing the duplication.&lt;br /&gt;
&lt;br /&gt;
La duplication du code engendre un niveau de complexité, d’incertitude et d’anomalies supplémentaires — ayant pour conséquent un effort de maintenance supplémentaire. C’est vrai tout autant pour le code de test que pour le code en production. Vous pouvez vous éviter cela en supprimant toute duplication de code qui serait présente.&lt;br /&gt;
&lt;br /&gt;
Workflow tests are a common cause of duplication. They often consist of one mother scenario and multiple derived cases with only slight variations in them. When one step changes, all these workflow tests need to be updated. This duplication can be avoided by data-driven tests that focus on business rules or by separating the duplication into test libraries or fixtures.&lt;br /&gt;
&lt;br /&gt;
Les flux de travail de tests sont une forme répandue de duplication. Ils se présentent le plus souvent sous la forme d’un scénario parent avec tout un ensemble de cas de tests dérivés avec par ici ou par là quelques légères variations. Tous ces flux de travail de tests doivent être mis à jour. Ce type de duplication peut être évité avec des tests pilotés par les données qui se focalisent sur les règles métiers ou en séparant les éléments dans des bibliothèques de tests ou des &#039;&#039;fixtures&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We coached a team that made a common mistake—they delayed their test automation until the end of the iteration. Four days remaining and only automation tasks left. In the previous iterations, these tasks were done by the test specialist, but now they had to be done by the whole team.&lt;br /&gt;
&lt;br /&gt;
Nous avons accompagné une équipe qui avait fait une erreur assez répandue au sein de beaucoup d’équipes — elle avait repoussé l’automatisation des tests à la fin de son itération. Il lui restait 4 jours avant la fin de l’itération et uniquement des tâches d’automatisation à faire. Lors de son itération précédente, ces tâches avaient été faites par un spécialiste des tests mais ces tâches devaient être faites dorénavant par l’ensemble de l’équipe.&lt;br /&gt;
&lt;br /&gt;
They started with a one-day workshop in which the one specialist coached the other team members. After that, they split into two pairs and one triplet working in parallel on automating the tests. Something interesting happened: The team members who were experienced in programming complained about the extra effort needed because of the duplication in the tests. Previously, none of them had noticed it and the test specialist—who did not have much programming experience—never cared. Now that the whole team was involved, they cared and the quality of the tests improved immensely.&lt;br /&gt;
&lt;br /&gt;
Nous avons fait démarré l’équipe avec un atelier d’une journée au cours duquel un spécialiste a formé et accompagné les différents membres de l’équipe. Après cet atelier, l’équipe s’est scindée en plusieurs groupes de deux personnes plus un groupe de trois personnes pour travailler sur l’automatisation des tests. Quelque chose d’intéressant s’est produit : les développeurs expérimentés de l’équipe se sont plaints du surcroit de travail nécessaire à cause de la duplication présente dans les tests. Avant ça, aucun d’entre eux ne l’avaient remarqué et le spécialiste des tests — qui n’avait pas beaucoup d’expérience en programmation — ne s’en était jamais soucié. Maintenant que toute l’équipe était impliquée, tous le monde s’en souciait et la qualité des tests s’est alors grandement améliorée.&lt;br /&gt;
&lt;br /&gt;
=== Delete tests when not adding value ===&lt;br /&gt;
&lt;br /&gt;
=== Supprimer des tests lorsqu’ils n’apportent aucune valeur ===&lt;br /&gt;
&lt;br /&gt;
Tests serve multiple purposes. They act as requirements, as verification, and as a safety net preventing system regression.&lt;br /&gt;
&lt;br /&gt;
Les tests servent plusieurs objectifs. Ils servent d’exigences, de vérifications et font aussi office de filet de sécurité pour prévenir la régression du système.&lt;br /&gt;
&lt;br /&gt;
When an existing test is not needed anymore—because it is a subset of another test—then delete it. Leaving unnecessary tests brings no benefit but still increases maintenance effort and lowers test execution speed.&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un test existant n’est plus nécessaire — sachant qu’il n’est qu’une sous-partie d’un autre test — supprimez-le. Ne pas supprimer les tests superflus n’apportent rien mais augmentent par contre le travail de maintenance et diminuent la vitesse d’exécution des tests.&lt;br /&gt;
&lt;br /&gt;
=== Avoid testing through the UI ===&lt;br /&gt;
&lt;br /&gt;
=== Éviter de tester à travers une IHM ===&lt;br /&gt;
&lt;br /&gt;
User interfaces (UIs) tend to change frequently. Running your tests through the UI makes them vulnerable to these changes—even when there is no change in test logic. This increases the test maintenance effort.&lt;br /&gt;
&lt;br /&gt;
Les interfaces utilisateurs (ou IHM) ont tendance à changer fréquemment. Exécuter vos tests à travers une IHM les rend vulnérables à ces changements, même s’il n’y a aucun changement dans la logique du test, cela augmente la charge de maintenance des tests.&lt;br /&gt;
&lt;br /&gt;
Therefore, avoid testing through the UI and instead call the application logic directly through an API. Another advantage of doing this is that it speeds up your test since testing through the UI is slow.&lt;br /&gt;
&lt;br /&gt;
Par conséquent, éviter de tester à travers une IHM et faites plutôt appel directement à la logique applicative à travers une API. Un autre avantage de faire cela est d’accélérer la vitesse d’exécution de vos tests car tester à travers une IHM s’avère généralement toujours très lent.&lt;br /&gt;
&lt;br /&gt;
=== Run tests frequently ===&lt;br /&gt;
&lt;br /&gt;
=== Exécuter les tests fréquemment ===&lt;br /&gt;
&lt;br /&gt;
Long ago, we worked with a large group following waterfall develop- ment. Traditional test automation advice is to select and automate only the most important cases—with a separate automation team— after the release. So they did. At the end of the next release, they executed the tests and… they all failed. Updating them would take much time, so they decided to do all testing manually.&lt;br /&gt;
&lt;br /&gt;
Il y a longtemps, nous avons travaillé avec une grosse équipe travaillant selon une approche en cascade. Le conseil habituel en automatisation de test est de sélectionner et d’automatiser uniquement les cas de tests les plus importants — par une équipe dédiée à l’automatisation des tests — après la livraison. Ils ont donc fait ça. À la fin de la livraison suivante, ils ont alors exécutés les tests et … ils ont tous échoués. Mettre à jour tous les tests aurait pris trop de temps, alors ils ont décidé de tout tester manuellement.&lt;br /&gt;
&lt;br /&gt;
Executing tests once or twice a release seems efficient—fewer CPU cycles are wasted—but much will have changed and therefore many fail and cause a large batch of maintenance work. Alternatively, exe- cuting tests frequently—using a continuous integration system— uses more CPU cycles but results in less maintenance work since the effort to fix failing tests is small and straightforward. If you have a high test-maintenance load, chances are you are not executing the tests frequently enough.&lt;br /&gt;
&lt;br /&gt;
Exécuter les tests une ou deux fois par livraison peut sembler efficace — car il y a moins de cycles CPU utilisés — mais entre deux livraisons beaucoup de choses auront changé, et par conséquent beaucoup de tests échoueront, ce qui aura pour conséquence de générer un gros travail de maintenance. Alternativement, exécuter les tests fréquemment — en utilisant un système d’intégration continu — utilisera davantage de cycles CPU mais il y aura moins de maintenance étant donné que la charge de correction des tests sera moindre. Si vous avez une forte charge de maintenance de tests, c’est probablement que vous ne les exécutez pas assez fréquemment.&lt;br /&gt;
&lt;br /&gt;
=== Treat non-functionals the same as functionals ===&lt;br /&gt;
&lt;br /&gt;
=== Traitez les tests non fonctionnels comme des tests fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
Automating and continuously running non-functional tests is essential. Delaying them to the end means moving one of the biggest risks to where they hurt most. For example, if the system needs a certain performance level, test early to reach it early, and continuously run the test while new functionality is added to ensure that the system does not regress from its performance target.&lt;br /&gt;
&lt;br /&gt;
Automatiser et exécuter de manière continue les tests non fonctionnels est quelque chose d’essentiel. Les retarder jusqu’au dernier moment signifie c’est prendre de très gros risques là où ça peut faire le plus mal. Par exemple, s’il est exigé que le système doit avoir un certain niveau de performance, il est nécessaire de le tester le plus tôt possible pour déterminer s’il atteint le niveau exigé, et de le tester de manière continue au fur et à mesure que de nouvelles fonctionnalités sont ajoutées pour s’assurer que le système ne régresse pas par rapport au niveau de performance exigé.&lt;br /&gt;
&lt;br /&gt;
Non-functionals are often treated exotically—people believe they cannot be specified and cannot be tested. This is unfortunate. In a requirements workshop, non-functionals can be considered the same as functionals, and example tests are created for clarifying them.&lt;br /&gt;
&lt;br /&gt;
Les exigences non fonctionnelles sont souvent traitées de manière assez exotique - les gens croient qu’ils ne peuvent être ni spécifiés ni testés. C’est dramatique. Dans un atelier d’exigences, les exigences non fonctionnelles sont considérées de la même manière que les tests fonctionnels, et des tests d’exemples sont créés pour aider à la compréhension.&lt;br /&gt;
&lt;br /&gt;
=== Continuously run long-running tests ===&lt;br /&gt;
&lt;br /&gt;
=== Exécuter de manière continue des tests qui prennent du temps à s’exécuter ===&lt;br /&gt;
&lt;br /&gt;
Non-functional tests frequently cannot be run in the normal continuous-integration-system cycle because they may take too long to execute—a stability test might take two weeks. Some product groups delay them until near the release—creating a delayed feed-back cycle. Not a good idea.&lt;br /&gt;
&lt;br /&gt;
Il est fréquent que les tests non fonctionnels ne puissent s’exécuter dans un cycle normal d’intégration continue parce qu’ils prennent trop de temps à s’exécuter - un test de stabilité peut prendre jusqu’à deux semaines. Certains groupes produits les retardent pour ainsi dire juste avant la livraison — créant ainsi un cycle de boucle de rétroaction à retardement. Ce n’est pas une bonne idée de procéder de cette manière.&lt;br /&gt;
&lt;br /&gt;
Run the long-running tests all the time in a slower continuous-integration-system cycle. Treat them as any other tests. When they fail, inform all people who checked in code. After they pass, get the latest build and immediately run them again. This way the feedback cycle is as short as it can be.&lt;br /&gt;
&lt;br /&gt;
Exécutez plutôt les tests qui prennent du temps de manière continue dans un cycle d’intégration continue plus lent. Traitez-les comme n’importe quel autre test. Lorsqu’ils échouent, informez les personnes ayant implémenté le code. Après qu’ils aient fait le nécessaire, récupérez le dernier exécutable et exécutez à nouveau les tests.&lt;br /&gt;
&lt;br /&gt;
=== Use virtualization or containers ===&lt;br /&gt;
&lt;br /&gt;
=== Utilisation de la virtualisatoin ou des conteneurs ===&lt;br /&gt;
&lt;br /&gt;
In order to speed up the tests and keep the investment in hardware low, maximize the use of virtualization using [https://www.virtualbox.org/ VirtualBox] or [http://www.vmware.com/ VMWare]. An alternative to virtual machines (which aren’t always fast to build and easy to maintain) are linux virtual containers such as [http://www.docker.io/ Docker]&lt;br /&gt;
&lt;br /&gt;
Afin d’accélérer les tests et de maintenir l’investissement matériel à un niveau raisonnable, maximiser l’utilisation de la virtualisation en utilisant VirtualBox](https://www.virtualbox.org/) ou [http://www.vmware.com/ VMWare]. Une alternative à l’utilisation d’une machine virtuelle (qui n’est pas toujours très rapide à mettre en place ou à maintenir) est l’utilisation d’un conteneur virtuel linux tel que [http://www.docker.io/ Docker].&lt;br /&gt;
&lt;br /&gt;
=== Avoid using commercial test tools ===&lt;br /&gt;
&lt;br /&gt;
=== Éviter d’utiliser des outils de tests commerciaux ===&lt;br /&gt;
&lt;br /&gt;
We once coached at a company building a commercial “automated testing” tool—a GUI testing tool. The requested coaching? To learn how to do automated testing for developing their automated testing tool…&lt;br /&gt;
&lt;br /&gt;
Une fois nous avons accompagné une entreprise qui développait un outil commercial d’ « automatisation de tests » - et pour être plus précis un outil de test IHM. Quel avait été l’accompagnement demandé ? D’apprendre comment faire des tests automatisés pour l’aider à développer son outil de tests automatisés …&lt;br /&gt;
&lt;br /&gt;
A gazillion commercial test tools are available. We rarely meet people who are actually satisfied with any of them. Most are overly complex and focus more on reporting and ‘management’ than on robust test automation. Favor free and open-source tools—made by developers solving real problems—over commercial tools.&lt;br /&gt;
&lt;br /&gt;
Une multitude d’outils commerciaux de tests existent. Nous avons rarement rencontré des gens qui en aient été réellement satisfaits. La plupart d’entre eux sont bien trop complexes, se focalisent davantage sur la production de tableaux de bord et la gestion plutôt que sur une automatisation robuste et satisfaisante des tests. Privilégiez plutôt les outils libres et dont le code source est ouvert, faits par des développeurs pour résoudre de vrais problèmes - plutôt que des outils commerciaux.&lt;br /&gt;
&lt;br /&gt;
Example of common test automation tools:&lt;br /&gt;
&lt;br /&gt;
Voici une liste d’outils d’automatisation de tests communément utilisés :&lt;br /&gt;
&lt;br /&gt;
* [http://www.robotframework.org/ RobotFramework]&lt;br /&gt;
* [https://cucumber.io/ Cucumber]&lt;br /&gt;
* [http://www.fitnesse.org/ Fitnesse]&lt;br /&gt;
* [http://www.seleniumhq.org/ Selenium]&lt;br /&gt;
* [https://github.com/jnicklas/capybara Capybara]&lt;br /&gt;
&lt;br /&gt;
There are much more. The above is just a list of common tools, but new tools pop up all the time.&lt;br /&gt;
&lt;br /&gt;
Il en existe bien plus encore. La liste ci-dessus porte uniquement sur les outils les plus répandus, de nouveaux outils voient le jour régulièrement.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Less_Et_scripted_difference-fr.png&amp;diff=16802</id>
		<title>Fichier:Less Et scripted difference-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Less_Et_scripted_difference-fr.png&amp;diff=16802"/>
		<updated>2022-11-06T17:36:16Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:LeSS-Et-fr.png&amp;diff=16801</id>
		<title>Fichier:LeSS-Et-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:LeSS-Et-fr.png&amp;diff=16801"/>
		<updated>2022-11-06T17:33:49Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=16800</id>
		<title>Catégorie:Portail LeSS</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=16800"/>
		<updated>2022-11-06T17:27:07Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Modification lien pour création page Automatisation des tests&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;addthis /&amp;gt;&lt;br /&gt;
[[Catégorie: Portails Thématiques]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
[[Category: Portail Framework]]&lt;br /&gt;
[[Fichier:LeSS-logo 72.png|link=]] À la découverte de LeSS, ce framework de mise à l&#039;échelle de l&#039;élégance de Scrum.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LeSS-overview-diagram_fr.png|LeSS-overview-diagram_fr.png|link=]]&amp;lt;br /&amp;gt; [http://less.works/less/framework/introduction.html introduction]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;Depuis 2005, nous avons travaillé avec des clients pour mettre en oeuvre le framework LeSS (Large-Scale Scrum) de mise à l&#039;échelle du développement Scrum, agile et lean pour les groupes produit de grande taille. Nous partageons cette connaissance à travers LeSS pour que, vous aussi, vous puissiez réussir lorsque vous passez à l&#039;échelle.&amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;lt;br /&amp;gt;  - Craig Larman &amp;amp; Bas Vodde&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff; font-size: 18.2px&amp;quot;&amp;gt;Articles thématiques&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Framework|Portail Framework LeSS (fr) - 95%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/framework/introduction.html Introduction à LeSS]&lt;br /&gt;
** [[Pourquoi%20LeSS%20%3F|Pourquoi LeSS (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Produit|Le Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Product%20Owner|Le Product Owner (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20backlog%20du%20produit|Le Backlog du Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Les%20%C3%89quipes|Les Équipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Sprint|Le Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%281%C3%A8re%20partie%29|La Planification du Sprint (1ère partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%282%C3%A8me%20partie%29|La Planification du Sprint (2ème partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Backlog%20du%20Sprint|Le Backlog du Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20M%C3%AAl%C3%A9e%20Quotidienne|La Mêlée Quotidienne (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coordination%20%26%20Int%C3%A9gration|Coordination &amp;amp; Intégration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Incr%C3%A9ment%20Produit%20Potentiellement%20D%C3%A9ployable|L&#039;Incrément Produit Potentiellement Déployable (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20D%C3%A9finition%20du%20Fini|La Définition du Fini (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Revue%20de%20Sprint|La Revue de Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective|La Rétrospective (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective%20Globale|La Rétrospective Globale (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20du%20Backlog%20Produit|L&#039;Affinage du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20Initial%20du%20Backlog%20Produit|L&#039;Affinage Initial du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20ScrumMaster|Le ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Principes|Portail Principes (fr) - 72%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Pr%C3%A9sentation%20des%20principes|Présentation des principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Scrum%20%C3%A0%20grande%20%C3%A9chelle%20reste%20du%20Scrum|Scrum à grande échelle reste du Scrum (fr)]]&lt;br /&gt;
** [[Less_-_Plus_avec_LeSS|Plus avec LeSS (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/lean-thinking.html Pensée Lean]&lt;br /&gt;
** [[LeSS - Approche systémique|Approche systémique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Contr%C3%B4le%20du%20processus%20empirique|Contrôle du processus empirique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Transparence|Transparence (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/continuous-improvement-towards-perfection.html Amélioration continue vers la perfection]&lt;br /&gt;
** [[Less_-_Centré_client|Centré client (fr)]]&lt;br /&gt;
** [[Less_-_Focus_sur_le_produit_global|Focus sur le produit global (fr)]]&lt;br /&gt;
** [https://less.works/less/principles/queueing_theory.html Théorie des files d&#039;attente]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Structure|Portail Structure (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Equipes|Equipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Organisation%20en%20fonction%20de%20la%20valeur%20client|Organisation en fonction de la valeur client (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Equipes%20Feature|Equipes Feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle|Structure organisationnelle (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Communaut%C3%A9s|Communautés (fr)]]&lt;br /&gt;
** [[LeSS%20-%20ScrumMaster|ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Excellence%20technique|Portail Excellence Technique (fr)]] - 60%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Sp%C3%A9cifications%20par%20l%27exemple|Spécifications par l&#039;exemple (fr)]]&lt;br /&gt;
** [[Less - Intégration continue|Intégration Continue (fr)]]&lt;br /&gt;
** [https://less.works/less/technical-excellence/continuous-delivery.html Livraison Continue]&lt;br /&gt;
** [[LeSS - Tests d&#039;Acceptation|Tests d&#039;Acceptation (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/architecture-design.html Architecture &amp;amp; Conception]&lt;br /&gt;
** [http://less.works/less/technical-excellence/clean-code.html Ecrire du Code Propre]&lt;br /&gt;
** [[LeSS - Tests unitaires|Tests unitaires (fr)]]&lt;br /&gt;
** [[Less - Développement piloté par les tests|Développement piloté par les tests (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/thinking-about-testing.html Réflexions à propos des tests]&lt;br /&gt;
** [[LeSS - Automatisation des tests|Automatisations des tests (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Management|Portail Management (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20R%C3%B4le%20du%20Manager|Rôle du Manager (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Enseigner%20la%20r%C3%A9solution%20de%20probl%C3%A8me|Enseigner la résolution de problème (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Aller%20Voir|Aller Voir (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Auto-gestion|Auto-gestion (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Service%20d%27am%C3%A9lioration|Service d&#039;amélioration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Manager%20en%20tant%20que%20ScrumMaster|Le Manager en tant que ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20LeSS%20Huge|Portail Less Huge (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Domaines%20d%27exigences|Domaines d&#039;Exigences (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Backlog%20Produit%20de%20Domaine|Backlog Produit de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Product%20Owner%20de%20Domaine|Product Owner de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle%20pour%20LeSS%20Huge|Structure organisationnelle pour LeSS Huge (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Adoption|Portail Adoption (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Les%20trois%20principes|Trois principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20D%C3%A9marrer|Démarrer (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coaching|Coaching (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Am%C3%A9lioration%20continue|Amélioration Continue (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Sch%C3%A9ma%20d%27adoption%20des%20%C3%A9quipes%20feature|Schéma d&#039;adoption des équipes feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Rester%20sain%20d%27esprit|Rester sain d&#039;esprit (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;LeSS Test&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/test/pre-course.html LeSS Test]&lt;br /&gt;
** [http://less.works/less/test/scrum.html Scrum Test]&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15344</id>
		<title>LeSS - Tests unitaires</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15344"/>
		<updated>2022-07-03T19:01:37Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Ajout encadré&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/unit-testing.html Unit Testing - Large Scale Scrum (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux&amp;lt;br /&amp;gt;&lt;br /&gt;
Relecteur : Fabrice Aimetti&amp;lt;br /&amp;gt;&lt;br /&gt;
Date : 29/06/2022&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Traduction :&#039;&#039;&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Que sont les tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les tests unitaires&#039;&#039;&#039; sont des programmes informatiques écrits pour éprouver d’autres programmes (qui peuvent être désignés sous l’appellation &#039;&#039;&#039;Code sous tests&#039;&#039;&#039;, ou &#039;&#039;&#039;Code en Production&#039;&#039;&#039;) à l’aide de pré-conditions &#039;&#039;&#039;spécifiques&#039;&#039;&#039; et ainsi en vérifier le comportement attendu.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires sont généralement écrits dans le même langage de programmation que le code testé.&lt;br /&gt;
&lt;br /&gt;
Chaque &#039;&#039;&#039;test unitaire&#039;&#039;&#039; devrait être de taille réduite et ne devrait tester qu’une fraction du code de la fonctionnalité. Les cas de tests sont souvent regroupés en &#039;&#039;&#039;Groupes de tests&#039;&#039;&#039; ou en &#039;&#039;&#039;Suites de tests&#039;&#039;&#039;. Il existe de nombreux &#039;&#039;&#039;&#039;&#039;frameworks&#039;&#039; de tests unitaires&#039;&#039;&#039;. Les plus populaires, comme par exemple JUnit pour le langage Java et CppUTest pour les langages C/C++, suivent un schéma dénommé &#039;&#039;&#039;xUnit&#039;&#039;&#039; inventé par [http://c2.com/cgi/wiki?KentBeck Kent Beck].&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi s’exécuter très rapidement. Généralement, on s’attend à ce qu’&#039;&#039;&#039;une centaine de cas de tests unitaires s’exécutent en quelques secondes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pourquoi faire des tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Le test unitaire est une &#039;&#039;&#039;spécification&#039;&#039;&#039; des comportements attendus du code sous test. Le code sous test est l’implémentation de ces comportements attendus. Donc les tests unitaires et le code sous test sont utilisés pour vérifier l’exactitude de l’un par rapport à l’autre, ils se protègent ainsi mutuellement. Si quelqu’un change le code sous test, et que cela change le comportement attendu par l’auteur originel, le test échouera. Si votre code est couvert par un test unitaire cohérent, vous pouvez maintenir le code sans casser la fonctionnalité existante. C’est la raison pour laquelle Michael Feathers définit le &#039;&#039;&#039;code hérité/patrimonial&#039;&#039;&#039; comme étant du &#039;&#039;code sans test unitaire&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png|border|link=|500px]]&lt;br /&gt;
&lt;br /&gt;
Le but du test unitaire est donc avant tout de protéger ce que nous avons implémenté plutôt que de trouver des anomalies, tout comme les pitons posés par un grimpeur le long de son ascension. Ces pitons sont là pour l’aider à sécuriser le parcours qu’il a déjà accompli.&lt;br /&gt;
&lt;br /&gt;
=== Objectif du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire peut être résumé ainsi :&lt;br /&gt;
* Faciliter les changements&lt;br /&gt;
** Le test unitaire fait en sorte de protéger les comportements décidés par les développeurs qui se sont succédés afin qu’il soit possible de changer le code sans casser les fonctionnalités existantes.&lt;br /&gt;
* Simplifier l’intégration&lt;br /&gt;
** Le test unitaire teste les unités de base du programme, autrement dit les fonctions et les classes. Le test unitaire fait en sorte de sécuriser les briques élémentaires pour qu’elles fonctionnent comme prévu. Lorsque ces unités de base sont intégrées ensemble, nous pouvons séparer ainsi les problèmes d’intégration (les problèmes de couplage) des problèmes internes des unités de base (les problèmes de cohésion).&lt;br /&gt;
* Documentation&lt;br /&gt;
** Des tests unitaires bien écrits peuvent servir de documentation de la fonctionnalité du code sous test. Le test unitaire contient des informations que vous ne pouvez pas trouver dans le code testé, comme par exemple, l’objectif de la conception du développeur à l’origine du code, et de quelle manière le code est censé se comporter à l’exécution. Le test unitaire, à la différence de la documentation traditionnelle, ne &amp;quot;ment&amp;quot; pas. Parce que si le test unitaire ment, le test viendrait à échouer. Et dans ce cas, cela indique que le test ou le code est erroné.&lt;br /&gt;
* Outil de conception&lt;br /&gt;
** Le test unitaire est aussi un outil de conception. Le test unitaire exige que le code soit testable dès sa conception. &amp;quot;Facile à tester&amp;quot; veut généralement dire &amp;quot;facile à utiliser&amp;quot;. Cela signifie que le test unitaire peut être utilisé pour que la conception soit faite du point de vue de l’utilisation et non uniquement du point de vue de l’implémentation. Un code testable doit être davantage modulaire et avoir moins de dépendances. Ainsi, le test unitaire peut facilement ne concerner qu’une petite partie du code testé (un &amp;quot;unitaire&amp;quot;) sans avoir à se soucier de la quantité impressionnante de dépendances qu’il pourrait y avoir. Par conséquent, le test unitaire peut être utilisé pour s’assurer que la conception ait comme caractéristique &amp;quot;une forte cohésion, un faible couplage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Pourquoi à un niveau &amp;quot;unitaire&amp;quot; ? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Oui, il est important d’utiliser des tests automatisés pour protéger les fonctionnalités existantes. Mais pourquoi cela doit-il être fait au niveau unitaire ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il est légitime de vous poser cette question. Pourquoi n’utilisons-nous tout simplement pas de manière rigoureuse des tests fonctionnels automatisés ou des tests systèmes automatisés pour protéger le programme ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le coût total de possession&#039;&#039;&#039; — Le test unitaire se base sur le niveau d’abstraction du langage de programmation utilisé. Il s’agit juste d’un bout de code qui va tester un autre bout de code. Il n’a pas besoin de s’exécuter sur le même environnement que celui en production. Pour un langage compilé, il n’est même pas nécessaire d’utiliser le même compilateur que celui en production. Le coût de la création et l’exécution est très faible. S’il est conçu correctement, le coût de maintenance est aussi très faible. Vous pouvez ne pas avoir le même niveau de confiance pour un cas de test unitaire qui s’est exécuté avec succès que pour un cas de test fonctionnel. Vous pourriez avoir besoin de plusieurs cas de test unitaire pour avoir le même niveau de confiance. Mais le coût de tous ces petits cas de test unitaire restent malgré tout plus faible que celui de plusieurs cas de test fonctionnel.&lt;br /&gt;
&lt;br /&gt;
Si le code source n&#039;a bénéficié d&#039;aucun test unitaire depuis les deux dernières années, il y aura un coût supplémentaire pour lui en appliquer un. Ce coût a deux origines principales :&lt;br /&gt;
&lt;br /&gt;
# Le coût d’application d’un &#039;&#039;framework&#039;&#039; de test sur le code du projet. C&#039;est relativement plus facile pour des langages de programmation dynamique comme Python, Ruby ou Javascript. De manière générale, c’est aussi relativement trivial pour des projets Java ou C#. Cela peut être toutefois assez compliqué pour un projet C/C++. Que ce soit facile ou difficile, c’est un investissement à ne faire qu’une seule fois.&lt;br /&gt;
# Le code source existant n’est pas testable car le code a été conçu au départ sans prendre en compte l’aspect testabilité. Appliquer des tests unitaires à ce type de code source implique souvent de devoir améliorer la conception existante. Mener cette amélioration implique non seulement une augmentation du coût concernant la création des tests, mais a potentiellement un autre coût qui est lié à l&#039;introduction de nouvelles anomalies en changeant ladite conception. Par conséquent, l’introduction de tests unitaires pour un code source existant se doit d’être combinée avec d’autres types de travaux qui nécessiteront des modifications dans le code sous test — autrement dit lorsque le moment sera venu de changer ce morceau de code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité interne vs. Qualité Externe&#039;&#039;&#039; — Les tests automatisés de haut niveau comme les tests fonctionnels et les tests systèmes contrôlent la qualité externe du logiciel. La qualité externe permet de connaître le niveau de fonctionnement du logiciel par rapport aux exigences. En effet, les tests unitaires ne sont pas aussi efficaces que les tests fonctionnels pour protéger la qualité externe. Par contre, les tests unitaires s’assurent de la qualité interne du logiciel. La qualité interne veut dire ici la testabilité du code et permet de savoir jusqu’à quel niveau le code est protégé. Une conception testable est synonyme en général de bonne conception. D’autres types de tests automatisés ne remplissent pas ce rôle aussi bien que les tests unitaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité du &#039;&#039;feedback&#039;&#039;&#039;&#039;&#039; — Après avoir passé un test fonctionnel, vous pouvez être confiant vis-à-vis de la fonctionnalité testée. Mais lorsque vous vous apercevez que le test échoue, vous devez généralement faire du déboggage pour trouver ce qui est erroné. Les tests unitaires peuvent vous donner une information plus précise sur ce qui fonctionne ou ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires étant sur le même niveau d’abstraction que le langage de programmation employé, tout devrait s’exécuter au niveau du micro-processeur et de la mémoire lors de l’exécution du test unitaire. Et comme chaque cas de test devrait être de petite taille, il devrait donc s’exécuter très rapidement. Ainsi, vous devriez être en mesure d’exécuter plusieurs centaines de tests unitaires en quelques secondes. En prenant en compte le temps de compilation ou de préparation, l’ensemble du processus d’exécution d’un test unitaire devrait prendre moins d’une minute.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi être répétables. Si rien ne change d’une fois sur l’autre, l’exécution d’un test unitaire devrait toujours retourner le même résultat.&lt;br /&gt;
&lt;br /&gt;
Si un test unitaire est très rapide et répétable, les développeurs peuvent l’exécuter aussi souvent qu’ils le veulent, par exemple toutes les deux minutes. Le test unitaire fournira en permanence aux développeurs des retours d’informations liés à la qualité. Cela permettra ainsi aux développeurs d’avancer à un rythme régulier et de se focaliser sur des choses plus importantes plutôt que de passer trop d’énergie sur des choses triviales.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xtest_levels_fr.png|Xtest_levels_fr.png|border|link=|700px]]&lt;br /&gt;
&lt;br /&gt;
Une structure de test automatisé acceptable devrait ressembler à une pyramide. À la base de la pyramide, il y a un grand nombre de cas de tests unitaires. Au milieu, des cas de tests d’intégration en moins grand nombre. En haut, seulement quelques cas de tests fonctionnels ou systèmes.&lt;br /&gt;
&lt;br /&gt;
== Idées fausses à propos du test unitaire ==&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire n’est pas aussi vital que le code en production ===&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu’en fin de compte, c’est le code en production qui donne vraiment vie au produit. Mais la plupart des produits logiciels ont des cycles de vie évolutif. Le code n’est pas statique. Il change avec le temps. Un code sans test unitaire n’est pas suffisamment protégé lorsqu’une modification est faite. Le test unitaire contient aussi des informations importantes qui ne sont pas présentes dans le code en production.&lt;br /&gt;
&lt;br /&gt;
Par conséquent le test unitaire est tout aussi important que le code en production. Il devrait être stocké &#039;&#039;&#039;dans le même dépôt de gestion du code source&#039;&#039;&#039;. Le test unitaire devrait d’ailleurs suivre les mêmes conventions de codage que le code en production.&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire est fait par des ingénieurs tests ===&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Techniquement, il &#039;&#039;vérifie&#039;&#039; plutôt que &#039;&#039;teste&#039;&#039; si le code sous test a implémenté le comportement voulu par le développeur qui l’a conçu. Donc le choix logique est de simplement laisser la même personne écrire à la fois le test et le code sous test.&lt;br /&gt;
&lt;br /&gt;
Il est aussi encouragé d’avoir deux ou plusieurs personnes travaillant de concert pour programmer à la fois le test et le code sous test. Il existe plusieurs manières sympa pour programmer en binôme. Vous trouverez davantage d’informations à ce sujet dans la section développement piloté par les tests.&lt;br /&gt;
&lt;br /&gt;
=== Vous pouvez écrire des tests unitaires sans changer le code sous test. ===&lt;br /&gt;
&lt;br /&gt;
Ce n’est pas toujours le cas. Si le code n’a pas une bonne testabilité, vous pourriez tout de même être capable techniquement d’écrire le test unitaire qui va avec. Mais un test unitaire qui a été écrit pour un code non-testable est généralement très difficile à maintenir et à comprendre. Par conséquent, il n’y a pas vraiment de raison d’en avoir un.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le secret du test unitaire n’est pas d’écrire du test, mais d’écrire un code testable sous test.&#039;&#039;&#039; Nous voulons du code testable et facile à tester, ce qui s’avère une démarche gagnant-gagnant. Nous ne voulons pas de code non-testable et difficile à maintenir, ce qui serait une démarche perdant-perdant.&lt;br /&gt;
&lt;br /&gt;
=== Je peux ajouter les tests unitaires plus tard ===&lt;br /&gt;
&lt;br /&gt;
Eh bien, essayez donc de demander à des grimpeurs de mettre leurs pitons plus tard.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png|border|link=|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schéma pour de bons tests unitaires ==&lt;br /&gt;
&lt;br /&gt;
=== Pas de nouvelles, bonnes nouvelles ===&lt;br /&gt;
&lt;br /&gt;
Si le test passe, il devrait afficher seulement OK (voire quelques points pour afficher son avancement). Aucune autre information n&#039;est nécessaire.&lt;br /&gt;
&lt;br /&gt;
[[Image:unit_test_success.png|unit_test_success.png|border|link=|800px]]&lt;br /&gt;
&lt;br /&gt;
Règle empirique :&lt;br /&gt;
&lt;br /&gt;
 Aucune intervention humaine ne devrait être nécessaire pour préparer l’exécution du test, exécuter les cas de tests ou en vérifier les résultats.&lt;br /&gt;
&lt;br /&gt;
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupé à débogguer le code concerné.&lt;br /&gt;
&lt;br /&gt;
[[Image:342xNxunit_test_fail.png|342xNxunit_test_fail.png|border|link=]]&lt;br /&gt;
&lt;br /&gt;
=== Arranger, Agir, Auditer (&#039;&#039;Arrange&#039;&#039;, &#039;&#039;Act&#039;&#039;, &#039;&#039;Assert&#039;&#039;) ===&lt;br /&gt;
&lt;br /&gt;
Un bon schéma à suivre en ce qui concerne les tests unitaires est &amp;quot;&#039;&#039;&#039;AAA&#039;&#039;&#039;&amp;quot; : &#039;&#039;&#039;Arrange (dans le sens de mettre en place)&#039;&#039;&#039;, &#039;&#039;&#039;Act (dans le sens d’une action faite sur quelque chose)&#039;&#039;&#039; et &#039;&#039;&#039;Assert (dans le sens de contrôler)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient être facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
def test\_pas\_de\_retour\_à\_la\_ligne\_lorsque\_longueur\_de\_la\_chaîne\_de\_caractères\_de\_5\_et\_largeur\_de\_la\_ligne\_de\_10(self):&lt;br /&gt;
     \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.&lt;br /&gt;
     wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
     \# Act :  Agir sur l&#039;objet ou sur la méthode sous test.&lt;br /&gt;
     wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
     \# Assert :  Contrôle que le résultat attendu s&#039;est bien produit.&lt;br /&gt;
     self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Développement piloté par le comportement (BDD) ===&lt;br /&gt;
&lt;br /&gt;
Identique au schéma &#039;&#039;&#039;AAA&#039;&#039;&#039;, le &#039;&#039;&#039;BDD&#039;&#039;&#039; utilise trois mots-clés différents pour spécifier chaque cas de test : &#039;&#039;&#039;Étant donné&#039;&#039;&#039;, &#039;&#039;&#039;Lorsque&#039;&#039;&#039; et &#039;&#039;&#039;Alors&#039;&#039;&#039;. (Vous pouvez aussi utiliser &#039;&#039;&#039;Et&#039;&#039;&#039; comme mot-clé supplémentaire)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Given / Étant donné que la longueur du texte pour le retour à la ligne est défini à 10&lt;br /&gt;
And / Et que le caractère &#039;-&#039; est utilisé comme connecteur entre deux mots&lt;br /&gt;
When / Lorsque la longueur du texte est inférieure à 10&lt;br /&gt;
Then / Alors le texte ne devrait pas être retourné à la ligne&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le triptyque &amp;quot;étant donné - lorsque - alors&amp;quot; s&#039;allie plutôt bien avec le triptyque &amp;quot;Arrange - Act - Assert&amp;quot;. Ils définissent tous les deux un état transition d’une machine à état finie. Vous pouvez en savoir plus en consultant cet article d’[https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Oncle Bob]. Voici quelques différences entre les deux :&lt;br /&gt;
* Le BDD est davantage orienté &amp;quot;dehors vers dedans&amp;quot;, cela veut dire qu’il met davantage l’accent sur le comportement externe&lt;br /&gt;
* Avec le BDD, vous devez définir un &#039;&#039;&#039;langage spécifique au domaine&#039;&#039;&#039; pour écrire vos spécifications de tests. À cause de cela, vous aurez besoin généralement d’un &#039;&#039;framework&#039;&#039; supplémentaire. Par exemple, pour Python vous pourrez utilisez [https://pypi.org/project/behave/ behave].&lt;br /&gt;
&lt;br /&gt;
=== La règle d’or du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
De manière générale, une bonne règle d’or pour des tests unitaires serait :&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Chaque cas de test unitaire devrait comporter un périmètre très restreint.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
De telle manière que... :&lt;br /&gt;
&lt;br /&gt;
* Lorsque le test échoue, qu’il ne soit pas nécessaire de faire du déboggage pour localiser le problème.&lt;br /&gt;
* Les tests soient stables car les dépendances sont limitées.&lt;br /&gt;
* Il y ait moins de duplications, que ce soit plus facile à maintenir.&lt;br /&gt;
&lt;br /&gt;
Il n’existe pas de secrets pour écrire un bon test unitaire. Afin d’écrire un bon test unitaire, vous devez créer une conception qui soit facile à tester.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15343</id>
		<title>LeSS - Tests unitaires</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15343"/>
		<updated>2022-07-03T18:05:09Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Ajout relecteur&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/unit-testing.html Unit Testing - Large Scale Scrum (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux&amp;lt;br /&amp;gt;&lt;br /&gt;
Relecteur : Fabrice Aimetti&amp;lt;br /&amp;gt;&lt;br /&gt;
Date : 29/06/2022&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;Traduction :&#039;&#039;&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Que sont les tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les tests unitaires&#039;&#039;&#039; sont des programmes informatiques écrits pour éprouver d’autres programmes (qui peuvent être désignés sous l’appellation &#039;&#039;&#039;Code sous tests&#039;&#039;&#039;, ou &#039;&#039;&#039;Code en Production&#039;&#039;&#039;) à l’aide de pré-conditions &#039;&#039;&#039;spécifiques&#039;&#039;&#039; et ainsi en vérifier le comportement attendu.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires sont généralement écrits dans le même langage de programmation que le code testé.&lt;br /&gt;
&lt;br /&gt;
Chaque &#039;&#039;&#039;test unitaire&#039;&#039;&#039; devrait être de taille réduite et ne devrait tester qu’une fraction du code de la fonctionnalité. Les cas de tests sont souvent regroupés en &#039;&#039;&#039;Groupes de tests&#039;&#039;&#039; ou en &#039;&#039;&#039;Suites de tests&#039;&#039;&#039;. Il existe de nombreux &#039;&#039;&#039;&#039;&#039;frameworks&#039;&#039; de tests unitaires&#039;&#039;&#039;. Les plus populaires, comme par exemple JUnit pour le langage Java et CppUTest pour les langages C/C++, suivent un schéma dénommé &#039;&#039;&#039;xUnit&#039;&#039;&#039; inventé par [http://c2.com/cgi/wiki?KentBeck Kent Beck].&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi s’exécuter très rapidement. Généralement, on s’attend à ce qu’&#039;&#039;&#039;une centaine de cas de tests unitaires s’exécutent en quelques secondes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pourquoi faire des tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Le test unitaire est une &#039;&#039;&#039;spécification&#039;&#039;&#039; des comportements attendus du code sous test. Le code sous test est l’implémentation de ces comportements attendus. Donc les tests unitaires et le code sous test sont utilisés pour vérifier l’exactitude de l’un par rapport à l’autre, ils se protègent ainsi mutuellement. Si quelqu’un change le code sous test, et que cela change le comportement attendu par l’auteur originel, le test échouera. Si votre code est couvert par un test unitaire cohérent, vous pouvez maintenir le code sans casser la fonctionnalité existante. C’est la raison pour laquelle Michael Feathers définit le &#039;&#039;&#039;code hérité/patrimonial&#039;&#039;&#039; comme étant du &#039;&#039;code sans test unitaire&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png|border|link=|500px]]&lt;br /&gt;
&lt;br /&gt;
Le but du test unitaire est donc avant tout de protéger ce que nous avons implémenté plutôt que de trouver des anomalies, tout comme les pitons posés par un grimpeur le long de son ascension. Ces pitons sont là pour l’aider à sécuriser le parcours qu’il a déjà accompli.&lt;br /&gt;
&lt;br /&gt;
=== Objectif du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire peut être résumé ainsi :&lt;br /&gt;
* Faciliter les changements&lt;br /&gt;
** Le test unitaire fait en sorte de protéger les comportements décidés par les développeurs qui se sont succédés afin qu’il soit possible de changer le code sans casser les fonctionnalités existantes.&lt;br /&gt;
* Simplifier l’intégration&lt;br /&gt;
** Le test unitaire teste les unités de base du programme, autrement dit les fonctions et les classes. Le test unitaire fait en sorte de sécuriser les briques élémentaires pour qu’elles fonctionnent comme prévu. Lorsque ces unités de base sont intégrées ensemble, nous pouvons séparer ainsi les problèmes d’intégration (les problèmes de couplage) des problèmes internes des unités de base (les problèmes de cohésion).&lt;br /&gt;
* Documentation&lt;br /&gt;
** Des tests unitaires bien écrits peuvent servir de documentation de la fonctionnalité du code sous test. Le test unitaire contient des informations que vous ne pouvez pas trouver dans le code testé, comme par exemple, l’objectif de la conception du développeur à l’origine du code, et de quelle manière le code est censé se comporter à l’exécution. Le test unitaire, à la différence de la documentation traditionnelle, ne &amp;quot;ment&amp;quot; pas. Parce que si le test unitaire ment, le test viendrait à échouer. Et dans ce cas, cela indique que le test ou le code est erroné.&lt;br /&gt;
* Outil de conception&lt;br /&gt;
** Le test unitaire est aussi un outil de conception. Le test unitaire exige que le code soit testable dès sa conception. &amp;quot;Facile à tester&amp;quot; veut généralement dire &amp;quot;facile à utiliser&amp;quot;. Cela signifie que le test unitaire peut être utilisé pour que la conception soit faite du point de vue de l’utilisation et non uniquement du point de vue de l’implémentation. Un code testable doit être davantage modulaire et avoir moins de dépendances. Ainsi, le test unitaire peut facilement ne concerner qu’une petite partie du code testé (un &amp;quot;unitaire&amp;quot;) sans avoir à se soucier de la quantité impressionnante de dépendances qu’il pourrait y avoir. Par conséquent, le test unitaire peut être utilisé pour s’assurer que la conception ait comme caractéristique &amp;quot;une forte cohésion, un faible couplage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Pourquoi à un niveau &amp;quot;unitaire&amp;quot; ? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Oui, il est important d’utiliser des tests automatisés pour protéger les fonctionnalités existantes. Mais pourquoi cela doit-il être fait au niveau unitaire ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il est légitime de vous poser cette question. Pourquoi n’utilisons-nous tout simplement pas de manière rigoureuse des tests fonctionnels automatisés ou des tests systèmes automatisés pour protéger le programme ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le coût total de possession&#039;&#039;&#039; — Le test unitaire se base sur le niveau d’abstraction du langage de programmation utilisé. Il s’agit juste d’un bout de code qui va tester un autre bout de code. Il n’a pas besoin de s’exécuter sur le même environnement que celui en production. Pour un langage compilé, il n’est même pas nécessaire d’utiliser le même compilateur que celui en production. Le coût de la création et l’exécution est très faible. S’il est conçu correctement, le coût de maintenance est aussi très faible. Vous pouvez ne pas avoir le même niveau de confiance pour un cas de test unitaire qui s’est exécuté avec succès que pour un cas de test fonctionnel. Vous pourriez avoir besoin de plusieurs cas de test unitaire pour avoir le même niveau de confiance. Mais le coût de tous ces petits cas de test unitaire restent malgré tout plus faible que celui de plusieurs cas de test fonctionnel.&lt;br /&gt;
&lt;br /&gt;
Si le code source n&#039;a bénéficié d&#039;aucun test unitaire depuis les deux dernières années, il y aura un coût supplémentaire pour lui en appliquer un. Ce coût a deux origines principales :&lt;br /&gt;
&lt;br /&gt;
# Le coût d’application d’un &#039;&#039;framework&#039;&#039; de test sur le code du projet. C&#039;est relativement plus facile pour des langages de programmation dynamique comme Python, Ruby ou Javascript. De manière générale, c’est aussi relativement trivial pour des projets Java ou C#. Cela peut être toutefois assez compliqué pour un projet C/C++. Que ce soit facile ou difficile, c’est un investissement à ne faire qu’une seule fois.&lt;br /&gt;
# Le code source existant n’est pas testable car le code a été conçu au départ sans prendre en compte l’aspect testabilité. Appliquer des tests unitaires à ce type de code source implique souvent de devoir améliorer la conception existante. Mener cette amélioration implique non seulement une augmentation du coût concernant la création des tests, mais a potentiellement un autre coût qui est lié à l&#039;introduction de nouvelles anomalies en changeant ladite conception. Par conséquent, l’introduction de tests unitaires pour un code source existant se doit d’être combinée avec d’autres types de travaux qui nécessiteront des modifications dans le code sous test — autrement dit lorsque le moment sera venu de changer ce morceau de code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité interne vs. Qualité Externe&#039;&#039;&#039; — Les tests automatisés de haut niveau comme les tests fonctionnels et les tests systèmes contrôlent la qualité externe du logiciel. La qualité externe permet de connaître le niveau de fonctionnement du logiciel par rapport aux exigences. En effet, les tests unitaires ne sont pas aussi efficaces que les tests fonctionnels pour protéger la qualité externe. Par contre, les tests unitaires s’assurent de la qualité interne du logiciel. La qualité interne veut dire ici la testabilité du code et permet de savoir jusqu’à quel niveau le code est protégé. Une conception testable est synonyme en général de bonne conception. D’autres types de tests automatisés ne remplissent pas ce rôle aussi bien que les tests unitaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité du &#039;&#039;feedback&#039;&#039;&#039;&#039;&#039; — Après avoir passé un test fonctionnel, vous pouvez être confiant vis-à-vis de la fonctionnalité testée. Mais lorsque vous vous apercevez que le test échoue, vous devez généralement faire du déboggage pour trouver ce qui est erroné. Les tests unitaires peuvent vous donner une information plus précise sur ce qui fonctionne ou ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires étant sur le même niveau d’abstraction que le langage de programmation employé, tout devrait s’exécuter au niveau du micro-processeur et de la mémoire lors de l’exécution du test unitaire. Et comme chaque cas de test devrait être de petite taille, il devrait donc s’exécuter très rapidement. Ainsi, vous devriez être en mesure d’exécuter plusieurs centaines de tests unitaires en quelques secondes. En prenant en compte le temps de compilation ou de préparation, l’ensemble du processus d’exécution d’un test unitaire devrait prendre moins d’une minute.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi être répétables. Si rien ne change d’une fois sur l’autre, l’exécution d’un test unitaire devrait toujours retourner le même résultat.&lt;br /&gt;
&lt;br /&gt;
Si un test unitaire est très rapide et répétable, les développeurs peuvent l’exécuter aussi souvent qu’ils le veulent, par exemple toutes les deux minutes. Le test unitaire fournira en permanence aux développeurs des retours d’informations liés à la qualité. Cela permettra ainsi aux développeurs d’avancer à un rythme régulier et de se focaliser sur des choses plus importantes plutôt que de passer trop d’énergie sur des choses triviales.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xtest_levels_fr.png|Xtest_levels_fr.png|border|link=|700px]]&lt;br /&gt;
&lt;br /&gt;
Une structure de test automatisé acceptable devrait ressembler à une pyramide. À la base de la pyramide, il y a un grand nombre de cas de tests unitaires. Au milieu, des cas de tests d’intégration en moins grand nombre. En haut, seulement quelques cas de tests fonctionnels ou systèmes.&lt;br /&gt;
&lt;br /&gt;
== Idées fausses à propos du test unitaire ==&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire n’est pas aussi vital que le code en production ===&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu’en fin de compte, c’est le code en production qui donne vraiment vie au produit. Mais la plupart des produits logiciels ont des cycles de vie évolutif. Le code n’est pas statique. Il change avec le temps. Un code sans test unitaire n’est pas suffisamment protégé lorsqu’une modification est faite. Le test unitaire contient aussi des informations importantes qui ne sont pas présentes dans le code en production.&lt;br /&gt;
&lt;br /&gt;
Par conséquent le test unitaire est tout aussi important que le code en production. Il devrait être stocké &#039;&#039;&#039;dans le même dépôt de gestion du code source&#039;&#039;&#039;. Le test unitaire devrait d’ailleurs suivre les mêmes conventions de codage que le code en production.&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire est fait par des ingénieurs tests ===&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Techniquement, il &#039;&#039;vérifie&#039;&#039; plutôt que &#039;&#039;teste&#039;&#039; si le code sous test a implémenté le comportement voulu par le développeur qui l’a conçu. Donc le choix logique est de simplement laisser la même personne écrire à la fois le test et le code sous test.&lt;br /&gt;
&lt;br /&gt;
Il est aussi encouragé d’avoir deux ou plusieurs personnes travaillant de concert pour programmer à la fois le test et le code sous test. Il existe plusieurs manières sympa pour programmer en binôme. Vous trouverez davantage d’informations à ce sujet dans la section développement piloté par les tests.&lt;br /&gt;
&lt;br /&gt;
=== Vous pouvez écrire des tests unitaires sans changer le code sous test. ===&lt;br /&gt;
&lt;br /&gt;
Ce n’est pas toujours le cas. Si le code n’a pas une bonne testabilité, vous pourriez tout de même être capable techniquement d’écrire le test unitaire qui va avec. Mais un test unitaire qui a été écrit pour un code non-testable est généralement très difficile à maintenir et à comprendre. Par conséquent, il n’y a pas vraiment de raison d’en avoir un.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le secret du test unitaire n’est pas d’écrire du test, mais d’écrire un code testable sous test.&#039;&#039;&#039; Nous voulons du code testable et facile à tester, ce qui s’avère une démarche gagnant-gagnant. Nous ne voulons pas de code non-testable et difficile à maintenir, ce qui serait une démarche perdant-perdant.&lt;br /&gt;
&lt;br /&gt;
=== Je peux ajouter les tests unitaires plus tard ===&lt;br /&gt;
&lt;br /&gt;
Eh bien, essayez donc de demander à des grimpeurs de mettre leurs pitons plus tard.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png|border|link=|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schéma pour de bons tests unitaires ==&lt;br /&gt;
&lt;br /&gt;
=== Pas de nouvelles, bonnes nouvelles ===&lt;br /&gt;
&lt;br /&gt;
Si le test passe, il devrait afficher seulement OK (voire quelques points pour afficher son avancement). Aucune autre information n&#039;est nécessaire.&lt;br /&gt;
&lt;br /&gt;
[[Image:unit_test_success.png|unit_test_success.png|border|link=|800px]]&lt;br /&gt;
&lt;br /&gt;
Règle empirique :&lt;br /&gt;
&lt;br /&gt;
 Aucune intervention humaine ne devrait être nécessaire pour préparer l’exécution du test, exécuter les cas de tests ou en vérifier les résultats.&lt;br /&gt;
&lt;br /&gt;
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupé à débogguer le code concerné.&lt;br /&gt;
&lt;br /&gt;
[[Image:342xNxunit_test_fail.png|342xNxunit_test_fail.png|border|link=]]&lt;br /&gt;
&lt;br /&gt;
=== Arranger, Agir, Auditer (&#039;&#039;Arrange&#039;&#039;, &#039;&#039;Act&#039;&#039;, &#039;&#039;Assert&#039;&#039;) ===&lt;br /&gt;
&lt;br /&gt;
Un bon schéma à suivre en ce qui concerne les tests unitaires est &amp;quot;&#039;&#039;&#039;AAA&#039;&#039;&#039;&amp;quot; : &#039;&#039;&#039;Arrange (dans le sens de mettre en place)&#039;&#039;&#039;, &#039;&#039;&#039;Act (dans le sens d’une action faite sur quelque chose)&#039;&#039;&#039; et &#039;&#039;&#039;Assert (dans le sens de contrôler)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient être facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
def test\_pas\_de\_retour\_à\_la\_ligne\_lorsque\_longueur\_de\_la\_chaîne\_de\_caractères\_de\_5\_et\_largeur\_de\_la\_ligne\_de\_10(self):&lt;br /&gt;
     \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.&lt;br /&gt;
     wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
     \# Act :  Agir sur l&#039;objet ou sur la méthode sous test.&lt;br /&gt;
     wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
     \# Assert :  Contrôle que le résultat attendu s&#039;est bien produit.&lt;br /&gt;
     self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Développement piloté par le comportement (BDD) ===&lt;br /&gt;
&lt;br /&gt;
Identique au schéma &#039;&#039;&#039;AAA&#039;&#039;&#039;, le &#039;&#039;&#039;BDD&#039;&#039;&#039; utilise trois mots-clés différents pour spécifier chaque cas de test : &#039;&#039;&#039;Étant donné&#039;&#039;&#039;, &#039;&#039;&#039;Lorsque&#039;&#039;&#039; et &#039;&#039;&#039;Alors&#039;&#039;&#039;. (Vous pouvez aussi utiliser &#039;&#039;&#039;Et&#039;&#039;&#039; comme mot-clé supplémentaire)&lt;br /&gt;
&lt;br /&gt;
Given / Étant donné que la longueur du texte pour le retour à la ligne est défini à 10&lt;br /&gt;
And / Et que le caractère &#039;-&#039; est utilisé comme connecteur entre deux mots&lt;br /&gt;
When / Lorsque la longueur du texte est inférieure à 10&lt;br /&gt;
Then / Alors le texte ne devrait pas être retourné à la ligne&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le triptyque &amp;quot;étant donné - lorsque - alors&amp;quot; s&#039;allie plutôt bien avec le triptyque &amp;quot;Arrange - Act - Assert&amp;quot;. Ils définissent tous les deux un état transition d’une machine à état finie. Vous pouvez en savoir plus en consultant cet article d’[https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Oncle Bob]. Voici quelques différences entre les deux :&lt;br /&gt;
* Le BDD est davantage orienté &amp;quot;dehors vers dedans&amp;quot;, cela veut dire qu’il met davantage l’accent sur le comportement externe&lt;br /&gt;
* Avec le BDD, vous devez définir un &#039;&#039;&#039;langage spécifique au domaine&#039;&#039;&#039; pour écrire vos spécifications de tests. À cause de cela, vous aurez besoin généralement d’un &#039;&#039;framework&#039;&#039; supplémentaire. Par exemple, pour Python vous pourrez utilisez [https://pypi.org/project/behave/ behave].&lt;br /&gt;
&lt;br /&gt;
=== La règle d’or du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
De manière générale, une bonne règle d’or pour des tests unitaires serait :&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Chaque cas de test unitaire devrait comporter un périmètre très restreint.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
De telle manière que... :&lt;br /&gt;
&lt;br /&gt;
* Lorsque le test échoue, qu’il ne soit pas nécessaire de faire du déboggage pour localiser le problème.&lt;br /&gt;
* Les tests soient stables car les dépendances sont limitées.&lt;br /&gt;
* Il y ait moins de duplications, que ce soit plus facile à maintenir.&lt;br /&gt;
&lt;br /&gt;
Il n’existe pas de secrets pour écrire un bon test unitaire. Afin d’écrire un bon test unitaire, vous devez créer une conception qui soit facile à tester.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15286</id>
		<title>LeSS - Tests unitaires</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15286"/>
		<updated>2022-06-29T11:12:33Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Correction nom image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: &lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/unit-testing.html Unit Testing - Large Scale Scrum (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traducteur : Nicolas Mereaux&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Date : 29/06/2022&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traduction :&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Is Unit Test? ==&lt;br /&gt;
&lt;br /&gt;
== Qu’est-ce que les tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unit Test&#039;&#039;&#039;s are software programs written to exercise other software programs (called &#039;&#039;&#039;Code Under Test&#039;&#039;&#039;, or &#039;&#039;&#039;Production Code&#039;&#039;&#039;) with &#039;&#039;&#039;specific&#039;&#039;&#039; preconditions and verify the &#039;&#039;&#039;expected behaviour&#039;&#039;&#039;s of the CUT.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les tests unitaires&#039;&#039;&#039; sont des programmes informatiques écrits pour exercer d’autres programmes (qui peuvent être désignés sous l’appellation &#039;&#039;&#039;Code sous test&#039;&#039;&#039;, ou &#039;&#039;&#039;Code en Production&#039;&#039;&#039;) à l’aide de pré conditions &#039;&#039;&#039;spécifiques&#039;&#039;&#039; et ainsi en vérifier le comportement attendu.&lt;br /&gt;
&lt;br /&gt;
Unit tests are usually written in the same programming language as their code under test.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires sont généralement écrits dans le même langage de programmation que le code testé.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&#039;unit test&#039;&#039;&#039; should be small and test only limited piece of code functionality. Test cases are often grouped into &#039;&#039;&#039;Test Groups&#039;&#039;&#039; or &#039;&#039;&#039;Test Suites&#039;&#039;&#039;. There are many open source &#039;&#039;&#039;unit test framework&#039;&#039;&#039;s. The popular ones usually follow an &#039;&#039;&#039;xUnit&#039;&#039;&#039; pattern invented by [http://c2.com/cgi/wiki?KentBeck Kent Beck], for example, JUnit for Java and CppUTest for C/C++.&lt;br /&gt;
&lt;br /&gt;
Chaque &#039;&#039;&#039;test unitaire&#039;&#039;&#039; devrait être de taille réduite et ne devrait tester qu’une fraction du code de la fonctionnalité. Les cas de tests sont souvent regroupés en &#039;&#039;&#039;Groupes de tests&#039;&#039;&#039; ou en &#039;&#039;&#039;Suites de tests&#039;&#039;&#039;. Il existe de nombreux &#039;&#039;&#039;&#039;&#039;frameworks&#039;&#039; de tests unitaires&#039;&#039;&#039;. Les plus populaires, comme par exemple JUnit pour le langage Java et CppUTest pour les langages C/C++, suivent un schéma dénommé &#039;&#039;&#039;xUnit&#039;&#039;&#039; inventé par [http://c2.com/cgi/wiki?KentBeck Kent Beck].&lt;br /&gt;
&lt;br /&gt;
Unit tests should also run very fast. Usually, we expect to &#039;&#039;&#039;run hundreds of unit test cases within a few seconds&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi s’exécuter très rapidement. Généralement, on s’attend à ce qu’&#039;&#039;&#039;une centaine de cas de tests unitaires s’exécutent en quelques secondes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Why Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Pourquoi faire des tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
The purpose of unit testing is not for finding bugs. It’s a &#039;&#039;&#039;specification&#039;&#039;&#039; for the expected behaviours of the code under test. The code under test is the implementation for those expected behaviours. So unit test and the code under test are used to check the correctness of each other, and protect each other. Later when someone changed the code under test, and it changed the behaviour that is expected by the original author, the test will fail. If you code is covered by reasonable unit test, you can maintain the code without breaking the existing feature. That’s why Michael Feathers define &#039;&#039;&#039;legacy code&#039;&#039;&#039; as &#039;&#039;code without unit test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Le test unitaire est une &#039;&#039;&#039;spécification&#039;&#039;&#039; des comportements attendus du code sous test. Le code sous test est l’implémentation de ces comportements attendus. Donc les tests unitaires et le code sous test sont utilisés pour vérifier l’exactitude de l’un par rapport à l’autre et se protègent ainsi mutuellement. Si quelqu’un change le code sous test, et que cela change le comportement attendu par l’auteur originel, le test échouera. Si votre code est couvert par un test unitaire cohérent, vous pouvez maintenir le code sans casser la fonctionnalité existante. C’est la raison pour laquelle Michael Feathers définit du &#039;&#039;&#039;code hérité&#039;&#039;&#039; comme du &#039;&#039;code sans test unitaire&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png]]&lt;br /&gt;
&lt;br /&gt;
The purpose for unit testing is rather protect what we have implemented than to find any defects, just like the anchors set by a rock climber along his way up the rock. These anchors help him to protect what he has achieved.&lt;br /&gt;
&lt;br /&gt;
Le but du test unitaire est donc plutôt de protéger ce que nous avons implémenté que de trouver des anomalies, tout comme les pitons mis par un grimpeur le long de son ascension. Ces pitons sont là pour l’aider à sécuriser le parcours qu’il a déjà accompli.&lt;br /&gt;
&lt;br /&gt;
=== Purpose of Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== Objectif du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test can be summarised as:&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire peut être résumé ainsi :&lt;br /&gt;
&lt;br /&gt;
* Facilitates changes&lt;br /&gt;
** It protects the behaviours decided by the previous programmers. So that people can change the code without breaking the existing features.&lt;br /&gt;
* Faciliter les changements&lt;br /&gt;
** Le test unitaire fait en sorte de protéger les comportements décidés par développeurs qui se sont succédés afin qu’il soit possible de changer le code sans casser les fonctionnalités existantes.&lt;br /&gt;
* Simplifies integration&lt;br /&gt;
** Unit test tests the basic units of the program, the functions and the classes. It makes sure the basic units are functioning as expected. When these units are integrated together, we can separate the integration problems (the coupling problems) from the unit internal problems (the cohesion problems).&lt;br /&gt;
* Simplifier l’intégration&lt;br /&gt;
** Le test unitaire teste les unités de base du programme, autrement dit les fonctions et les classes. Le test unitaire fait en sorte de sécuriser les briques élémentaires pour qu’elles fonctionnent comme prévu. Lorsque ces unités de base sont intégrées ensemble, nous pouvons séparer ainsi les problèmes d’intégration (les problèmes de couplage) des problèmes internes des unités de base (les problèmes de cohésion).&lt;br /&gt;
* Documentation&lt;br /&gt;
** Well-written unit test can be used as documentation for the functionality of the code under test. Unit test contains information typically you cannot find from the code under test, for example, the design purpose of the original programming who wrote the code, and how the code is expected to be used. Unit test as documentation, unlike other traditional documentation, it doesn’t “lie”. Because if it lies, the test would fail. And that indicates either the test or the code is wrong.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Des tests unitaires bien écrits peuvent servir de documentation de la fonctionnalité du code sous test. Le test unitaire contient des informations que vous ne pouvez pas trouver dans le code testé, comme par exemple, quel est l’objectif de la conception du développeur à l’origine du code, de quelle manière le code est censé se comporter à l’exécution. Le test unitaire, à la différence de la documentation traditionnelle, ne « ment » pas. Parce que si le test unitaire ment, le test viendrait à échouer. Et dans ce cas, cela indique que le test ou le code est erroné.&lt;br /&gt;
* Design tool&lt;br /&gt;
** Unit test is also an important design tool. Unit test requires testability from the code understand. Easy-to-test usually means easy-to-use. So unit test could be used to make sure the design has consideration from the perspective of use, rather than only from the perspective of implementation. Testable code needs better modularity and fewer dependencies. So that the unit test can easily take a small part of the code under test (a “unit”) without taking care of the overwhelming amount of dependencies. So unit test could be used to make sure the design has “high cohesion, low coupling”.&lt;br /&gt;
* Outil de conception&lt;br /&gt;
** Le test unitaire est aussi un outil de conception. Pour que le test unitaire remplisse son rôle, il est nécessaire d’appréhender la testabilité du code. Facile à tester veut généralement dire facile à utiliser. Cela signifie que le test unitaire peut être utilisé pour que la conception soit faite du point de vue de l’utilisation et non uniquement du point de vue de l’implémentation. Un code testable doit être davantage modulaire et avoir moins de dépendances. Par conséquence, le test unitaire peut donc facilement ne concerner qu’une petite partie du code testé (un « unitaire ») sans avoir à se soucier de la quantité impressionnante de dépendances qu’il pourrait y avoir. Par conséquent, le test unitaire peut être utilisé pour s’assurer que la conception ait comme caractéristique « une forte cohésion, un faible couplage ».&lt;br /&gt;
&lt;br /&gt;
=== Why on “Unit” Level? ===&lt;br /&gt;
&lt;br /&gt;
=== Pourquoi à un niveau « unitaire » ? ===&lt;br /&gt;
&lt;br /&gt;
“Yes, it’s important to use automated test to protect the existing functionalities. But why does it need to be on the unit level?”&lt;br /&gt;
&lt;br /&gt;
« Oui, il est important d’utiliser des tests automatisés pour protéger les fonctionnalités existantes. Mais pourquoi cela doit-il être fait au niveau unitaire ? »&lt;br /&gt;
&lt;br /&gt;
You might wonder. Why don’t we just use thorough automated functional or system tests to protect the program?&lt;br /&gt;
&lt;br /&gt;
Vous pourriez vous interroger. Pourquoi n’utilisons-nous tout simplement pas de manière rigoureuse des tests fonctionnels automatisés ou des tests systèmes automatisés pour protéger le programme ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Total cost of ownership&#039;&#039;&#039; – Unit test is based on the abstraction level of the programming language. It’s just some code exercising other code. It doesn’t need to run in the same environment as the production. For compiled programming language, it doesn’t even need to use the same compiler as the production. The creating and running cost of unit test is very low. If designed properly, the cost of maintaining is also very low. You may not get the same level of confidence from one successful unit test case as you can get from a functional test. You will need many small unit test cases to get approximately the same level of confidence. But the cost of these small unit test cases is still much lower than owning a few functional test cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le coût total de possession&#039;&#039;&#039; — Le test unitaire se base sur le niveau d’abstraction du langage de programmation utilisé. Il s’agit juste d’un bout de code qui va s’exécuter sur un autre bout de code. Il n’a pas besoin de s’exécuter sur le même environnement que celui en production. Pour un langage compilé, il n’est même pas nécessaire d’utiliser le même compilateur que celui en production. Le coût de la création et l’exécution est très faible. S’il est conçu correctement, le coût de maintenance est aussi très faible. Vous pouvez ne pas avoir le même niveau de confiance pour un cas de test unitaire qui s’est exécuté avec succès que pour un cas de test fonctionnel. Vous pourriez avoir besoin de plusieurs cas de test unitaire pour avoir le même niveau de confiance. Malgré tout, le coût de tous ces petits cas de test unitaire restent tout de même plus faible que celui de plusieurs cas de test fonctionnel.&lt;br /&gt;
&lt;br /&gt;
If a software code base hasn’t got any unit test for the past 2 years, there will be extra cost for applying unit test to this code base. The cost comes mostly from two sources:&lt;br /&gt;
&lt;br /&gt;
Si la base de code n’a eu aucun test unitaire dans les deux dernières années, il y aura un coût supplémentaire pour lui en appliquer un. Ce coût a deux sources principales :&lt;br /&gt;
&lt;br /&gt;
# The cost of applying a test framework to the code project. This is relatively easier for dynamic programming languages like Python, Ruby or Javascript. Usually, it’s also trivial for Java and C# project. It can be quite tricky for C/C++ project. No matter easy or hard, this is just one-time investment.&lt;br /&gt;
# Le coût d’application d’un &#039;&#039;framework&#039;&#039; de test sur le code du projet. Cela est relativement plus facile pour des langages de programmation dynamique comme Python, Ruby ou Javascript. De manière générale, c’est aussi relativement trivial dans des projets Java ou C#. Cela peut être toutefois assez compliqué dans un projet C/C++. Que ce soit facile ou difficile, c’est un investissement à ne faire qu’une seule fois.&lt;br /&gt;
# The existing code base is not testable. The code was designed without considering the testability. Applying unit test to this kind of code base often involves improving the current design. Doing so doesn’t only increase the cost of creating test, but also has potential cost of introducing new bugs by changing the design. So applying unit test to existing code base should be combined with other works that need the change from the code under test – when you have to change that piece of code regardless.&lt;br /&gt;
# La base de code existante n’est pas testable car le code a été conçu au départ sans prendre en compte l’aspect testabilité. Appliquer des tests unitaires à ce type de base de code implique souvent de devoir améliorer la conception existante. Faire cette amélioration implique non seulement une augmentation du coût concernant la création des tests, mais a aussi potentiellement un coût d’introduire de nouvelles anomalies en changeant ladite conception. Par conséquent, l’introduction de tests unitaires à une base de code existante se doit d’être combinée avec d’autres types de travaux qui nécessiteront des modifications dans le code sous test — autrement dit lorsque le moment sera venu de changer ce morceau de code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal Quality vs. External Quality&#039;&#039;&#039; – High level automated test like functional test and system test checks the external quality of the software. External quality means how well the software is functioning according to the requirement. Unit test is not as effective as the functional test in protecting the external quality. On the other hand, unit test ensures some of the internal qualities of the software. Internal quality here means the testability of the code and how well the code is protected. A testable design is in general a good design. Other levels of automated test cannot serve this purpose as well as unit test.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité interne vs. qualité externe&#039;&#039;&#039; — Les tests automatisés de haut niveau comme les tests fonctionnels et les tests systèmes contrôlent la qualité externe du logiciel. La qualité externe permet de savoir le niveau de fonctionnement du logiciel par rapport aux exigences. En effet, les tests unitaires ne sont pas aussi efficaces que les tests fonctionnels pour protéger la qualité externe. Par contre, les tests unitaires s’assurent de la qualité interne du logiciel. La qualité interne veut dire ici testabilité du code et permet de savoir jusqu’à quel niveau le code est protégé. Une conception testable est synonyme en général de bonne conception. D’autres types de tests automatisés ne remplissent pas ce rôle aussi bien que les tests unitaires.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quality of feedback&#039;&#039;&#039; When you passed a functional test, you could be very confident about the functionality you just tested. But when you found it fail, usually you need to do some debugging to see what is wrong. Unit test might be able to give you more precise information about what is working and what is broken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité du &#039;&#039;feedback&#039;&#039;&#039;&#039;&#039; Après avoir passé un test fonctionnel, vous pouvez être confiant vis-à-vis de la fonctionnalité testée. Mais lorsque vous vous apercevez que le test échoue, vous devez généralement faire du déboggage pour trouver ce qui est erroné. Les tests unitaires peuvent vous donner une information plus précise sur ce qui fonctionne ou ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
Unit test is on the abstraction level of the programming language. When running unit test, everything should happen just within the CPU and memory. And each test case should be small. Therefore, it should run very fast. Typically, you should be able to run hundreds of unit tests within a few seconds. Including the compiling or other preparation time, the whole process of running unit test should take less than 1 minute.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires étant sur le même niveau d’abstraction que le langage de programmation employé, tout devrait s’exécuter au niveau du micro-processeur et de la mémoire lors de l’exécution du test unitaire. Et comme chaque cas de test devrait être de petite taille, il devrait donc s’exécuter très rapidement. Ainsi, vous devriez être en mesure d’exécuter plusieurs centaines de tests unitaires en quelques secondes. Cela comprend le temps de compilation ou de préparation, l’ensemble du processus d’exécution d’un test unitaire devrait prendre moins d’une minute.&lt;br /&gt;
&lt;br /&gt;
Unit test should also be repeatable. If nothing changes, unit test runs should always return the same result.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi être répétables. Si rien ne change d’une fois sur l’autre, l’exécution d’un test unitaire devrait retourner toujours le même résultat.&lt;br /&gt;
&lt;br /&gt;
If the unit test is very fast and repeatable, programmers can run it as often as they want, e.g. every a few minutes. The unit test will continuously provide quality feedback to the programmer. So that the programmer can go with a steady progress and focus on more important things rather than spending too much energy on trivial issues.&lt;br /&gt;
&lt;br /&gt;
Si un test unitaire est très rapide et répétable, les développeurs peuvent l’exécuter aussi souvent qu’ils le veulent, par exemple toutes les quelques minutes. Le test unitaire fournira en permanence aux développeurs des retours d’informations liés à la qualité. Cela permettra ainsi aux développeurs d’avancer à un rythme régulier et de se focaliser sur des choses plus importantes plutôt que de passer trop d’énergie sur des choses triviales.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xtest_levels.png.pagespeed.ic.-xbOy_tP-P.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xtest_levels_fr.png|Xtest_levels_fr.png]]&lt;br /&gt;
&lt;br /&gt;
A reasonable automated test structure should be like a pyramid. At the bottom are a lot of unit test cases. In the middle are much fewer integration level test cases. On the top, there are even fewer functional/system level tests.&lt;br /&gt;
&lt;br /&gt;
Une structure de test automatisé acceptable devrait ressembler à une pyramide. À la base de la pyramide, il y a un grand nombre de cas de tests unitaires. Au milieu, des cas de tests d’intégration en moins grand nombre. En haut, seulement quelques cas de tests fonctionnels ou systèmes.&lt;br /&gt;
&lt;br /&gt;
== Common Misconceptions of Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Idées fausses à propos du test unitaire ==&lt;br /&gt;
&lt;br /&gt;
=== Unit test is not as important as the production code ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire n’est pas aussi vital que le code en production ===&lt;br /&gt;
&lt;br /&gt;
It is true that in the end, it’s production code that makes the product. But most software products have evolutionary life cycles. The code is not static. It changes over time. Code without unit test does not have the necessary protection when being changed. Unit test also contains important information that is not included in the production code.&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu’en fin de compte, c’est le code en production qui donne vraiment vie au produit. Mais la plupart des produits logiciels ont des cycles de vie évolutif. Le code n’est pas statique. Il change avec le temps. Du code sans test unitaire n’est suffisamment protégé lorsqu’une modification est faite. Le test unitaire contient aussi des informations importantes qui ne sont pas présentes dans le code en production.&lt;br /&gt;
&lt;br /&gt;
So unit test is just as important as the production code. They should be &#039;&#039;&#039;in the same SCM repository&#039;&#039;&#039;. They should follow the same coding standard as the production code.&lt;br /&gt;
&lt;br /&gt;
Par conséquent le test unitaire est tout aussi important que le code en production. Il devrait être stocké &#039;&#039;&#039;dans le même dépôt de gestion du code source&#039;&#039;&#039;. Le test unitaire devrait d’ailleurs suivre les mêmes conventions de codage que le code en production.&lt;br /&gt;
&lt;br /&gt;
=== Unit Test is done by testing engineers ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire est fait par des ingénieurs tests ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test is not for finding bugs. Technically, it &#039;&#039;checks&#039;&#039; rather than &#039;&#039;tests&#039;&#039; if the code under test has implemented the behaviour intended by the programmer who designed it. So the reasonable choice is just let the same programmer writes both the test and the code under test.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Techniquement, il &#039;&#039;vérifie&#039;&#039; plutôt que &#039;&#039;teste&#039;&#039; si le code sous test a implémenté le comportement voulu par le développeur qui l’a conçu. Donc le choix logique est de simplement laisser la même personne écrire à la fois le test et le code sous test.&lt;br /&gt;
&lt;br /&gt;
It’s also encouraged to have two or more people pair up to do the programming together. They write the unit test and the code under test together. There are many fun ways of &#039;&#039;pair-programming&#039;&#039;. You may find more information in the Test-Driven Development section.&lt;br /&gt;
&lt;br /&gt;
Il est aussi encouragé d’avoir deux ou plusieurs personnes travaillant de concert pour programmer à la fois le test et le code sous test. Il existe plusieurs manières sympa pour programmer en binôme. Vous trouverez davantage d’informations à ce sujet dans la section développement piloté par les tests.&lt;br /&gt;
&lt;br /&gt;
=== You can write unit test without changing the code under test ===&lt;br /&gt;
&lt;br /&gt;
=== Vous pouvez écrire des tests unitaires sans changer le code sous test. ===&lt;br /&gt;
&lt;br /&gt;
This is often not true. If the code doesn’t have good testability, you might still be able to write unit test for it technically. But the unit test written for non-testable code is usually very hard to maintain and understand. Therefore, it doesn’t make much sense to have it.&lt;br /&gt;
&lt;br /&gt;
Ce n’est pas toujours le cas. Si le code n’a pas une bonne testabilité, vous pourriez tout de même être capable techniquement d’écrire le test unitaire qui va avec. Mais un test unitaire qui a été écrit pour un code non-testable est généralement très difficile à maintenir et à comprendre. Par conséquent, il n’y a pas vraiment de raison d’en avoir un.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The secret of unit test is not about writing test, but writing testable code under test.&#039;&#039;&#039; We want testable code and easy test, which is a win-win. We don’t want non-testable code and hard-to-maintain code, which is a lose-lose.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le secret du test unitaire n’est pas d’écrire du test, mais d’écrire du code testable sous test.&#039;&#039;&#039; Nous voulons du code testable et facile à tester, ce qui s’avère une démarche gagnant-gagnant. Nous ne voulons pas de code non-testable et difficile à maintenir, ce qui serait une démarche perdant-perdant.&lt;br /&gt;
&lt;br /&gt;
=== I can add unit test later ===&lt;br /&gt;
&lt;br /&gt;
=== Je peux ajouter les tests unitaires plus tard ===&lt;br /&gt;
&lt;br /&gt;
Well, try asking the rock climbers to set their anchors later.&lt;br /&gt;
&lt;br /&gt;
Eh bien, essayez donc de demander à des grimpeurs de mettre leurs pitons plus tard.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png]]&lt;br /&gt;
&lt;br /&gt;
== Good Unit Test Patterns ==&lt;br /&gt;
&lt;br /&gt;
== Schéma pour de bons tests unitaires ==&lt;br /&gt;
&lt;br /&gt;
=== No news is good news ===&lt;br /&gt;
&lt;br /&gt;
=== Pas de nouvelles, bonnes nouvelles ===&lt;br /&gt;
&lt;br /&gt;
If the test passes, it should just print OK (and perhaps some dots to show the progress). No other information.&lt;br /&gt;
&lt;br /&gt;
Si le test passe, il devrait afficher seulement OK (voire quelques points pour afficher son avancement). Aucune autre information nécessaire.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/500xNxunit_test_success.png.pagespeed.ic.W3mg1FIwIC.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:unit_test_success.png|unit_test_success.png]]&lt;br /&gt;
&lt;br /&gt;
Rule of thumb:&lt;br /&gt;
&lt;br /&gt;
En règle générale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;No human intervention should be needed to get ready for the test, running the test cases or checking the result.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Aucune intervention humaine ne devrait être nécessaire pour préparer l’exécution du test, exécuter les cas de tests ou en vérifier les résultats.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
And when it fails, it should provide precise information. The goal is to limit the amount of time you spend on debugging when the test fails.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/342xNxunit_test_fail.png.pagespeed.ic.eM-9actgRz.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:342xNxunit_test_fail.png|342xNxunit_test_fail.png]]&lt;br /&gt;
&lt;br /&gt;
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupés à débogguer le code concerné.&lt;br /&gt;
&lt;br /&gt;
=== Arrange, Act, Assert ===&lt;br /&gt;
&lt;br /&gt;
=== Arranger, Agir, Auditer (Arrange, Act, Assert) ===&lt;br /&gt;
&lt;br /&gt;
A good pattern to follow in a unit test is “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange&#039;&#039;&#039;, &#039;&#039;&#039;Act&#039;&#039;&#039; and &#039;&#039;&#039;Assert&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Un bon schéma à suivre en ce qui concerne les tests unitaires est “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange (dans le sens de mettre en place)&#039;&#039;&#039;, &#039;&#039;&#039;Act (dans le sens d’une action faite sur quelque chose)&#039;&#039;&#039; et &#039;&#039;&#039;Assert (dans le sens de contrôler)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you can easily find this pattern in each of your test cases, your tests should be easy to understand, and they should be fairly specific and to the point. One unit test case should test only one thing. Therefore, there should be only one set of AAA in one test case. A test case shouldn’t be very long (longer than 10 lines of code) if it follows the AAA pattern.&lt;br /&gt;
&lt;br /&gt;
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.&lt;br /&gt;
&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;def test\_should\_have\_no\_wrapping\_when\_string\_length\_is\_5\_and\_line\_width\_is\_10(self):&lt;br /&gt;
    \# Arrange:  Arrange all necessary preconditions and inputs.&lt;br /&gt;
    wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
    \# Act:  Act on the object or method under test.&lt;br /&gt;
    wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
    \# Assert:  Assert that the expected results have occurred.&lt;br /&gt;
    self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    def test\_ne\_devrait\_pas\_avoir\_de\_retour\_à\_la\_ligne\_lorsque\_la\_longueur\_de\_la\_chaîne\_de\_caractères\_est\_de\_5\_et\_que\_la\_hauteur\_est\_10(self):&lt;br /&gt;
        \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.&lt;br /&gt;
        wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
        \# Act :  Agir sur l&#039;objet ou sur la méthode sous test.&lt;br /&gt;
        wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
        \# Assert :  Contrôle que le résultat attendu s&#039;est bien produit.&lt;br /&gt;
        self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Behaviour Driven Development (BDD) Style ===&lt;br /&gt;
&lt;br /&gt;
=== Développement piloté par le comportement (BDD) ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;&#039;&#039;AAA&#039;&#039;&#039; pattern, the &#039;&#039;&#039;BDD&#039;&#039;&#039; style uses three other keywords to specify each test case: &#039;&#039;&#039;Given&#039;&#039;&#039;, &#039;&#039;&#039;When&#039;&#039;&#039; and &#039;&#039;&#039;Then&#039;&#039;&#039;. (You can also use &#039;&#039;&#039;And&#039;&#039;&#039; as another keyword.)&lt;br /&gt;
&lt;br /&gt;
Identique au schéma &#039;&#039;&#039;AAA&#039;&#039;&#039;, le BDD utilise trois mots-clés différents pour spécifier chaque cas de test : &#039;&#039;&#039;Étant donné&#039;&#039;&#039;, &#039;&#039;&#039;Lorsque&#039;&#039;&#039; et &#039;&#039;&#039;Alors&#039;&#039;&#039;. (Vous pouvez aussi utiliser &#039;&#039;&#039;Et&#039;&#039;&#039; comme mot-clé supplémentaire)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Given The Text Wrapper&#039;s Width Defined As 10&lt;br /&gt;
And Using &#039;-&#039; As Word Connector&lt;br /&gt;
When The Wrapper Wrap Text Length is Less Than 10&lt;br /&gt;
Then The Text Should Not Be Wrapped&lt;br /&gt;
&lt;br /&gt;
Given - Étant donné que la longueur du texte pour le retour à la ligne est défini à 10&lt;br /&gt;
And - Et que le caractère &#039;-&#039; est utilisé comme connecteur entre deux mots&lt;br /&gt;
When - Lorsque la longueur du texte est inférieure à 10&lt;br /&gt;
Then - Alors le texte ne devrait pas être retourné à la ligne&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you can see, “given-when-then” maps to “arrange-act-assert” pretty well. They both simply define a state transition of a Finite State Machine (FSM). You can find more on this in the [https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Uncle Bob’s article]. Some differences:&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le triptyque « étant donné - lorsque - alors » correspond plutôt bien avec le triptyque « Arrange - Act - Assert ». Ils définissent tous les deux un état transition d’une machine à état finie. Vous pouvez en savoir plus en consultant cet article d’[https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Oncle Bob]. Voici quelques différences entre les deux :&lt;br /&gt;
&lt;br /&gt;
* BDD is more “outside-in”, which means that it emphasises more the external behaviour&lt;br /&gt;
* With BDD, you need to define a &#039;&#039;&#039;domain specific language&#039;&#039;&#039; to write your test specifications. Because of this, usually you’ll need a different framework. One example for Python is [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
* Le BDD est davantage « dehors-dedans », cela veut dire qu’il met davantage l’accent sur le comportement externe&lt;br /&gt;
* Avec le BDD, vous devez définir un &#039;&#039;&#039;langage spécifique au domaine&#039;&#039;&#039; pour écrire vos spécifications de tests. À cause de cela, vous aurez besoin généralement d’un &#039;&#039;framework&#039;&#039; supplémentaire. Par exemple, pour Python vous pourrez utilisez [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
&lt;br /&gt;
=== The Golden Rule Of a Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== La règle d’or du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
In general, a good rule for unit test case is:&lt;br /&gt;
&lt;br /&gt;
De manière générale, une bonne règle d’or pour des tests unitaires serait :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Each unit test case should be very limited in scope.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Chaque cas de test unitaire devrait comporter un périmètre très restreint.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
So that:&lt;br /&gt;
&lt;br /&gt;
De telle manière que :&lt;br /&gt;
&lt;br /&gt;
* When the test fails, no debugging is needed to locate the problem.&lt;br /&gt;
* Tests are stable because dependencies are simple.&lt;br /&gt;
* Less duplication, easier to maintain.&lt;br /&gt;
* Lorsque le test échoue, qu’il ne soit pas nécessaire de faire du déboggage pour localiser le problème.&lt;br /&gt;
* Les tests soient stables car les dépendances sont limitées.&lt;br /&gt;
* Il y ait moins de duplications, que ce soit plus facile à maintenir&lt;br /&gt;
&lt;br /&gt;
There is no secret to write good unit test. In order to write good unit test, you need to create easy-to-test design.&lt;br /&gt;
&lt;br /&gt;
Il n’existe pas de secrets pour écrire un bon test unitaire. Afin d’écrire un bon test unitaire, vous devez créer une conception qui soit facile à tester.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:342xNxunit_test_fail.png&amp;diff=15285</id>
		<title>Fichier:342xNxunit test fail.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:342xNxunit_test_fail.png&amp;diff=15285"/>
		<updated>2022-06-29T11:12:01Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15284</id>
		<title>LeSS - Tests unitaires</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15284"/>
		<updated>2022-06-29T11:10:24Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Ajout images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: &lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/unit-testing.html Unit Testing - Large Scale Scrum (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traducteur : Nicolas Mereaux&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Date : 29/06/2022&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traduction :&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Is Unit Test? ==&lt;br /&gt;
&lt;br /&gt;
== Qu’est-ce que les tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unit Test&#039;&#039;&#039;s are software programs written to exercise other software programs (called &#039;&#039;&#039;Code Under Test&#039;&#039;&#039;, or &#039;&#039;&#039;Production Code&#039;&#039;&#039;) with &#039;&#039;&#039;specific&#039;&#039;&#039; preconditions and verify the &#039;&#039;&#039;expected behaviour&#039;&#039;&#039;s of the CUT.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les tests unitaires&#039;&#039;&#039; sont des programmes informatiques écrits pour exercer d’autres programmes (qui peuvent être désignés sous l’appellation &#039;&#039;&#039;Code sous test&#039;&#039;&#039;, ou &#039;&#039;&#039;Code en Production&#039;&#039;&#039;) à l’aide de pré conditions &#039;&#039;&#039;spécifiques&#039;&#039;&#039; et ainsi en vérifier le comportement attendu.&lt;br /&gt;
&lt;br /&gt;
Unit tests are usually written in the same programming language as their code under test.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires sont généralement écrits dans le même langage de programmation que le code testé.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&#039;unit test&#039;&#039;&#039; should be small and test only limited piece of code functionality. Test cases are often grouped into &#039;&#039;&#039;Test Groups&#039;&#039;&#039; or &#039;&#039;&#039;Test Suites&#039;&#039;&#039;. There are many open source &#039;&#039;&#039;unit test framework&#039;&#039;&#039;s. The popular ones usually follow an &#039;&#039;&#039;xUnit&#039;&#039;&#039; pattern invented by [http://c2.com/cgi/wiki?KentBeck Kent Beck], for example, JUnit for Java and CppUTest for C/C++.&lt;br /&gt;
&lt;br /&gt;
Chaque &#039;&#039;&#039;test unitaire&#039;&#039;&#039; devrait être de taille réduite et ne devrait tester qu’une fraction du code de la fonctionnalité. Les cas de tests sont souvent regroupés en &#039;&#039;&#039;Groupes de tests&#039;&#039;&#039; ou en &#039;&#039;&#039;Suites de tests&#039;&#039;&#039;. Il existe de nombreux &#039;&#039;&#039;&#039;&#039;frameworks&#039;&#039; de tests unitaires&#039;&#039;&#039;. Les plus populaires, comme par exemple JUnit pour le langage Java et CppUTest pour les langages C/C++, suivent un schéma dénommé &#039;&#039;&#039;xUnit&#039;&#039;&#039; inventé par [http://c2.com/cgi/wiki?KentBeck Kent Beck].&lt;br /&gt;
&lt;br /&gt;
Unit tests should also run very fast. Usually, we expect to &#039;&#039;&#039;run hundreds of unit test cases within a few seconds&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi s’exécuter très rapidement. Généralement, on s’attend à ce qu’&#039;&#039;&#039;une centaine de cas de tests unitaires s’exécutent en quelques secondes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Why Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Pourquoi faire des tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
The purpose of unit testing is not for finding bugs. It’s a &#039;&#039;&#039;specification&#039;&#039;&#039; for the expected behaviours of the code under test. The code under test is the implementation for those expected behaviours. So unit test and the code under test are used to check the correctness of each other, and protect each other. Later when someone changed the code under test, and it changed the behaviour that is expected by the original author, the test will fail. If you code is covered by reasonable unit test, you can maintain the code without breaking the existing feature. That’s why Michael Feathers define &#039;&#039;&#039;legacy code&#039;&#039;&#039; as &#039;&#039;code without unit test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Le test unitaire est une &#039;&#039;&#039;spécification&#039;&#039;&#039; des comportements attendus du code sous test. Le code sous test est l’implémentation de ces comportements attendus. Donc les tests unitaires et le code sous test sont utilisés pour vérifier l’exactitude de l’un par rapport à l’autre et se protègent ainsi mutuellement. Si quelqu’un change le code sous test, et que cela change le comportement attendu par l’auteur originel, le test échouera. Si votre code est couvert par un test unitaire cohérent, vous pouvez maintenir le code sans casser la fonctionnalité existante. C’est la raison pour laquelle Michael Feathers définit du &#039;&#039;&#039;code hérité&#039;&#039;&#039; comme du &#039;&#039;code sans test unitaire&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png]]&lt;br /&gt;
&lt;br /&gt;
The purpose for unit testing is rather protect what we have implemented than to find any defects, just like the anchors set by a rock climber along his way up the rock. These anchors help him to protect what he has achieved.&lt;br /&gt;
&lt;br /&gt;
Le but du test unitaire est donc plutôt de protéger ce que nous avons implémenté que de trouver des anomalies, tout comme les pitons mis par un grimpeur le long de son ascension. Ces pitons sont là pour l’aider à sécuriser le parcours qu’il a déjà accompli.&lt;br /&gt;
&lt;br /&gt;
=== Purpose of Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== Objectif du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test can be summarised as:&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire peut être résumé ainsi :&lt;br /&gt;
&lt;br /&gt;
* Facilitates changes&lt;br /&gt;
** It protects the behaviours decided by the previous programmers. So that people can change the code without breaking the existing features.&lt;br /&gt;
* Faciliter les changements&lt;br /&gt;
** Le test unitaire fait en sorte de protéger les comportements décidés par développeurs qui se sont succédés afin qu’il soit possible de changer le code sans casser les fonctionnalités existantes.&lt;br /&gt;
* Simplifies integration&lt;br /&gt;
** Unit test tests the basic units of the program, the functions and the classes. It makes sure the basic units are functioning as expected. When these units are integrated together, we can separate the integration problems (the coupling problems) from the unit internal problems (the cohesion problems).&lt;br /&gt;
* Simplifier l’intégration&lt;br /&gt;
** Le test unitaire teste les unités de base du programme, autrement dit les fonctions et les classes. Le test unitaire fait en sorte de sécuriser les briques élémentaires pour qu’elles fonctionnent comme prévu. Lorsque ces unités de base sont intégrées ensemble, nous pouvons séparer ainsi les problèmes d’intégration (les problèmes de couplage) des problèmes internes des unités de base (les problèmes de cohésion).&lt;br /&gt;
* Documentation&lt;br /&gt;
** Well-written unit test can be used as documentation for the functionality of the code under test. Unit test contains information typically you cannot find from the code under test, for example, the design purpose of the original programming who wrote the code, and how the code is expected to be used. Unit test as documentation, unlike other traditional documentation, it doesn’t “lie”. Because if it lies, the test would fail. And that indicates either the test or the code is wrong.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Des tests unitaires bien écrits peuvent servir de documentation de la fonctionnalité du code sous test. Le test unitaire contient des informations que vous ne pouvez pas trouver dans le code testé, comme par exemple, quel est l’objectif de la conception du développeur à l’origine du code, de quelle manière le code est censé se comporter à l’exécution. Le test unitaire, à la différence de la documentation traditionnelle, ne « ment » pas. Parce que si le test unitaire ment, le test viendrait à échouer. Et dans ce cas, cela indique que le test ou le code est erroné.&lt;br /&gt;
* Design tool&lt;br /&gt;
** Unit test is also an important design tool. Unit test requires testability from the code understand. Easy-to-test usually means easy-to-use. So unit test could be used to make sure the design has consideration from the perspective of use, rather than only from the perspective of implementation. Testable code needs better modularity and fewer dependencies. So that the unit test can easily take a small part of the code under test (a “unit”) without taking care of the overwhelming amount of dependencies. So unit test could be used to make sure the design has “high cohesion, low coupling”.&lt;br /&gt;
* Outil de conception&lt;br /&gt;
** Le test unitaire est aussi un outil de conception. Pour que le test unitaire remplisse son rôle, il est nécessaire d’appréhender la testabilité du code. Facile à tester veut généralement dire facile à utiliser. Cela signifie que le test unitaire peut être utilisé pour que la conception soit faite du point de vue de l’utilisation et non uniquement du point de vue de l’implémentation. Un code testable doit être davantage modulaire et avoir moins de dépendances. Par conséquence, le test unitaire peut donc facilement ne concerner qu’une petite partie du code testé (un « unitaire ») sans avoir à se soucier de la quantité impressionnante de dépendances qu’il pourrait y avoir. Par conséquent, le test unitaire peut être utilisé pour s’assurer que la conception ait comme caractéristique « une forte cohésion, un faible couplage ».&lt;br /&gt;
&lt;br /&gt;
=== Why on “Unit” Level? ===&lt;br /&gt;
&lt;br /&gt;
=== Pourquoi à un niveau « unitaire » ? ===&lt;br /&gt;
&lt;br /&gt;
“Yes, it’s important to use automated test to protect the existing functionalities. But why does it need to be on the unit level?”&lt;br /&gt;
&lt;br /&gt;
« Oui, il est important d’utiliser des tests automatisés pour protéger les fonctionnalités existantes. Mais pourquoi cela doit-il être fait au niveau unitaire ? »&lt;br /&gt;
&lt;br /&gt;
You might wonder. Why don’t we just use thorough automated functional or system tests to protect the program?&lt;br /&gt;
&lt;br /&gt;
Vous pourriez vous interroger. Pourquoi n’utilisons-nous tout simplement pas de manière rigoureuse des tests fonctionnels automatisés ou des tests systèmes automatisés pour protéger le programme ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Total cost of ownership&#039;&#039;&#039; – Unit test is based on the abstraction level of the programming language. It’s just some code exercising other code. It doesn’t need to run in the same environment as the production. For compiled programming language, it doesn’t even need to use the same compiler as the production. The creating and running cost of unit test is very low. If designed properly, the cost of maintaining is also very low. You may not get the same level of confidence from one successful unit test case as you can get from a functional test. You will need many small unit test cases to get approximately the same level of confidence. But the cost of these small unit test cases is still much lower than owning a few functional test cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le coût total de possession&#039;&#039;&#039; — Le test unitaire se base sur le niveau d’abstraction du langage de programmation utilisé. Il s’agit juste d’un bout de code qui va s’exécuter sur un autre bout de code. Il n’a pas besoin de s’exécuter sur le même environnement que celui en production. Pour un langage compilé, il n’est même pas nécessaire d’utiliser le même compilateur que celui en production. Le coût de la création et l’exécution est très faible. S’il est conçu correctement, le coût de maintenance est aussi très faible. Vous pouvez ne pas avoir le même niveau de confiance pour un cas de test unitaire qui s’est exécuté avec succès que pour un cas de test fonctionnel. Vous pourriez avoir besoin de plusieurs cas de test unitaire pour avoir le même niveau de confiance. Malgré tout, le coût de tous ces petits cas de test unitaire restent tout de même plus faible que celui de plusieurs cas de test fonctionnel.&lt;br /&gt;
&lt;br /&gt;
If a software code base hasn’t got any unit test for the past 2 years, there will be extra cost for applying unit test to this code base. The cost comes mostly from two sources:&lt;br /&gt;
&lt;br /&gt;
Si la base de code n’a eu aucun test unitaire dans les deux dernières années, il y aura un coût supplémentaire pour lui en appliquer un. Ce coût a deux sources principales :&lt;br /&gt;
&lt;br /&gt;
# The cost of applying a test framework to the code project. This is relatively easier for dynamic programming languages like Python, Ruby or Javascript. Usually, it’s also trivial for Java and C# project. It can be quite tricky for C/C++ project. No matter easy or hard, this is just one-time investment.&lt;br /&gt;
# Le coût d’application d’un &#039;&#039;framework&#039;&#039; de test sur le code du projet. Cela est relativement plus facile pour des langages de programmation dynamique comme Python, Ruby ou Javascript. De manière générale, c’est aussi relativement trivial dans des projets Java ou C#. Cela peut être toutefois assez compliqué dans un projet C/C++. Que ce soit facile ou difficile, c’est un investissement à ne faire qu’une seule fois.&lt;br /&gt;
# The existing code base is not testable. The code was designed without considering the testability. Applying unit test to this kind of code base often involves improving the current design. Doing so doesn’t only increase the cost of creating test, but also has potential cost of introducing new bugs by changing the design. So applying unit test to existing code base should be combined with other works that need the change from the code under test – when you have to change that piece of code regardless.&lt;br /&gt;
# La base de code existante n’est pas testable car le code a été conçu au départ sans prendre en compte l’aspect testabilité. Appliquer des tests unitaires à ce type de base de code implique souvent de devoir améliorer la conception existante. Faire cette amélioration implique non seulement une augmentation du coût concernant la création des tests, mais a aussi potentiellement un coût d’introduire de nouvelles anomalies en changeant ladite conception. Par conséquent, l’introduction de tests unitaires à une base de code existante se doit d’être combinée avec d’autres types de travaux qui nécessiteront des modifications dans le code sous test — autrement dit lorsque le moment sera venu de changer ce morceau de code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal Quality vs. External Quality&#039;&#039;&#039; – High level automated test like functional test and system test checks the external quality of the software. External quality means how well the software is functioning according to the requirement. Unit test is not as effective as the functional test in protecting the external quality. On the other hand, unit test ensures some of the internal qualities of the software. Internal quality here means the testability of the code and how well the code is protected. A testable design is in general a good design. Other levels of automated test cannot serve this purpose as well as unit test.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité interne vs. qualité externe&#039;&#039;&#039; — Les tests automatisés de haut niveau comme les tests fonctionnels et les tests systèmes contrôlent la qualité externe du logiciel. La qualité externe permet de savoir le niveau de fonctionnement du logiciel par rapport aux exigences. En effet, les tests unitaires ne sont pas aussi efficaces que les tests fonctionnels pour protéger la qualité externe. Par contre, les tests unitaires s’assurent de la qualité interne du logiciel. La qualité interne veut dire ici testabilité du code et permet de savoir jusqu’à quel niveau le code est protégé. Une conception testable est synonyme en général de bonne conception. D’autres types de tests automatisés ne remplissent pas ce rôle aussi bien que les tests unitaires.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quality of feedback&#039;&#039;&#039; When you passed a functional test, you could be very confident about the functionality you just tested. But when you found it fail, usually you need to do some debugging to see what is wrong. Unit test might be able to give you more precise information about what is working and what is broken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité du &#039;&#039;feedback&#039;&#039;&#039;&#039;&#039; Après avoir passé un test fonctionnel, vous pouvez être confiant vis-à-vis de la fonctionnalité testée. Mais lorsque vous vous apercevez que le test échoue, vous devez généralement faire du déboggage pour trouver ce qui est erroné. Les tests unitaires peuvent vous donner une information plus précise sur ce qui fonctionne ou ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
Unit test is on the abstraction level of the programming language. When running unit test, everything should happen just within the CPU and memory. And each test case should be small. Therefore, it should run very fast. Typically, you should be able to run hundreds of unit tests within a few seconds. Including the compiling or other preparation time, the whole process of running unit test should take less than 1 minute.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires étant sur le même niveau d’abstraction que le langage de programmation employé, tout devrait s’exécuter au niveau du micro-processeur et de la mémoire lors de l’exécution du test unitaire. Et comme chaque cas de test devrait être de petite taille, il devrait donc s’exécuter très rapidement. Ainsi, vous devriez être en mesure d’exécuter plusieurs centaines de tests unitaires en quelques secondes. Cela comprend le temps de compilation ou de préparation, l’ensemble du processus d’exécution d’un test unitaire devrait prendre moins d’une minute.&lt;br /&gt;
&lt;br /&gt;
Unit test should also be repeatable. If nothing changes, unit test runs should always return the same result.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi être répétables. Si rien ne change d’une fois sur l’autre, l’exécution d’un test unitaire devrait retourner toujours le même résultat.&lt;br /&gt;
&lt;br /&gt;
If the unit test is very fast and repeatable, programmers can run it as often as they want, e.g. every a few minutes. The unit test will continuously provide quality feedback to the programmer. So that the programmer can go with a steady progress and focus on more important things rather than spending too much energy on trivial issues.&lt;br /&gt;
&lt;br /&gt;
Si un test unitaire est très rapide et répétable, les développeurs peuvent l’exécuter aussi souvent qu’ils le veulent, par exemple toutes les quelques minutes. Le test unitaire fournira en permanence aux développeurs des retours d’informations liés à la qualité. Cela permettra ainsi aux développeurs d’avancer à un rythme régulier et de se focaliser sur des choses plus importantes plutôt que de passer trop d’énergie sur des choses triviales.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xtest_levels.png.pagespeed.ic.-xbOy_tP-P.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xtest_levels_fr.png|Xtest_levels_fr.png]]&lt;br /&gt;
&lt;br /&gt;
A reasonable automated test structure should be like a pyramid. At the bottom are a lot of unit test cases. In the middle are much fewer integration level test cases. On the top, there are even fewer functional/system level tests.&lt;br /&gt;
&lt;br /&gt;
Une structure de test automatisé acceptable devrait ressembler à une pyramide. À la base de la pyramide, il y a un grand nombre de cas de tests unitaires. Au milieu, des cas de tests d’intégration en moins grand nombre. En haut, seulement quelques cas de tests fonctionnels ou systèmes.&lt;br /&gt;
&lt;br /&gt;
== Common Misconceptions of Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Idées fausses à propos du test unitaire ==&lt;br /&gt;
&lt;br /&gt;
=== Unit test is not as important as the production code ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire n’est pas aussi vital que le code en production ===&lt;br /&gt;
&lt;br /&gt;
It is true that in the end, it’s production code that makes the product. But most software products have evolutionary life cycles. The code is not static. It changes over time. Code without unit test does not have the necessary protection when being changed. Unit test also contains important information that is not included in the production code.&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu’en fin de compte, c’est le code en production qui donne vraiment vie au produit. Mais la plupart des produits logiciels ont des cycles de vie évolutif. Le code n’est pas statique. Il change avec le temps. Du code sans test unitaire n’est suffisamment protégé lorsqu’une modification est faite. Le test unitaire contient aussi des informations importantes qui ne sont pas présentes dans le code en production.&lt;br /&gt;
&lt;br /&gt;
So unit test is just as important as the production code. They should be &#039;&#039;&#039;in the same SCM repository&#039;&#039;&#039;. They should follow the same coding standard as the production code.&lt;br /&gt;
&lt;br /&gt;
Par conséquent le test unitaire est tout aussi important que le code en production. Il devrait être stocké &#039;&#039;&#039;dans le même dépôt de gestion du code source&#039;&#039;&#039;. Le test unitaire devrait d’ailleurs suivre les mêmes conventions de codage que le code en production.&lt;br /&gt;
&lt;br /&gt;
=== Unit Test is done by testing engineers ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire est fait par des ingénieurs tests ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test is not for finding bugs. Technically, it &#039;&#039;checks&#039;&#039; rather than &#039;&#039;tests&#039;&#039; if the code under test has implemented the behaviour intended by the programmer who designed it. So the reasonable choice is just let the same programmer writes both the test and the code under test.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Techniquement, il &#039;&#039;vérifie&#039;&#039; plutôt que &#039;&#039;teste&#039;&#039; si le code sous test a implémenté le comportement voulu par le développeur qui l’a conçu. Donc le choix logique est de simplement laisser la même personne écrire à la fois le test et le code sous test.&lt;br /&gt;
&lt;br /&gt;
It’s also encouraged to have two or more people pair up to do the programming together. They write the unit test and the code under test together. There are many fun ways of &#039;&#039;pair-programming&#039;&#039;. You may find more information in the Test-Driven Development section.&lt;br /&gt;
&lt;br /&gt;
Il est aussi encouragé d’avoir deux ou plusieurs personnes travaillant de concert pour programmer à la fois le test et le code sous test. Il existe plusieurs manières sympa pour programmer en binôme. Vous trouverez davantage d’informations à ce sujet dans la section développement piloté par les tests.&lt;br /&gt;
&lt;br /&gt;
=== You can write unit test without changing the code under test ===&lt;br /&gt;
&lt;br /&gt;
=== Vous pouvez écrire des tests unitaires sans changer le code sous test. ===&lt;br /&gt;
&lt;br /&gt;
This is often not true. If the code doesn’t have good testability, you might still be able to write unit test for it technically. But the unit test written for non-testable code is usually very hard to maintain and understand. Therefore, it doesn’t make much sense to have it.&lt;br /&gt;
&lt;br /&gt;
Ce n’est pas toujours le cas. Si le code n’a pas une bonne testabilité, vous pourriez tout de même être capable techniquement d’écrire le test unitaire qui va avec. Mais un test unitaire qui a été écrit pour un code non-testable est généralement très difficile à maintenir et à comprendre. Par conséquent, il n’y a pas vraiment de raison d’en avoir un.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The secret of unit test is not about writing test, but writing testable code under test.&#039;&#039;&#039; We want testable code and easy test, which is a win-win. We don’t want non-testable code and hard-to-maintain code, which is a lose-lose.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le secret du test unitaire n’est pas d’écrire du test, mais d’écrire du code testable sous test.&#039;&#039;&#039; Nous voulons du code testable et facile à tester, ce qui s’avère une démarche gagnant-gagnant. Nous ne voulons pas de code non-testable et difficile à maintenir, ce qui serait une démarche perdant-perdant.&lt;br /&gt;
&lt;br /&gt;
=== I can add unit test later ===&lt;br /&gt;
&lt;br /&gt;
=== Je peux ajouter les tests unitaires plus tard ===&lt;br /&gt;
&lt;br /&gt;
Well, try asking the rock climbers to set their anchors later.&lt;br /&gt;
&lt;br /&gt;
Eh bien, essayez donc de demander à des grimpeurs de mettre leurs pitons plus tard.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png]]&lt;br /&gt;
&lt;br /&gt;
== Good Unit Test Patterns ==&lt;br /&gt;
&lt;br /&gt;
== Schéma pour de bons tests unitaires ==&lt;br /&gt;
&lt;br /&gt;
=== No news is good news ===&lt;br /&gt;
&lt;br /&gt;
=== Pas de nouvelles, bonnes nouvelles ===&lt;br /&gt;
&lt;br /&gt;
If the test passes, it should just print OK (and perhaps some dots to show the progress). No other information.&lt;br /&gt;
&lt;br /&gt;
Si le test passe, il devrait afficher seulement OK (voire quelques points pour afficher son avancement). Aucune autre information nécessaire.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/500xNxunit_test_success.png.pagespeed.ic.W3mg1FIwIC.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:unit_test_success.png|unit_test_success.png]]&lt;br /&gt;
&lt;br /&gt;
Rule of thumb:&lt;br /&gt;
&lt;br /&gt;
En règle générale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;No human intervention should be needed to get ready for the test, running the test cases or checking the result.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Aucune intervention humaine ne devrait être nécessaire pour préparer l’exécution du test, exécuter les cas de tests ou en vérifier les résultats.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
And when it fails, it should provide precise information. The goal is to limit the amount of time you spend on debugging when the test fails.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/342xNxunit_test_fail.png.pagespeed.ic.eM-9actgRz.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:342xNxunit_test_fail.png.pagespeed.ic.eM-9actgRz.png|342xNxunit_test_fail.png.pagespeed.ic.eM-9actgRz.png]]&lt;br /&gt;
&lt;br /&gt;
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupés à débogguer le code concerné.&lt;br /&gt;
&lt;br /&gt;
=== Arrange, Act, Assert ===&lt;br /&gt;
&lt;br /&gt;
=== Arranger, Agir, Auditer (Arrange, Act, Assert) ===&lt;br /&gt;
&lt;br /&gt;
A good pattern to follow in a unit test is “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange&#039;&#039;&#039;, &#039;&#039;&#039;Act&#039;&#039;&#039; and &#039;&#039;&#039;Assert&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Un bon schéma à suivre en ce qui concerne les tests unitaires est “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange (dans le sens de mettre en place)&#039;&#039;&#039;, &#039;&#039;&#039;Act (dans le sens d’une action faite sur quelque chose)&#039;&#039;&#039; et &#039;&#039;&#039;Assert (dans le sens de contrôler)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you can easily find this pattern in each of your test cases, your tests should be easy to understand, and they should be fairly specific and to the point. One unit test case should test only one thing. Therefore, there should be only one set of AAA in one test case. A test case shouldn’t be very long (longer than 10 lines of code) if it follows the AAA pattern.&lt;br /&gt;
&lt;br /&gt;
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.&lt;br /&gt;
&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;def test\_should\_have\_no\_wrapping\_when\_string\_length\_is\_5\_and\_line\_width\_is\_10(self):&lt;br /&gt;
    \# Arrange:  Arrange all necessary preconditions and inputs.&lt;br /&gt;
    wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
    \# Act:  Act on the object or method under test.&lt;br /&gt;
    wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
    \# Assert:  Assert that the expected results have occurred.&lt;br /&gt;
    self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    def test\_ne\_devrait\_pas\_avoir\_de\_retour\_à\_la\_ligne\_lorsque\_la\_longueur\_de\_la\_chaîne\_de\_caractères\_est\_de\_5\_et\_que\_la\_hauteur\_est\_10(self):&lt;br /&gt;
        \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.&lt;br /&gt;
        wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
        \# Act :  Agir sur l&#039;objet ou sur la méthode sous test.&lt;br /&gt;
        wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
        \# Assert :  Contrôle que le résultat attendu s&#039;est bien produit.&lt;br /&gt;
        self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Behaviour Driven Development (BDD) Style ===&lt;br /&gt;
&lt;br /&gt;
=== Développement piloté par le comportement (BDD) ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;&#039;&#039;AAA&#039;&#039;&#039; pattern, the &#039;&#039;&#039;BDD&#039;&#039;&#039; style uses three other keywords to specify each test case: &#039;&#039;&#039;Given&#039;&#039;&#039;, &#039;&#039;&#039;When&#039;&#039;&#039; and &#039;&#039;&#039;Then&#039;&#039;&#039;. (You can also use &#039;&#039;&#039;And&#039;&#039;&#039; as another keyword.)&lt;br /&gt;
&lt;br /&gt;
Identique au schéma &#039;&#039;&#039;AAA&#039;&#039;&#039;, le BDD utilise trois mots-clés différents pour spécifier chaque cas de test : &#039;&#039;&#039;Étant donné&#039;&#039;&#039;, &#039;&#039;&#039;Lorsque&#039;&#039;&#039; et &#039;&#039;&#039;Alors&#039;&#039;&#039;. (Vous pouvez aussi utiliser &#039;&#039;&#039;Et&#039;&#039;&#039; comme mot-clé supplémentaire)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Given The Text Wrapper&#039;s Width Defined As 10&lt;br /&gt;
And Using &#039;-&#039; As Word Connector&lt;br /&gt;
When The Wrapper Wrap Text Length is Less Than 10&lt;br /&gt;
Then The Text Should Not Be Wrapped&lt;br /&gt;
&lt;br /&gt;
Given - Étant donné que la longueur du texte pour le retour à la ligne est défini à 10&lt;br /&gt;
And - Et que le caractère &#039;-&#039; est utilisé comme connecteur entre deux mots&lt;br /&gt;
When - Lorsque la longueur du texte est inférieure à 10&lt;br /&gt;
Then - Alors le texte ne devrait pas être retourné à la ligne&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you can see, “given-when-then” maps to “arrange-act-assert” pretty well. They both simply define a state transition of a Finite State Machine (FSM). You can find more on this in the [https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Uncle Bob’s article]. Some differences:&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le triptyque « étant donné - lorsque - alors » correspond plutôt bien avec le triptyque « Arrange - Act - Assert ». Ils définissent tous les deux un état transition d’une machine à état finie. Vous pouvez en savoir plus en consultant cet article d’[https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Oncle Bob]. Voici quelques différences entre les deux :&lt;br /&gt;
&lt;br /&gt;
* BDD is more “outside-in”, which means that it emphasises more the external behaviour&lt;br /&gt;
* With BDD, you need to define a &#039;&#039;&#039;domain specific language&#039;&#039;&#039; to write your test specifications. Because of this, usually you’ll need a different framework. One example for Python is [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
* Le BDD est davantage « dehors-dedans », cela veut dire qu’il met davantage l’accent sur le comportement externe&lt;br /&gt;
* Avec le BDD, vous devez définir un &#039;&#039;&#039;langage spécifique au domaine&#039;&#039;&#039; pour écrire vos spécifications de tests. À cause de cela, vous aurez besoin généralement d’un &#039;&#039;framework&#039;&#039; supplémentaire. Par exemple, pour Python vous pourrez utilisez [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
&lt;br /&gt;
=== The Golden Rule Of a Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== La règle d’or du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
In general, a good rule for unit test case is:&lt;br /&gt;
&lt;br /&gt;
De manière générale, une bonne règle d’or pour des tests unitaires serait :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Each unit test case should be very limited in scope.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Chaque cas de test unitaire devrait comporter un périmètre très restreint.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
So that:&lt;br /&gt;
&lt;br /&gt;
De telle manière que :&lt;br /&gt;
&lt;br /&gt;
* When the test fails, no debugging is needed to locate the problem.&lt;br /&gt;
* Tests are stable because dependencies are simple.&lt;br /&gt;
* Less duplication, easier to maintain.&lt;br /&gt;
* Lorsque le test échoue, qu’il ne soit pas nécessaire de faire du déboggage pour localiser le problème.&lt;br /&gt;
* Les tests soient stables car les dépendances sont limitées.&lt;br /&gt;
* Il y ait moins de duplications, que ce soit plus facile à maintenir&lt;br /&gt;
&lt;br /&gt;
There is no secret to write good unit test. In order to write good unit test, you need to create easy-to-test design.&lt;br /&gt;
&lt;br /&gt;
Il n’existe pas de secrets pour écrire un bon test unitaire. Afin d’écrire un bon test unitaire, vous devez créer une conception qui soit facile à tester.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Unit_test_success.png&amp;diff=15283</id>
		<title>Fichier:Unit test success.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Unit_test_success.png&amp;diff=15283"/>
		<updated>2022-06-29T11:06:50Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15282</id>
		<title>LeSS - Tests unitaires</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15282"/>
		<updated>2022-06-29T06:39:47Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Correction date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: &lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/unit-testing.html Unit Testing - Large Scale Scrum (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traducteur : Nicolas Mereaux&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Date : 29/06/2022&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traduction :&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Is Unit Test? ==&lt;br /&gt;
&lt;br /&gt;
== Qu’est-ce que les tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unit Test&#039;&#039;&#039;s are software programs written to exercise other software programs (called &#039;&#039;&#039;Code Under Test&#039;&#039;&#039;, or &#039;&#039;&#039;Production Code&#039;&#039;&#039;) with &#039;&#039;&#039;specific&#039;&#039;&#039; preconditions and verify the &#039;&#039;&#039;expected behaviour&#039;&#039;&#039;s of the CUT.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les tests unitaires&#039;&#039;&#039; sont des programmes informatiques écrits pour exercer d’autres programmes (qui peuvent être désignés sous l’appellation &#039;&#039;&#039;Code sous test&#039;&#039;&#039;, ou &#039;&#039;&#039;Code en Production&#039;&#039;&#039;) à l’aide de pré conditions &#039;&#039;&#039;spécifiques&#039;&#039;&#039; et ainsi en vérifier le comportement attendu.&lt;br /&gt;
&lt;br /&gt;
Unit tests are usually written in the same programming language as their code under test.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires sont généralement écrits dans le même langage de programmation que le code testé.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&#039;unit test&#039;&#039;&#039; should be small and test only limited piece of code functionality. Test cases are often grouped into &#039;&#039;&#039;Test Groups&#039;&#039;&#039; or &#039;&#039;&#039;Test Suites&#039;&#039;&#039;. There are many open source &#039;&#039;&#039;unit test framework&#039;&#039;&#039;s. The popular ones usually follow an &#039;&#039;&#039;xUnit&#039;&#039;&#039; pattern invented by [http://c2.com/cgi/wiki?KentBeck Kent Beck], for example, JUnit for Java and CppUTest for C/C++.&lt;br /&gt;
&lt;br /&gt;
Chaque &#039;&#039;&#039;test unitaire&#039;&#039;&#039; devrait être de taille réduite et ne devrait tester qu’une fraction du code de la fonctionnalité. Les cas de tests sont souvent regroupés en &#039;&#039;&#039;Groupes de tests&#039;&#039;&#039; ou en &#039;&#039;&#039;Suites de tests&#039;&#039;&#039;. Il existe de nombreux &#039;&#039;&#039;&#039;&#039;frameworks&#039;&#039; de tests unitaires&#039;&#039;&#039;. Les plus populaires, comme par exemple JUnit pour le langage Java et CppUTest pour les langages C/C++, suivent un schéma dénommé &#039;&#039;&#039;xUnit&#039;&#039;&#039; inventé par [http://c2.com/cgi/wiki?KentBeck Kent Beck].&lt;br /&gt;
&lt;br /&gt;
Unit tests should also run very fast. Usually, we expect to &#039;&#039;&#039;run hundreds of unit test cases within a few seconds&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi s’exécuter très rapidement. Généralement, on s’attend à ce qu’&#039;&#039;&#039;une centaine de cas de tests unitaires s’exécutent en quelques secondes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Why Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Pourquoi faire des tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
The purpose of unit testing is not for finding bugs. It’s a &#039;&#039;&#039;specification&#039;&#039;&#039; for the expected behaviours of the code under test. The code under test is the implementation for those expected behaviours. So unit test and the code under test are used to check the correctness of each other, and protect each other. Later when someone changed the code under test, and it changed the behaviour that is expected by the original author, the test will fail. If you code is covered by reasonable unit test, you can maintain the code without breaking the existing feature. That’s why Michael Feathers define &#039;&#039;&#039;legacy code&#039;&#039;&#039; as &#039;&#039;code without unit test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Le test unitaire est une &#039;&#039;&#039;spécification&#039;&#039;&#039; des comportements attendus du code sous test. Le code sous test est l’implémentation de ces comportements attendus. Donc les tests unitaires et le code sous test sont utilisés pour vérifier l’exactitude de l’un par rapport à l’autre et se protègent ainsi mutuellement. Si quelqu’un change le code sous test, et que cela change le comportement attendu par l’auteur originel, le test échouera. Si votre code est couvert par un test unitaire cohérent, vous pouvez maintenir le code sans casser la fonctionnalité existante. C’est la raison pour laquelle Michael Feathers définit du &#039;&#039;&#039;code hérité&#039;&#039;&#039; comme du &#039;&#039;code sans test unitaire&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png]]&lt;br /&gt;
&lt;br /&gt;
The purpose for unit testing is rather protect what we have implemented than to find any defects, just like the anchors set by a rock climber along his way up the rock. These anchors help him to protect what he has achieved.&lt;br /&gt;
&lt;br /&gt;
Le but du test unitaire est donc plutôt de protéger ce que nous avons implémenté que de trouver des anomalies, tout comme les pitons mis par un grimpeur le long de son ascension. Ces pitons sont là pour l’aider à sécuriser le parcours qu’il a déjà accompli.&lt;br /&gt;
&lt;br /&gt;
=== Purpose of Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== Objectif du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test can be summarised as:&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire peut être résumé ainsi :&lt;br /&gt;
&lt;br /&gt;
* Facilitates changes&lt;br /&gt;
** It protects the behaviours decided by the previous programmers. So that people can change the code without breaking the existing features.&lt;br /&gt;
* Faciliter les changements&lt;br /&gt;
** Le test unitaire fait en sorte de protéger les comportements décidés par développeurs qui se sont succédés afin qu’il soit possible de changer le code sans casser les fonctionnalités existantes.&lt;br /&gt;
* Simplifies integration&lt;br /&gt;
** Unit test tests the basic units of the program, the functions and the classes. It makes sure the basic units are functioning as expected. When these units are integrated together, we can separate the integration problems (the coupling problems) from the unit internal problems (the cohesion problems).&lt;br /&gt;
* Simplifier l’intégration&lt;br /&gt;
** Le test unitaire teste les unités de base du programme, autrement dit les fonctions et les classes. Le test unitaire fait en sorte de sécuriser les briques élémentaires pour qu’elles fonctionnent comme prévu. Lorsque ces unités de base sont intégrées ensemble, nous pouvons séparer ainsi les problèmes d’intégration (les problèmes de couplage) des problèmes internes des unités de base (les problèmes de cohésion).&lt;br /&gt;
* Documentation&lt;br /&gt;
** Well-written unit test can be used as documentation for the functionality of the code under test. Unit test contains information typically you cannot find from the code under test, for example, the design purpose of the original programming who wrote the code, and how the code is expected to be used. Unit test as documentation, unlike other traditional documentation, it doesn’t “lie”. Because if it lies, the test would fail. And that indicates either the test or the code is wrong.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Des tests unitaires bien écrits peuvent servir de documentation de la fonctionnalité du code sous test. Le test unitaire contient des informations que vous ne pouvez pas trouver dans le code testé, comme par exemple, quel est l’objectif de la conception du développeur à l’origine du code, de quelle manière le code est censé se comporter à l’exécution. Le test unitaire, à la différence de la documentation traditionnelle, ne « ment » pas. Parce que si le test unitaire ment, le test viendrait à échouer. Et dans ce cas, cela indique que le test ou le code est erroné.&lt;br /&gt;
* Design tool&lt;br /&gt;
** Unit test is also an important design tool. Unit test requires testability from the code understand. Easy-to-test usually means easy-to-use. So unit test could be used to make sure the design has consideration from the perspective of use, rather than only from the perspective of implementation. Testable code needs better modularity and fewer dependencies. So that the unit test can easily take a small part of the code under test (a “unit”) without taking care of the overwhelming amount of dependencies. So unit test could be used to make sure the design has “high cohesion, low coupling”.&lt;br /&gt;
* Outil de conception&lt;br /&gt;
** Le test unitaire est aussi un outil de conception. Pour que le test unitaire remplisse son rôle, il est nécessaire d’appréhender la testabilité du code. Facile à tester veut généralement dire facile à utiliser. Cela signifie que le test unitaire peut être utilisé pour que la conception soit faite du point de vue de l’utilisation et non uniquement du point de vue de l’implémentation. Un code testable doit être davantage modulaire et avoir moins de dépendances. Par conséquence, le test unitaire peut donc facilement ne concerner qu’une petite partie du code testé (un « unitaire ») sans avoir à se soucier de la quantité impressionnante de dépendances qu’il pourrait y avoir. Par conséquent, le test unitaire peut être utilisé pour s’assurer que la conception ait comme caractéristique « une forte cohésion, un faible couplage ».&lt;br /&gt;
&lt;br /&gt;
=== Why on “Unit” Level? ===&lt;br /&gt;
&lt;br /&gt;
=== Pourquoi à un niveau « unitaire » ? ===&lt;br /&gt;
&lt;br /&gt;
“Yes, it’s important to use automated test to protect the existing functionalities. But why does it need to be on the unit level?”&lt;br /&gt;
&lt;br /&gt;
« Oui, il est important d’utiliser des tests automatisés pour protéger les fonctionnalités existantes. Mais pourquoi cela doit-il être fait au niveau unitaire ? »&lt;br /&gt;
&lt;br /&gt;
You might wonder. Why don’t we just use thorough automated functional or system tests to protect the program?&lt;br /&gt;
&lt;br /&gt;
Vous pourriez vous interroger. Pourquoi n’utilisons-nous tout simplement pas de manière rigoureuse des tests fonctionnels automatisés ou des tests systèmes automatisés pour protéger le programme ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Total cost of ownership&#039;&#039;&#039; – Unit test is based on the abstraction level of the programming language. It’s just some code exercising other code. It doesn’t need to run in the same environment as the production. For compiled programming language, it doesn’t even need to use the same compiler as the production. The creating and running cost of unit test is very low. If designed properly, the cost of maintaining is also very low. You may not get the same level of confidence from one successful unit test case as you can get from a functional test. You will need many small unit test cases to get approximately the same level of confidence. But the cost of these small unit test cases is still much lower than owning a few functional test cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le coût total de possession&#039;&#039;&#039; — Le test unitaire se base sur le niveau d’abstraction du langage de programmation utilisé. Il s’agit juste d’un bout de code qui va s’exécuter sur un autre bout de code. Il n’a pas besoin de s’exécuter sur le même environnement que celui en production. Pour un langage compilé, il n’est même pas nécessaire d’utiliser le même compilateur que celui en production. Le coût de la création et l’exécution est très faible. S’il est conçu correctement, le coût de maintenance est aussi très faible. Vous pouvez ne pas avoir le même niveau de confiance pour un cas de test unitaire qui s’est exécuté avec succès que pour un cas de test fonctionnel. Vous pourriez avoir besoin de plusieurs cas de test unitaire pour avoir le même niveau de confiance. Malgré tout, le coût de tous ces petits cas de test unitaire restent tout de même plus faible que celui de plusieurs cas de test fonctionnel.&lt;br /&gt;
&lt;br /&gt;
If a software code base hasn’t got any unit test for the past 2 years, there will be extra cost for applying unit test to this code base. The cost comes mostly from two sources:&lt;br /&gt;
&lt;br /&gt;
Si la base de code n’a eu aucun test unitaire dans les deux dernières années, il y aura un coût supplémentaire pour lui en appliquer un. Ce coût a deux sources principales :&lt;br /&gt;
&lt;br /&gt;
# The cost of applying a test framework to the code project. This is relatively easier for dynamic programming languages like Python, Ruby or Javascript. Usually, it’s also trivial for Java and C# project. It can be quite tricky for C/C++ project. No matter easy or hard, this is just one-time investment.&lt;br /&gt;
# Le coût d’application d’un &#039;&#039;framework&#039;&#039; de test sur le code du projet. Cela est relativement plus facile pour des langages de programmation dynamique comme Python, Ruby ou Javascript. De manière générale, c’est aussi relativement trivial dans des projets Java ou C#. Cela peut être toutefois assez compliqué dans un projet C/C++. Que ce soit facile ou difficile, c’est un investissement à ne faire qu’une seule fois.&lt;br /&gt;
# The existing code base is not testable. The code was designed without considering the testability. Applying unit test to this kind of code base often involves improving the current design. Doing so doesn’t only increase the cost of creating test, but also has potential cost of introducing new bugs by changing the design. So applying unit test to existing code base should be combined with other works that need the change from the code under test – when you have to change that piece of code regardless.&lt;br /&gt;
# La base de code existante n’est pas testable car le code a été conçu au départ sans prendre en compte l’aspect testabilité. Appliquer des tests unitaires à ce type de base de code implique souvent de devoir améliorer la conception existante. Faire cette amélioration implique non seulement une augmentation du coût concernant la création des tests, mais a aussi potentiellement un coût d’introduire de nouvelles anomalies en changeant ladite conception. Par conséquent, l’introduction de tests unitaires à une base de code existante se doit d’être combinée avec d’autres types de travaux qui nécessiteront des modifications dans le code sous test — autrement dit lorsque le moment sera venu de changer ce morceau de code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal Quality vs. External Quality&#039;&#039;&#039; – High level automated test like functional test and system test checks the external quality of the software. External quality means how well the software is functioning according to the requirement. Unit test is not as effective as the functional test in protecting the external quality. On the other hand, unit test ensures some of the internal qualities of the software. Internal quality here means the testability of the code and how well the code is protected. A testable design is in general a good design. Other levels of automated test cannot serve this purpose as well as unit test.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité interne vs. qualité externe&#039;&#039;&#039; — Les tests automatisés de haut niveau comme les tests fonctionnels et les tests systèmes contrôlent la qualité externe du logiciel. La qualité externe permet de savoir le niveau de fonctionnement du logiciel par rapport aux exigences. En effet, les tests unitaires ne sont pas aussi efficaces que les tests fonctionnels pour protéger la qualité externe. Par contre, les tests unitaires s’assurent de la qualité interne du logiciel. La qualité interne veut dire ici testabilité du code et permet de savoir jusqu’à quel niveau le code est protégé. Une conception testable est synonyme en général de bonne conception. D’autres types de tests automatisés ne remplissent pas ce rôle aussi bien que les tests unitaires.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quality of feedback&#039;&#039;&#039; When you passed a functional test, you could be very confident about the functionality you just tested. But when you found it fail, usually you need to do some debugging to see what is wrong. Unit test might be able to give you more precise information about what is working and what is broken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité du &#039;&#039;feedback&#039;&#039;&#039;&#039;&#039; Après avoir passé un test fonctionnel, vous pouvez être confiant vis-à-vis de la fonctionnalité testée. Mais lorsque vous vous apercevez que le test échoue, vous devez généralement faire du déboggage pour trouver ce qui est erroné. Les tests unitaires peuvent vous donner une information plus précise sur ce qui fonctionne ou ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
Unit test is on the abstraction level of the programming language. When running unit test, everything should happen just within the CPU and memory. And each test case should be small. Therefore, it should run very fast. Typically, you should be able to run hundreds of unit tests within a few seconds. Including the compiling or other preparation time, the whole process of running unit test should take less than 1 minute.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires étant sur le même niveau d’abstraction que le langage de programmation employé, tout devrait s’exécuter au niveau du micro-processeur et de la mémoire lors de l’exécution du test unitaire. Et comme chaque cas de test devrait être de petite taille, il devrait donc s’exécuter très rapidement. Ainsi, vous devriez être en mesure d’exécuter plusieurs centaines de tests unitaires en quelques secondes. Cela comprend le temps de compilation ou de préparation, l’ensemble du processus d’exécution d’un test unitaire devrait prendre moins d’une minute.&lt;br /&gt;
&lt;br /&gt;
Unit test should also be repeatable. If nothing changes, unit test runs should always return the same result.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi être répétables. Si rien ne change d’une fois sur l’autre, l’exécution d’un test unitaire devrait retourner toujours le même résultat.&lt;br /&gt;
&lt;br /&gt;
If the unit test is very fast and repeatable, programmers can run it as often as they want, e.g. every a few minutes. The unit test will continuously provide quality feedback to the programmer. So that the programmer can go with a steady progress and focus on more important things rather than spending too much energy on trivial issues.&lt;br /&gt;
&lt;br /&gt;
Si un test unitaire est très rapide et répétable, les développeurs peuvent l’exécuter aussi souvent qu’ils le veulent, par exemple toutes les quelques minutes. Le test unitaire fournira en permanence aux développeurs des retours d’informations liés à la qualité. Cela permettra ainsi aux développeurs d’avancer à un rythme régulier et de se focaliser sur des choses plus importantes plutôt que de passer trop d’énergie sur des choses triviales.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xtest_levels.png.pagespeed.ic.-xbOy_tP-P.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xtest_levels_fr.png|Xtest_levels_fr.png]]&lt;br /&gt;
&lt;br /&gt;
A reasonable automated test structure should be like a pyramid. At the bottom are a lot of unit test cases. In the middle are much fewer integration level test cases. On the top, there are even fewer functional/system level tests.&lt;br /&gt;
&lt;br /&gt;
Une structure de test automatisé acceptable devrait ressembler à une pyramide. À la base de la pyramide, il y a un grand nombre de cas de tests unitaires. Au milieu, des cas de tests d’intégration en moins grand nombre. En haut, seulement quelques cas de tests fonctionnels ou systèmes.&lt;br /&gt;
&lt;br /&gt;
== Common Misconceptions of Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Idées fausses à propos du test unitaire ==&lt;br /&gt;
&lt;br /&gt;
=== Unit test is not as important as the production code ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire n’est pas aussi vital que le code en production ===&lt;br /&gt;
&lt;br /&gt;
It is true that in the end, it’s production code that makes the product. But most software products have evolutionary life cycles. The code is not static. It changes over time. Code without unit test does not have the necessary protection when being changed. Unit test also contains important information that is not included in the production code.&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu’en fin de compte, c’est le code en production qui donne vraiment vie au produit. Mais la plupart des produits logiciels ont des cycles de vie évolutif. Le code n’est pas statique. Il change avec le temps. Du code sans test unitaire n’est suffisamment protégé lorsqu’une modification est faite. Le test unitaire contient aussi des informations importantes qui ne sont pas présentes dans le code en production.&lt;br /&gt;
&lt;br /&gt;
So unit test is just as important as the production code. They should be &#039;&#039;&#039;in the same SCM repository&#039;&#039;&#039;. They should follow the same coding standard as the production code.&lt;br /&gt;
&lt;br /&gt;
Par conséquent le test unitaire est tout aussi important que le code en production. Il devrait être stocké &#039;&#039;&#039;dans le même dépôt de gestion du code source&#039;&#039;&#039;. Le test unitaire devrait d’ailleurs suivre les mêmes conventions de codage que le code en production.&lt;br /&gt;
&lt;br /&gt;
=== Unit Test is done by testing engineers ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire est fait par des ingénieurs tests ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test is not for finding bugs. Technically, it &#039;&#039;checks&#039;&#039; rather than &#039;&#039;tests&#039;&#039; if the code under test has implemented the behaviour intended by the programmer who designed it. So the reasonable choice is just let the same programmer writes both the test and the code under test.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Techniquement, il &#039;&#039;vérifie&#039;&#039; plutôt que &#039;&#039;teste&#039;&#039; si le code sous test a implémenté le comportement voulu par le développeur qui l’a conçu. Donc le choix logique est de simplement laisser la même personne écrire à la fois le test et le code sous test.&lt;br /&gt;
&lt;br /&gt;
It’s also encouraged to have two or more people pair up to do the programming together. They write the unit test and the code under test together. There are many fun ways of &#039;&#039;pair-programming&#039;&#039;. You may find more information in the Test-Driven Development section.&lt;br /&gt;
&lt;br /&gt;
Il est aussi encouragé d’avoir deux ou plusieurs personnes travaillant de concert pour programmer à la fois le test et le code sous test. Il existe plusieurs manières sympa pour programmer en binôme. Vous trouverez davantage d’informations à ce sujet dans la section développement piloté par les tests.&lt;br /&gt;
&lt;br /&gt;
=== You can write unit test without changing the code under test ===&lt;br /&gt;
&lt;br /&gt;
=== Vous pouvez écrire des tests unitaires sans changer le code sous test. ===&lt;br /&gt;
&lt;br /&gt;
This is often not true. If the code doesn’t have good testability, you might still be able to write unit test for it technically. But the unit test written for non-testable code is usually very hard to maintain and understand. Therefore, it doesn’t make much sense to have it.&lt;br /&gt;
&lt;br /&gt;
Ce n’est pas toujours le cas. Si le code n’a pas une bonne testabilité, vous pourriez tout de même être capable techniquement d’écrire le test unitaire qui va avec. Mais un test unitaire qui a été écrit pour un code non-testable est généralement très difficile à maintenir et à comprendre. Par conséquent, il n’y a pas vraiment de raison d’en avoir un.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The secret of unit test is not about writing test, but writing testable code under test.&#039;&#039;&#039; We want testable code and easy test, which is a win-win. We don’t want non-testable code and hard-to-maintain code, which is a lose-lose.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le secret du test unitaire n’est pas d’écrire du test, mais d’écrire du code testable sous test.&#039;&#039;&#039; Nous voulons du code testable et facile à tester, ce qui s’avère une démarche gagnant-gagnant. Nous ne voulons pas de code non-testable et difficile à maintenir, ce qui serait une démarche perdant-perdant.&lt;br /&gt;
&lt;br /&gt;
=== I can add unit test later ===&lt;br /&gt;
&lt;br /&gt;
=== Je peux ajouter les tests unitaires plus tard ===&lt;br /&gt;
&lt;br /&gt;
Well, try asking the rock climbers to set their anchors later.&lt;br /&gt;
&lt;br /&gt;
Eh bien, essayez donc de demander à des grimpeurs de mettre leurs pitons plus tard.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
== Good Unit Test Patterns ==&lt;br /&gt;
&lt;br /&gt;
== Schéma pour de bons tests unitaires ==&lt;br /&gt;
&lt;br /&gt;
=== No news is good news ===&lt;br /&gt;
&lt;br /&gt;
=== Pas de nouvelles, bonnes nouvelles ===&lt;br /&gt;
&lt;br /&gt;
If the test passes, it should just print OK (and perhaps some dots to show the progress). No other information.&lt;br /&gt;
&lt;br /&gt;
Si le test passe, il devrait afficher seulement OK (voire quelques points pour afficher son avancement). Aucune autre information nécessaire.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/500xNxunit_test_success.png.pagespeed.ic.W3mg1FIwIC.png]]&lt;br /&gt;
&lt;br /&gt;
Rule of thumb:&lt;br /&gt;
&lt;br /&gt;
En règle générale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;No human intervention should be needed to get ready for the test, running the test cases or checking the result.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Aucune intervention humaine ne devrait être nécessaire pour préparer l’exécution du test, exécuter les cas de tests ou en vérifier les résultats.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
And when it fails, it should provide precise information. The goal is to limit the amount of time you spend on debugging when the test fails.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/342xNxunit_test_fail.png.pagespeed.ic.eM-9actgRz.png]]&lt;br /&gt;
&lt;br /&gt;
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupés à débogguer le code concerné.&lt;br /&gt;
&lt;br /&gt;
=== Arrange, Act, Assert ===&lt;br /&gt;
&lt;br /&gt;
=== Arranger, Agir, Auditer (Arrange, Act, Assert) ===&lt;br /&gt;
&lt;br /&gt;
A good pattern to follow in a unit test is “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange&#039;&#039;&#039;, &#039;&#039;&#039;Act&#039;&#039;&#039; and &#039;&#039;&#039;Assert&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Un bon schéma à suivre en ce qui concerne les tests unitaires est “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange (dans le sens de mettre en place)&#039;&#039;&#039;, &#039;&#039;&#039;Act (dans le sens d’une action faite sur quelque chose)&#039;&#039;&#039; et &#039;&#039;&#039;Assert (dans le sens de contrôler)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you can easily find this pattern in each of your test cases, your tests should be easy to understand, and they should be fairly specific and to the point. One unit test case should test only one thing. Therefore, there should be only one set of AAA in one test case. A test case shouldn’t be very long (longer than 10 lines of code) if it follows the AAA pattern.&lt;br /&gt;
&lt;br /&gt;
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.&lt;br /&gt;
&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;def test\_should\_have\_no\_wrapping\_when\_string\_length\_is\_5\_and\_line\_width\_is\_10(self):&lt;br /&gt;
    \# Arrange:  Arrange all necessary preconditions and inputs.&lt;br /&gt;
    wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
    \# Act:  Act on the object or method under test.&lt;br /&gt;
    wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
    \# Assert:  Assert that the expected results have occurred.&lt;br /&gt;
    self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    def test\_ne\_devrait\_pas\_avoir\_de\_retour\_à\_la\_ligne\_lorsque\_la\_longueur\_de\_la\_chaîne\_de\_caractères\_est\_de\_5\_et\_que\_la\_hauteur\_est\_10(self):&lt;br /&gt;
        \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.&lt;br /&gt;
        wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
        \# Act :  Agir sur l&#039;objet ou sur la méthode sous test.&lt;br /&gt;
        wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
        \# Assert :  Contrôle que le résultat attendu s&#039;est bien produit.&lt;br /&gt;
        self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Behaviour Driven Development (BDD) Style ===&lt;br /&gt;
&lt;br /&gt;
=== Développement piloté par le comportement (BDD) ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;&#039;&#039;AAA&#039;&#039;&#039; pattern, the &#039;&#039;&#039;BDD&#039;&#039;&#039; style uses three other keywords to specify each test case: &#039;&#039;&#039;Given&#039;&#039;&#039;, &#039;&#039;&#039;When&#039;&#039;&#039; and &#039;&#039;&#039;Then&#039;&#039;&#039;. (You can also use &#039;&#039;&#039;And&#039;&#039;&#039; as another keyword.)&lt;br /&gt;
&lt;br /&gt;
Identique au schéma &#039;&#039;&#039;AAA&#039;&#039;&#039;, le BDD utilise trois mots-clés différents pour spécifier chaque cas de test : &#039;&#039;&#039;Étant donné&#039;&#039;&#039;, &#039;&#039;&#039;Lorsque&#039;&#039;&#039; et &#039;&#039;&#039;Alors&#039;&#039;&#039;. (Vous pouvez aussi utiliser &#039;&#039;&#039;Et&#039;&#039;&#039; comme mot-clé supplémentaire)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Given The Text Wrapper&#039;s Width Defined As 10&lt;br /&gt;
And Using &#039;-&#039; As Word Connector&lt;br /&gt;
When The Wrapper Wrap Text Length is Less Than 10&lt;br /&gt;
Then The Text Should Not Be Wrapped&lt;br /&gt;
&lt;br /&gt;
Given - Étant donné que la longueur du texte pour le retour à la ligne est défini à 10&lt;br /&gt;
And - Et que le caractère &#039;-&#039; est utilisé comme connecteur entre deux mots&lt;br /&gt;
When - Lorsque la longueur du texte est inférieure à 10&lt;br /&gt;
Then - Alors le texte ne devrait pas être retourné à la ligne&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you can see, “given-when-then” maps to “arrange-act-assert” pretty well. They both simply define a state transition of a Finite State Machine (FSM). You can find more on this in the [https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Uncle Bob’s article]. Some differences:&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le triptyque « étant donné - lorsque - alors » correspond plutôt bien avec le triptyque « Arrange - Act - Assert ». Ils définissent tous les deux un état transition d’une machine à état finie. Vous pouvez en savoir plus en consultant cet article d’[https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Oncle Bob]. Voici quelques différences entre les deux :&lt;br /&gt;
&lt;br /&gt;
* BDD is more “outside-in”, which means that it emphasises more the external behaviour&lt;br /&gt;
* With BDD, you need to define a &#039;&#039;&#039;domain specific language&#039;&#039;&#039; to write your test specifications. Because of this, usually you’ll need a different framework. One example for Python is [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
* Le BDD est davantage « dehors-dedans », cela veut dire qu’il met davantage l’accent sur le comportement externe&lt;br /&gt;
* Avec le BDD, vous devez définir un &#039;&#039;&#039;langage spécifique au domaine&#039;&#039;&#039; pour écrire vos spécifications de tests. À cause de cela, vous aurez besoin généralement d’un &#039;&#039;framework&#039;&#039; supplémentaire. Par exemple, pour Python vous pourrez utilisez [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
&lt;br /&gt;
=== The Golden Rule Of a Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== La règle d’or du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
In general, a good rule for unit test case is:&lt;br /&gt;
&lt;br /&gt;
De manière générale, une bonne règle d’or pour des tests unitaires serait :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Each unit test case should be very limited in scope.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Chaque cas de test unitaire devrait comporter un périmètre très restreint.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
So that:&lt;br /&gt;
&lt;br /&gt;
De telle manière que :&lt;br /&gt;
&lt;br /&gt;
* When the test fails, no debugging is needed to locate the problem.&lt;br /&gt;
* Tests are stable because dependencies are simple.&lt;br /&gt;
* Less duplication, easier to maintain.&lt;br /&gt;
* Lorsque le test échoue, qu’il ne soit pas nécessaire de faire du déboggage pour localiser le problème.&lt;br /&gt;
* Les tests soient stables car les dépendances sont limitées.&lt;br /&gt;
* Il y ait moins de duplications, que ce soit plus facile à maintenir&lt;br /&gt;
&lt;br /&gt;
There is no secret to write good unit test. In order to write good unit test, you need to create easy-to-test design.&lt;br /&gt;
&lt;br /&gt;
Il n’existe pas de secrets pour écrire un bon test unitaire. Afin d’écrire un bon test unitaire, vous devez créer une conception qui soit facile à tester.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15281</id>
		<title>LeSS - Tests unitaires</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_unitaires&amp;diff=15281"/>
		<updated>2022-06-29T06:39:12Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Ajout de la page tests unitaires&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: &lt;br /&gt;
[[Catégorie:Tests]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/unit-testing.html Unit Testing - Large Scale Scrum (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traducteur : Nicolas Mereaux&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Date : 29/06/2012&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff&amp;quot;&amp;gt;Traduction :&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Excellence technique]]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Is Unit Test? ==&lt;br /&gt;
&lt;br /&gt;
== Qu’est-ce que les tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unit Test&#039;&#039;&#039;s are software programs written to exercise other software programs (called &#039;&#039;&#039;Code Under Test&#039;&#039;&#039;, or &#039;&#039;&#039;Production Code&#039;&#039;&#039;) with &#039;&#039;&#039;specific&#039;&#039;&#039; preconditions and verify the &#039;&#039;&#039;expected behaviour&#039;&#039;&#039;s of the CUT.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les tests unitaires&#039;&#039;&#039; sont des programmes informatiques écrits pour exercer d’autres programmes (qui peuvent être désignés sous l’appellation &#039;&#039;&#039;Code sous test&#039;&#039;&#039;, ou &#039;&#039;&#039;Code en Production&#039;&#039;&#039;) à l’aide de pré conditions &#039;&#039;&#039;spécifiques&#039;&#039;&#039; et ainsi en vérifier le comportement attendu.&lt;br /&gt;
&lt;br /&gt;
Unit tests are usually written in the same programming language as their code under test.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires sont généralement écrits dans le même langage de programmation que le code testé.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&#039;unit test&#039;&#039;&#039; should be small and test only limited piece of code functionality. Test cases are often grouped into &#039;&#039;&#039;Test Groups&#039;&#039;&#039; or &#039;&#039;&#039;Test Suites&#039;&#039;&#039;. There are many open source &#039;&#039;&#039;unit test framework&#039;&#039;&#039;s. The popular ones usually follow an &#039;&#039;&#039;xUnit&#039;&#039;&#039; pattern invented by [http://c2.com/cgi/wiki?KentBeck Kent Beck], for example, JUnit for Java and CppUTest for C/C++.&lt;br /&gt;
&lt;br /&gt;
Chaque &#039;&#039;&#039;test unitaire&#039;&#039;&#039; devrait être de taille réduite et ne devrait tester qu’une fraction du code de la fonctionnalité. Les cas de tests sont souvent regroupés en &#039;&#039;&#039;Groupes de tests&#039;&#039;&#039; ou en &#039;&#039;&#039;Suites de tests&#039;&#039;&#039;. Il existe de nombreux &#039;&#039;&#039;&#039;&#039;frameworks&#039;&#039; de tests unitaires&#039;&#039;&#039;. Les plus populaires, comme par exemple JUnit pour le langage Java et CppUTest pour les langages C/C++, suivent un schéma dénommé &#039;&#039;&#039;xUnit&#039;&#039;&#039; inventé par [http://c2.com/cgi/wiki?KentBeck Kent Beck].&lt;br /&gt;
&lt;br /&gt;
Unit tests should also run very fast. Usually, we expect to &#039;&#039;&#039;run hundreds of unit test cases within a few seconds&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi s’exécuter très rapidement. Généralement, on s’attend à ce qu’&#039;&#039;&#039;une centaine de cas de tests unitaires s’exécutent en quelques secondes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Why Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Pourquoi faire des tests unitaires ? ==&lt;br /&gt;
&lt;br /&gt;
The purpose of unit testing is not for finding bugs. It’s a &#039;&#039;&#039;specification&#039;&#039;&#039; for the expected behaviours of the code under test. The code under test is the implementation for those expected behaviours. So unit test and the code under test are used to check the correctness of each other, and protect each other. Later when someone changed the code under test, and it changed the behaviour that is expected by the original author, the test will fail. If you code is covered by reasonable unit test, you can maintain the code without breaking the existing feature. That’s why Michael Feathers define &#039;&#039;&#039;legacy code&#039;&#039;&#039; as &#039;&#039;code without unit test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Le test unitaire est une &#039;&#039;&#039;spécification&#039;&#039;&#039; des comportements attendus du code sous test. Le code sous test est l’implémentation de ces comportements attendus. Donc les tests unitaires et le code sous test sont utilisés pour vérifier l’exactitude de l’un par rapport à l’autre et se protègent ainsi mutuellement. Si quelqu’un change le code sous test, et que cela change le comportement attendu par l’auteur originel, le test échouera. Si votre code est couvert par un test unitaire cohérent, vous pouvez maintenir le code sans casser la fonctionnalité existante. C’est la raison pour laquelle Michael Feathers définit du &#039;&#039;&#039;code hérité&#039;&#039;&#039; comme du &#039;&#039;code sans test unitaire&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xunit_test_fr.png|Xunit_test_fr.png]]&lt;br /&gt;
&lt;br /&gt;
The purpose for unit testing is rather protect what we have implemented than to find any defects, just like the anchors set by a rock climber along his way up the rock. These anchors help him to protect what he has achieved.&lt;br /&gt;
&lt;br /&gt;
Le but du test unitaire est donc plutôt de protéger ce que nous avons implémenté que de trouver des anomalies, tout comme les pitons mis par un grimpeur le long de son ascension. Ces pitons sont là pour l’aider à sécuriser le parcours qu’il a déjà accompli.&lt;br /&gt;
&lt;br /&gt;
=== Purpose of Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== Objectif du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test can be summarised as:&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire peut être résumé ainsi :&lt;br /&gt;
&lt;br /&gt;
* Facilitates changes&lt;br /&gt;
** It protects the behaviours decided by the previous programmers. So that people can change the code without breaking the existing features.&lt;br /&gt;
* Faciliter les changements&lt;br /&gt;
** Le test unitaire fait en sorte de protéger les comportements décidés par développeurs qui se sont succédés afin qu’il soit possible de changer le code sans casser les fonctionnalités existantes.&lt;br /&gt;
* Simplifies integration&lt;br /&gt;
** Unit test tests the basic units of the program, the functions and the classes. It makes sure the basic units are functioning as expected. When these units are integrated together, we can separate the integration problems (the coupling problems) from the unit internal problems (the cohesion problems).&lt;br /&gt;
* Simplifier l’intégration&lt;br /&gt;
** Le test unitaire teste les unités de base du programme, autrement dit les fonctions et les classes. Le test unitaire fait en sorte de sécuriser les briques élémentaires pour qu’elles fonctionnent comme prévu. Lorsque ces unités de base sont intégrées ensemble, nous pouvons séparer ainsi les problèmes d’intégration (les problèmes de couplage) des problèmes internes des unités de base (les problèmes de cohésion).&lt;br /&gt;
* Documentation&lt;br /&gt;
** Well-written unit test can be used as documentation for the functionality of the code under test. Unit test contains information typically you cannot find from the code under test, for example, the design purpose of the original programming who wrote the code, and how the code is expected to be used. Unit test as documentation, unlike other traditional documentation, it doesn’t “lie”. Because if it lies, the test would fail. And that indicates either the test or the code is wrong.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Des tests unitaires bien écrits peuvent servir de documentation de la fonctionnalité du code sous test. Le test unitaire contient des informations que vous ne pouvez pas trouver dans le code testé, comme par exemple, quel est l’objectif de la conception du développeur à l’origine du code, de quelle manière le code est censé se comporter à l’exécution. Le test unitaire, à la différence de la documentation traditionnelle, ne « ment » pas. Parce que si le test unitaire ment, le test viendrait à échouer. Et dans ce cas, cela indique que le test ou le code est erroné.&lt;br /&gt;
* Design tool&lt;br /&gt;
** Unit test is also an important design tool. Unit test requires testability from the code understand. Easy-to-test usually means easy-to-use. So unit test could be used to make sure the design has consideration from the perspective of use, rather than only from the perspective of implementation. Testable code needs better modularity and fewer dependencies. So that the unit test can easily take a small part of the code under test (a “unit”) without taking care of the overwhelming amount of dependencies. So unit test could be used to make sure the design has “high cohesion, low coupling”.&lt;br /&gt;
* Outil de conception&lt;br /&gt;
** Le test unitaire est aussi un outil de conception. Pour que le test unitaire remplisse son rôle, il est nécessaire d’appréhender la testabilité du code. Facile à tester veut généralement dire facile à utiliser. Cela signifie que le test unitaire peut être utilisé pour que la conception soit faite du point de vue de l’utilisation et non uniquement du point de vue de l’implémentation. Un code testable doit être davantage modulaire et avoir moins de dépendances. Par conséquence, le test unitaire peut donc facilement ne concerner qu’une petite partie du code testé (un « unitaire ») sans avoir à se soucier de la quantité impressionnante de dépendances qu’il pourrait y avoir. Par conséquent, le test unitaire peut être utilisé pour s’assurer que la conception ait comme caractéristique « une forte cohésion, un faible couplage ».&lt;br /&gt;
&lt;br /&gt;
=== Why on “Unit” Level? ===&lt;br /&gt;
&lt;br /&gt;
=== Pourquoi à un niveau « unitaire » ? ===&lt;br /&gt;
&lt;br /&gt;
“Yes, it’s important to use automated test to protect the existing functionalities. But why does it need to be on the unit level?”&lt;br /&gt;
&lt;br /&gt;
« Oui, il est important d’utiliser des tests automatisés pour protéger les fonctionnalités existantes. Mais pourquoi cela doit-il être fait au niveau unitaire ? »&lt;br /&gt;
&lt;br /&gt;
You might wonder. Why don’t we just use thorough automated functional or system tests to protect the program?&lt;br /&gt;
&lt;br /&gt;
Vous pourriez vous interroger. Pourquoi n’utilisons-nous tout simplement pas de manière rigoureuse des tests fonctionnels automatisés ou des tests systèmes automatisés pour protéger le programme ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Total cost of ownership&#039;&#039;&#039; – Unit test is based on the abstraction level of the programming language. It’s just some code exercising other code. It doesn’t need to run in the same environment as the production. For compiled programming language, it doesn’t even need to use the same compiler as the production. The creating and running cost of unit test is very low. If designed properly, the cost of maintaining is also very low. You may not get the same level of confidence from one successful unit test case as you can get from a functional test. You will need many small unit test cases to get approximately the same level of confidence. But the cost of these small unit test cases is still much lower than owning a few functional test cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le coût total de possession&#039;&#039;&#039; — Le test unitaire se base sur le niveau d’abstraction du langage de programmation utilisé. Il s’agit juste d’un bout de code qui va s’exécuter sur un autre bout de code. Il n’a pas besoin de s’exécuter sur le même environnement que celui en production. Pour un langage compilé, il n’est même pas nécessaire d’utiliser le même compilateur que celui en production. Le coût de la création et l’exécution est très faible. S’il est conçu correctement, le coût de maintenance est aussi très faible. Vous pouvez ne pas avoir le même niveau de confiance pour un cas de test unitaire qui s’est exécuté avec succès que pour un cas de test fonctionnel. Vous pourriez avoir besoin de plusieurs cas de test unitaire pour avoir le même niveau de confiance. Malgré tout, le coût de tous ces petits cas de test unitaire restent tout de même plus faible que celui de plusieurs cas de test fonctionnel.&lt;br /&gt;
&lt;br /&gt;
If a software code base hasn’t got any unit test for the past 2 years, there will be extra cost for applying unit test to this code base. The cost comes mostly from two sources:&lt;br /&gt;
&lt;br /&gt;
Si la base de code n’a eu aucun test unitaire dans les deux dernières années, il y aura un coût supplémentaire pour lui en appliquer un. Ce coût a deux sources principales :&lt;br /&gt;
&lt;br /&gt;
# The cost of applying a test framework to the code project. This is relatively easier for dynamic programming languages like Python, Ruby or Javascript. Usually, it’s also trivial for Java and C# project. It can be quite tricky for C/C++ project. No matter easy or hard, this is just one-time investment.&lt;br /&gt;
# Le coût d’application d’un &#039;&#039;framework&#039;&#039; de test sur le code du projet. Cela est relativement plus facile pour des langages de programmation dynamique comme Python, Ruby ou Javascript. De manière générale, c’est aussi relativement trivial dans des projets Java ou C#. Cela peut être toutefois assez compliqué dans un projet C/C++. Que ce soit facile ou difficile, c’est un investissement à ne faire qu’une seule fois.&lt;br /&gt;
# The existing code base is not testable. The code was designed without considering the testability. Applying unit test to this kind of code base often involves improving the current design. Doing so doesn’t only increase the cost of creating test, but also has potential cost of introducing new bugs by changing the design. So applying unit test to existing code base should be combined with other works that need the change from the code under test – when you have to change that piece of code regardless.&lt;br /&gt;
# La base de code existante n’est pas testable car le code a été conçu au départ sans prendre en compte l’aspect testabilité. Appliquer des tests unitaires à ce type de base de code implique souvent de devoir améliorer la conception existante. Faire cette amélioration implique non seulement une augmentation du coût concernant la création des tests, mais a aussi potentiellement un coût d’introduire de nouvelles anomalies en changeant ladite conception. Par conséquent, l’introduction de tests unitaires à une base de code existante se doit d’être combinée avec d’autres types de travaux qui nécessiteront des modifications dans le code sous test — autrement dit lorsque le moment sera venu de changer ce morceau de code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal Quality vs. External Quality&#039;&#039;&#039; – High level automated test like functional test and system test checks the external quality of the software. External quality means how well the software is functioning according to the requirement. Unit test is not as effective as the functional test in protecting the external quality. On the other hand, unit test ensures some of the internal qualities of the software. Internal quality here means the testability of the code and how well the code is protected. A testable design is in general a good design. Other levels of automated test cannot serve this purpose as well as unit test.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité interne vs. qualité externe&#039;&#039;&#039; — Les tests automatisés de haut niveau comme les tests fonctionnels et les tests systèmes contrôlent la qualité externe du logiciel. La qualité externe permet de savoir le niveau de fonctionnement du logiciel par rapport aux exigences. En effet, les tests unitaires ne sont pas aussi efficaces que les tests fonctionnels pour protéger la qualité externe. Par contre, les tests unitaires s’assurent de la qualité interne du logiciel. La qualité interne veut dire ici testabilité du code et permet de savoir jusqu’à quel niveau le code est protégé. Une conception testable est synonyme en général de bonne conception. D’autres types de tests automatisés ne remplissent pas ce rôle aussi bien que les tests unitaires.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quality of feedback&#039;&#039;&#039; When you passed a functional test, you could be very confident about the functionality you just tested. But when you found it fail, usually you need to do some debugging to see what is wrong. Unit test might be able to give you more precise information about what is working and what is broken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualité du &#039;&#039;feedback&#039;&#039;&#039;&#039;&#039; Après avoir passé un test fonctionnel, vous pouvez être confiant vis-à-vis de la fonctionnalité testée. Mais lorsque vous vous apercevez que le test échoue, vous devez généralement faire du déboggage pour trouver ce qui est erroné. Les tests unitaires peuvent vous donner une information plus précise sur ce qui fonctionne ou ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
Unit test is on the abstraction level of the programming language. When running unit test, everything should happen just within the CPU and memory. And each test case should be small. Therefore, it should run very fast. Typically, you should be able to run hundreds of unit tests within a few seconds. Including the compiling or other preparation time, the whole process of running unit test should take less than 1 minute.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires étant sur le même niveau d’abstraction que le langage de programmation employé, tout devrait s’exécuter au niveau du micro-processeur et de la mémoire lors de l’exécution du test unitaire. Et comme chaque cas de test devrait être de petite taille, il devrait donc s’exécuter très rapidement. Ainsi, vous devriez être en mesure d’exécuter plusieurs centaines de tests unitaires en quelques secondes. Cela comprend le temps de compilation ou de préparation, l’ensemble du processus d’exécution d’un test unitaire devrait prendre moins d’une minute.&lt;br /&gt;
&lt;br /&gt;
Unit test should also be repeatable. If nothing changes, unit test runs should always return the same result.&lt;br /&gt;
&lt;br /&gt;
Les tests unitaires devraient aussi être répétables. Si rien ne change d’une fois sur l’autre, l’exécution d’un test unitaire devrait retourner toujours le même résultat.&lt;br /&gt;
&lt;br /&gt;
If the unit test is very fast and repeatable, programmers can run it as often as they want, e.g. every a few minutes. The unit test will continuously provide quality feedback to the programmer. So that the programmer can go with a steady progress and focus on more important things rather than spending too much energy on trivial issues.&lt;br /&gt;
&lt;br /&gt;
Si un test unitaire est très rapide et répétable, les développeurs peuvent l’exécuter aussi souvent qu’ils le veulent, par exemple toutes les quelques minutes. Le test unitaire fournira en permanence aux développeurs des retours d’informations liés à la qualité. Cela permettra ainsi aux développeurs d’avancer à un rythme régulier et de se focaliser sur des choses plus importantes plutôt que de passer trop d’énergie sur des choses triviales.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xtest_levels.png.pagespeed.ic.-xbOy_tP-P.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Xtest_levels_fr.png|Xtest_levels_fr.png]]&lt;br /&gt;
&lt;br /&gt;
A reasonable automated test structure should be like a pyramid. At the bottom are a lot of unit test cases. In the middle are much fewer integration level test cases. On the top, there are even fewer functional/system level tests.&lt;br /&gt;
&lt;br /&gt;
Une structure de test automatisé acceptable devrait ressembler à une pyramide. À la base de la pyramide, il y a un grand nombre de cas de tests unitaires. Au milieu, des cas de tests d’intégration en moins grand nombre. En haut, seulement quelques cas de tests fonctionnels ou systèmes.&lt;br /&gt;
&lt;br /&gt;
== Common Misconceptions of Unit Test ==&lt;br /&gt;
&lt;br /&gt;
== Idées fausses à propos du test unitaire ==&lt;br /&gt;
&lt;br /&gt;
=== Unit test is not as important as the production code ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire n’est pas aussi vital que le code en production ===&lt;br /&gt;
&lt;br /&gt;
It is true that in the end, it’s production code that makes the product. But most software products have evolutionary life cycles. The code is not static. It changes over time. Code without unit test does not have the necessary protection when being changed. Unit test also contains important information that is not included in the production code.&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu’en fin de compte, c’est le code en production qui donne vraiment vie au produit. Mais la plupart des produits logiciels ont des cycles de vie évolutif. Le code n’est pas statique. Il change avec le temps. Du code sans test unitaire n’est suffisamment protégé lorsqu’une modification est faite. Le test unitaire contient aussi des informations importantes qui ne sont pas présentes dans le code en production.&lt;br /&gt;
&lt;br /&gt;
So unit test is just as important as the production code. They should be &#039;&#039;&#039;in the same SCM repository&#039;&#039;&#039;. They should follow the same coding standard as the production code.&lt;br /&gt;
&lt;br /&gt;
Par conséquent le test unitaire est tout aussi important que le code en production. Il devrait être stocké &#039;&#039;&#039;dans le même dépôt de gestion du code source&#039;&#039;&#039;. Le test unitaire devrait d’ailleurs suivre les mêmes conventions de codage que le code en production.&lt;br /&gt;
&lt;br /&gt;
=== Unit Test is done by testing engineers ===&lt;br /&gt;
&lt;br /&gt;
=== Le test unitaire est fait par des ingénieurs tests ===&lt;br /&gt;
&lt;br /&gt;
The purpose of unit test is not for finding bugs. Technically, it &#039;&#039;checks&#039;&#039; rather than &#039;&#039;tests&#039;&#039; if the code under test has implemented the behaviour intended by the programmer who designed it. So the reasonable choice is just let the same programmer writes both the test and the code under test.&lt;br /&gt;
&lt;br /&gt;
L’objectif du test unitaire n’est pas de trouver des anomalies. Techniquement, il &#039;&#039;vérifie&#039;&#039; plutôt que &#039;&#039;teste&#039;&#039; si le code sous test a implémenté le comportement voulu par le développeur qui l’a conçu. Donc le choix logique est de simplement laisser la même personne écrire à la fois le test et le code sous test.&lt;br /&gt;
&lt;br /&gt;
It’s also encouraged to have two or more people pair up to do the programming together. They write the unit test and the code under test together. There are many fun ways of &#039;&#039;pair-programming&#039;&#039;. You may find more information in the Test-Driven Development section.&lt;br /&gt;
&lt;br /&gt;
Il est aussi encouragé d’avoir deux ou plusieurs personnes travaillant de concert pour programmer à la fois le test et le code sous test. Il existe plusieurs manières sympa pour programmer en binôme. Vous trouverez davantage d’informations à ce sujet dans la section développement piloté par les tests.&lt;br /&gt;
&lt;br /&gt;
=== You can write unit test without changing the code under test ===&lt;br /&gt;
&lt;br /&gt;
=== Vous pouvez écrire des tests unitaires sans changer le code sous test. ===&lt;br /&gt;
&lt;br /&gt;
This is often not true. If the code doesn’t have good testability, you might still be able to write unit test for it technically. But the unit test written for non-testable code is usually very hard to maintain and understand. Therefore, it doesn’t make much sense to have it.&lt;br /&gt;
&lt;br /&gt;
Ce n’est pas toujours le cas. Si le code n’a pas une bonne testabilité, vous pourriez tout de même être capable techniquement d’écrire le test unitaire qui va avec. Mais un test unitaire qui a été écrit pour un code non-testable est généralement très difficile à maintenir et à comprendre. Par conséquent, il n’y a pas vraiment de raison d’en avoir un.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The secret of unit test is not about writing test, but writing testable code under test.&#039;&#039;&#039; We want testable code and easy test, which is a win-win. We don’t want non-testable code and hard-to-maintain code, which is a lose-lose.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le secret du test unitaire n’est pas d’écrire du test, mais d’écrire du code testable sous test.&#039;&#039;&#039; Nous voulons du code testable et facile à tester, ce qui s’avère une démarche gagnant-gagnant. Nous ne voulons pas de code non-testable et difficile à maintenir, ce qui serait une démarche perdant-perdant.&lt;br /&gt;
&lt;br /&gt;
=== I can add unit test later ===&lt;br /&gt;
&lt;br /&gt;
=== Je peux ajouter les tests unitaires plus tard ===&lt;br /&gt;
&lt;br /&gt;
Well, try asking the rock climbers to set their anchors later.&lt;br /&gt;
&lt;br /&gt;
Eh bien, essayez donc de demander à des grimpeurs de mettre leurs pitons plus tard.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/xunit_test.png.pagespeed.ic.U9rHA2rtat.webp]]&lt;br /&gt;
&lt;br /&gt;
== Good Unit Test Patterns ==&lt;br /&gt;
&lt;br /&gt;
== Schéma pour de bons tests unitaires ==&lt;br /&gt;
&lt;br /&gt;
=== No news is good news ===&lt;br /&gt;
&lt;br /&gt;
=== Pas de nouvelles, bonnes nouvelles ===&lt;br /&gt;
&lt;br /&gt;
If the test passes, it should just print OK (and perhaps some dots to show the progress). No other information.&lt;br /&gt;
&lt;br /&gt;
Si le test passe, il devrait afficher seulement OK (voire quelques points pour afficher son avancement). Aucune autre information nécessaire.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/500xNxunit_test_success.png.pagespeed.ic.W3mg1FIwIC.png]]&lt;br /&gt;
&lt;br /&gt;
Rule of thumb:&lt;br /&gt;
&lt;br /&gt;
En règle générale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;No human intervention should be needed to get ready for the test, running the test cases or checking the result.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Aucune intervention humaine ne devrait être nécessaire pour préparer l’exécution du test, exécuter les cas de tests ou en vérifier les résultats.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
And when it fails, it should provide precise information. The goal is to limit the amount of time you spend on debugging when the test fails.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/technical-excellence/342xNxunit_test_fail.png.pagespeed.ic.eM-9actgRz.png]]&lt;br /&gt;
&lt;br /&gt;
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupés à débogguer le code concerné.&lt;br /&gt;
&lt;br /&gt;
=== Arrange, Act, Assert ===&lt;br /&gt;
&lt;br /&gt;
=== Arranger, Agir, Auditer (Arrange, Act, Assert) ===&lt;br /&gt;
&lt;br /&gt;
A good pattern to follow in a unit test is “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange&#039;&#039;&#039;, &#039;&#039;&#039;Act&#039;&#039;&#039; and &#039;&#039;&#039;Assert&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Un bon schéma à suivre en ce qui concerne les tests unitaires est “&#039;&#039;&#039;AAA&#039;&#039;&#039;”: &#039;&#039;&#039;Arrange (dans le sens de mettre en place)&#039;&#039;&#039;, &#039;&#039;&#039;Act (dans le sens d’une action faite sur quelque chose)&#039;&#039;&#039; et &#039;&#039;&#039;Assert (dans le sens de contrôler)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you can easily find this pattern in each of your test cases, your tests should be easy to understand, and they should be fairly specific and to the point. One unit test case should test only one thing. Therefore, there should be only one set of AAA in one test case. A test case shouldn’t be very long (longer than 10 lines of code) if it follows the AAA pattern.&lt;br /&gt;
&lt;br /&gt;
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.&lt;br /&gt;
&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;def test\_should\_have\_no\_wrapping\_when\_string\_length\_is\_5\_and\_line\_width\_is\_10(self):&lt;br /&gt;
    \# Arrange:  Arrange all necessary preconditions and inputs.&lt;br /&gt;
    wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
    \# Act:  Act on the object or method under test.&lt;br /&gt;
    wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
    \# Assert:  Assert that the expected results have occurred.&lt;br /&gt;
    self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
import unittest class TestGroupForTextWrapping(unittest.TestCase):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    def test\_ne\_devrait\_pas\_avoir\_de\_retour\_à\_la\_ligne\_lorsque\_la\_longueur\_de\_la\_chaîne\_de\_caractères\_est\_de\_5\_et\_que\_la\_hauteur\_est\_10(self):&lt;br /&gt;
        \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.&lt;br /&gt;
        wrapper = TextWrapper(width=10)&lt;br /&gt;
&lt;br /&gt;
        \# Act :  Agir sur l&#039;objet ou sur la méthode sous test.&lt;br /&gt;
        wrapped = wrapper.wrap(&amp;amp;quot;a&amp;amp;quot; * 5)&lt;br /&gt;
&lt;br /&gt;
        \# Assert :  Contrôle que le résultat attendu s&#039;est bien produit.&lt;br /&gt;
        self.assertEqual(\[&amp;amp;quot;a&amp;amp;quot; * 5\], wrapped)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Behaviour Driven Development (BDD) Style ===&lt;br /&gt;
&lt;br /&gt;
=== Développement piloté par le comportement (BDD) ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;&#039;&#039;AAA&#039;&#039;&#039; pattern, the &#039;&#039;&#039;BDD&#039;&#039;&#039; style uses three other keywords to specify each test case: &#039;&#039;&#039;Given&#039;&#039;&#039;, &#039;&#039;&#039;When&#039;&#039;&#039; and &#039;&#039;&#039;Then&#039;&#039;&#039;. (You can also use &#039;&#039;&#039;And&#039;&#039;&#039; as another keyword.)&lt;br /&gt;
&lt;br /&gt;
Identique au schéma &#039;&#039;&#039;AAA&#039;&#039;&#039;, le BDD utilise trois mots-clés différents pour spécifier chaque cas de test : &#039;&#039;&#039;Étant donné&#039;&#039;&#039;, &#039;&#039;&#039;Lorsque&#039;&#039;&#039; et &#039;&#039;&#039;Alors&#039;&#039;&#039;. (Vous pouvez aussi utiliser &#039;&#039;&#039;Et&#039;&#039;&#039; comme mot-clé supplémentaire)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Given The Text Wrapper&#039;s Width Defined As 10&lt;br /&gt;
And Using &#039;-&#039; As Word Connector&lt;br /&gt;
When The Wrapper Wrap Text Length is Less Than 10&lt;br /&gt;
Then The Text Should Not Be Wrapped&lt;br /&gt;
&lt;br /&gt;
Given - Étant donné que la longueur du texte pour le retour à la ligne est défini à 10&lt;br /&gt;
And - Et que le caractère &#039;-&#039; est utilisé comme connecteur entre deux mots&lt;br /&gt;
When - Lorsque la longueur du texte est inférieure à 10&lt;br /&gt;
Then - Alors le texte ne devrait pas être retourné à la ligne&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you can see, “given-when-then” maps to “arrange-act-assert” pretty well. They both simply define a state transition of a Finite State Machine (FSM). You can find more on this in the [https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Uncle Bob’s article]. Some differences:&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le triptyque « étant donné - lorsque - alors » correspond plutôt bien avec le triptyque « Arrange - Act - Assert ». Ils définissent tous les deux un état transition d’une machine à état finie. Vous pouvez en savoir plus en consultant cet article d’[https://sites.google.com/site/unclebobconsultingllc/the-truth-about-bdd Oncle Bob]. Voici quelques différences entre les deux :&lt;br /&gt;
&lt;br /&gt;
* BDD is more “outside-in”, which means that it emphasises more the external behaviour&lt;br /&gt;
* With BDD, you need to define a &#039;&#039;&#039;domain specific language&#039;&#039;&#039; to write your test specifications. Because of this, usually you’ll need a different framework. One example for Python is [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
* Le BDD est davantage « dehors-dedans », cela veut dire qu’il met davantage l’accent sur le comportement externe&lt;br /&gt;
* Avec le BDD, vous devez définir un &#039;&#039;&#039;langage spécifique au domaine&#039;&#039;&#039; pour écrire vos spécifications de tests. À cause de cela, vous aurez besoin généralement d’un &#039;&#039;framework&#039;&#039; supplémentaire. Par exemple, pour Python vous pourrez utilisez [http://pythonhosted.org/behave/ behave].&lt;br /&gt;
&lt;br /&gt;
=== The Golden Rule Of a Unit Test ===&lt;br /&gt;
&lt;br /&gt;
=== La règle d’or du test unitaire ===&lt;br /&gt;
&lt;br /&gt;
In general, a good rule for unit test case is:&lt;br /&gt;
&lt;br /&gt;
De manière générale, une bonne règle d’or pour des tests unitaires serait :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Each unit test case should be very limited in scope.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Chaque cas de test unitaire devrait comporter un périmètre très restreint.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
So that:&lt;br /&gt;
&lt;br /&gt;
De telle manière que :&lt;br /&gt;
&lt;br /&gt;
* When the test fails, no debugging is needed to locate the problem.&lt;br /&gt;
* Tests are stable because dependencies are simple.&lt;br /&gt;
* Less duplication, easier to maintain.&lt;br /&gt;
* Lorsque le test échoue, qu’il ne soit pas nécessaire de faire du déboggage pour localiser le problème.&lt;br /&gt;
* Les tests soient stables car les dépendances sont limitées.&lt;br /&gt;
* Il y ait moins de duplications, que ce soit plus facile à maintenir&lt;br /&gt;
&lt;br /&gt;
There is no secret to write good unit test. In order to write good unit test, you need to create easy-to-test design.&lt;br /&gt;
&lt;br /&gt;
Il n’existe pas de secrets pour écrire un bon test unitaire. Afin d’écrire un bon test unitaire, vous devez créer une conception qui soit facile à tester.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xtest_levels_fr.png&amp;diff=15280</id>
		<title>Fichier:Xtest levels fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xtest_levels_fr.png&amp;diff=15280"/>
		<updated>2022-06-29T06:31:24Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xunit_test_fr.png&amp;diff=15279</id>
		<title>Fichier:Xunit test fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xunit_test_fr.png&amp;diff=15279"/>
		<updated>2022-06-29T06:29:02Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=15278</id>
		<title>Catégorie:Portail LeSS</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=15278"/>
		<updated>2022-06-29T06:22:22Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Ajout de la page tests unitaires&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;addthis /&amp;gt;&lt;br /&gt;
[[Catégorie: Portails Thématiques]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
[[Category: Portail Framework]]&lt;br /&gt;
[[Fichier:LeSS-logo 72.png|link=]] À la découverte de LeSS, ce framework de mise à l&#039;échelle de l&#039;élégance de Scrum.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LeSS-overview-diagram_fr.png|LeSS-overview-diagram_fr.png|link=]]&amp;lt;br /&amp;gt; [http://less.works/less/framework/introduction.html introduction]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;Depuis 2005, nous avons travaillé avec des clients pour mettre en oeuvre le framework LeSS (Large-Scale Scrum) de mise à l&#039;échelle du développement Scrum, agile et lean pour les groupes produit de grande taille. Nous partageons cette connaissance à travers LeSS pour que, vous aussi, vous puissiez réussir lorsque vous passez à l&#039;échelle.&amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;lt;br /&amp;gt;  - Craig Larman &amp;amp; Bas Vodde&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff; font-size: 18.2px&amp;quot;&amp;gt;Articles thématiques&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Framework|Portail Framework LeSS (fr) - 95%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/framework/introduction.html Introduction à LeSS]&lt;br /&gt;
** [[Pourquoi%20LeSS%20%3F|Pourquoi LeSS (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Produit|Le Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Product%20Owner|Le Product Owner (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20backlog%20du%20produit|Le Backlog du Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Les%20%C3%89quipes|Les Équipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Sprint|Le Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%281%C3%A8re%20partie%29|La Planification du Sprint (1ère partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%282%C3%A8me%20partie%29|La Planification du Sprint (2ème partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Backlog%20du%20Sprint|Le Backlog du Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20M%C3%AAl%C3%A9e%20Quotidienne|La Mêlée Quotidienne (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coordination%20%26%20Int%C3%A9gration|Coordination &amp;amp; Intégration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Incr%C3%A9ment%20Produit%20Potentiellement%20D%C3%A9ployable|L&#039;Incrément Produit Potentiellement Déployable (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20D%C3%A9finition%20du%20Fini|La Définition du Fini (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Revue%20de%20Sprint|La Revue de Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective|La Rétrospective (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective%20Globale|La Rétrospective Globale (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20du%20Backlog%20Produit|L&#039;Affinage du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20Initial%20du%20Backlog%20Produit|L&#039;Affinage Initial du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20ScrumMaster|Le ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Principes|Portail Principes (fr) - 72%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Pr%C3%A9sentation%20des%20principes|Présentation des principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Scrum%20%C3%A0%20grande%20%C3%A9chelle%20reste%20du%20Scrum|Scrum à grande échelle reste du Scrum (fr)]]&lt;br /&gt;
** [[Less_-_Plus_avec_LeSS|Plus avec LeSS (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/lean-thinking.html Pensée Lean]&lt;br /&gt;
** [[LeSS - Approche systémique|Approche systémique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Contr%C3%B4le%20du%20processus%20empirique|Contrôle du processus empirique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Transparence|Transparence (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/continuous-improvement-towards-perfection.html Amélioration continue vers la perfection]&lt;br /&gt;
** [[Less_-_Centré_client|Centré client (fr)]]&lt;br /&gt;
** [[Less_-_Focus_sur_le_produit_global|Focus sur le produit global (fr)]]&lt;br /&gt;
** [https://less.works/less/principles/queueing_theory.html Théorie des files d&#039;attente]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Structure|Portail Structure (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Equipes|Equipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Organisation%20en%20fonction%20de%20la%20valeur%20client|Organisation en fonction de la valeur client (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Equipes%20Feature|Equipes Feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle|Structure organisationnelle (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Communaut%C3%A9s|Communautés (fr)]]&lt;br /&gt;
** [[LeSS%20-%20ScrumMaster|ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Excellence%20technique|Portail Excellence Technique (fr)]] - 40%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Sp%C3%A9cifications%20par%20l%27exemple|Spécifications par l&#039;exemple (fr)]]&lt;br /&gt;
** [[Less - Intégration continue|Intégration Continue (fr)]]&lt;br /&gt;
** [https://less.works/less/technical-excellence/continuous-delivery.html Livraison Continue]&lt;br /&gt;
** [[LeSS - Tests d&#039;Acceptation|Tests d&#039;Acceptation (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/architecture-design.html Architecture &amp;amp; Conception]&lt;br /&gt;
** [http://less.works/less/technical-excellence/clean-code.html Ecrire du Code Propre]&lt;br /&gt;
** [[LeSS - Tests unitaires|Tests unitaires (fr)]]&lt;br /&gt;
** [[Less - Développement piloté par les tests|Développement piloté par les tests (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/thinking-about-testing.html Réflexions à propos des tests]&lt;br /&gt;
** [http://less.works/less/technical-excellence/test-automation.html Automatisation des tests]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Management|Portail Management (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20R%C3%B4le%20du%20Manager|Rôle du Manager (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Enseigner%20la%20r%C3%A9solution%20de%20probl%C3%A8me|Enseigner la résolution de problème (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Aller%20Voir|Aller Voir (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Auto-gestion|Auto-gestion (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Service%20d%27am%C3%A9lioration|Service d&#039;amélioration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Manager%20en%20tant%20que%20ScrumMaster|Le Manager en tant que ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20LeSS%20Huge|Portail Less Huge (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Domaines%20d%27exigences|Domaines d&#039;Exigences (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Backlog%20Produit%20de%20Domaine|Backlog Produit de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Product%20Owner%20de%20Domaine|Product Owner de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle%20pour%20LeSS%20Huge|Structure organisationnelle pour LeSS Huge (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Adoption|Portail Adoption (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Les%20trois%20principes|Trois principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20D%C3%A9marrer|Démarrer (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coaching|Coaching (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Am%C3%A9lioration%20continue|Amélioration Continue (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Sch%C3%A9ma%20d%27adoption%20des%20%C3%A9quipes%20feature|Schéma d&#039;adoption des équipes feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Rester%20sain%20d%27esprit|Rester sain d&#039;esprit (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;LeSS Test&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/test/pre-course.html LeSS Test]&lt;br /&gt;
** [http://less.works/less/test/scrum.html Scrum Test]&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14286</id>
		<title>LeSS - Approche systémique</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14286"/>
		<updated>2020-11-01T19:23:22Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br/&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/principles/systems-thinking.html Systems Thinking]&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux [[Fichier:Nime.png|50px|link=https://twitter.com/__nime__]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Relecteurs : Christophe Gesché, Fabrice Aimetti&amp;lt;br/&amp;gt;&lt;br /&gt;
Date : 01/11/2020&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traduction :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[LeSS - Portail Principes]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Approche systémique ==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;J’ai pris un cours de lecture rapide puis j’ai lu « Guerre et Paix » en vingt minutes. Cela parle de la Russie. — Woody Allen&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Quoi que nous fassions, le nombre d’anomalie dans notre &#039;&#039;backlog&#039;&#039; reste identique.&amp;quot; nous a dit un jour un manager en évoquant un produit de près de 15 millions de lignes de code écrites en C et C++ et sur lequel plusieurs centaines de développeurs étaient en train de travailler. Que pouvait-il bien se passer ? L’approche systémique peut s’avérer utile dans ce cas. En petits groupes, les forces en présence peuvent rapidement être identifiées et comprises de manière informelle, mais dans le cadre du développement d’un gros produit ou de n’importe quel gros système, c’est difficile. Gerry Weinberg met en avant deux facteurs décisifs dans ce genre de situation :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Loi de Weinberg-Brooks&#039;&#039;&#039; : De plus en plus de projets informatiques sont partis de travers après que le management ait pris des décisions basées sur des &#039;&#039;&#039;modèles systémiques incorrects&#039;&#039;&#039; plus que pour toutes autres combinaisons de causes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Erreur de causalité&#039;&#039;&#039; : Chaque effet a une cause... et nous pouvons dire desquelles il s’agit. [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226 [Weinberg92]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces deux facteurs reflètent bien l’impact de nos &#039;&#039;&#039;modèles mentaux&#039;&#039;&#039; sur le système, un sujet que nous reverrons plus tard dans cette partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les problèmes résultant de nos modèles mentaux et de nos postulats sont un point à traiter. Un autre point est l’adoption à grande échelle de Scrum, de l’approche lean et des principes agiles en dehors du domaine du développement. Ce point est aussi présent dans la gestion de produit, les budgets, les tests, la commercialisation, la gouvernance et la politique RH. En conséquence, dans les adoptions agiles à grande échelle, il est utile de se réunir avec des collègues et de &#039;&#039;réfléchir en profondeur&#039;&#039; sur les modèles mentaux, les relations causales, les boucles de feedback et les mécanismes (ou les illusions) de contrôle dans un gros système qui va être sérieusement &#039;&#039;perturbé&#039;&#039;. L’approche systémique est l’un de ces outils de réflexion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En 1958 la &#039;&#039;Harvard Business Review&#039;&#039; a publié un article de Jay Forrestor, professeur à la MIT Sloan School, qui a fait date [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers”]. Cet article a lancé le mouvement de l’approche systémique dans le domaine des formations en gestion d’entreprise et la MIT Sloan School of Management devint célèbre pour ses formations en &#039;&#039;&#039;dynamique des systèmes&#039;&#039;&#039;. Le terme de dynamique des systèmes est parfois utilisé comme synonyme de l&#039;&#039;&#039;&#039;approche systémique&#039;&#039;&#039;, même si ce dernier est un terme beaucoup plus général.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le MIT a également attiré d’autres chercheurs intéressés par la dynamique systémique tel que Peter Senge&amp;lt;ref&amp;gt;&#039;&#039;La cinquième discipline&#039;&#039; écrit par Senge sur l’approche systémique et les organisations apprenantes a été nommé &amp;quot;l’un des livres les plus novateurs sur le management de ces 75 dernières années&amp;quot; par la &#039;&#039;Harvard Business Review.&#039;&#039; [Senge94].&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En corrélation avec la loi de &#039;&#039;Weinberg-Brook&#039;&#039;, Jay Wright Forrester a montré que les décideurs à qui il avait été donné des modèles dynamiques de systèmes opérationnels et à qui il avait été demandé d’améliorer la performance opérationnelle, &#039;&#039;n’avaient fait généralement qu’empirer les choses&#039;&#039; [https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ [SKRRS94]]. Il en est ressorti d’ailleurs que la plupart des personnes évaluaient mal la manière dont il faut améliorer les systèmes, et appliquaient généralement leur &amp;quot;bon sens&amp;quot;, en mettant en place des solutions de contournement qui n’apportent aucune amélioration systémique à long terme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pourquoi le comportement d’un groupe de développement de grande taille (autrement dit un système) n’est-il pas compris ou guidé de manière compétente ? La réponse réside, en partie, dans le comportement des systèmes stochastiques avec les files et les variabilités comme nous avons pu l’évoquer avec le principe LeSS de la [https://less.works/less/principles/queueing_theory.html théorie des files d’attentes (en)]. Et c’est la même réponse qui est au coeur de la &#039;&#039;théorie du contrôle&#039;&#039; : la plupart des systèmes d’intérêt - tel qu’un groupe de développement de produit - ont des boucles de feedback positives et négatives ainsi qu’un comportement non linéaire. Le comportement de ces systèmes défient nos intuitions les plus profondes. Et puis il y a la question secondaire des &#039;&#039;gens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé, les raisons expliquants l’incompétence à maîtriser ou à guider un gros système sont (liste non exhaustive) :&lt;br /&gt;
&lt;br /&gt;
* le manque de connaissance des dynamiques des systèmes, des boucles de feedback, du comportement non linéaire des systèmes, et des conséquences inattendues dans les systèmes sur le lieu de travail.&lt;br /&gt;
* la mauvaise compréhension des causes racines des problèmes (et de comment les trouver)&lt;br /&gt;
** &#039;&#039;les causes&#039;&#039;, pas &#039;&#039;la cause&#039;&#039; ; en approche systémique, nous savons que les causes des problèmes sont multiples, indirectes et dynamiques&lt;br /&gt;
* l’incapacité à savoir si ou pourquoi une solution de contournement ou une décision locale dégrade la performance globale opérationnelle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour résumé, nous n&#039;utilisons pas l’approche systémique&amp;lt;ref&amp;gt;Une autre raison : croire que plus de contrôle est possible qu’il ne l’est en réalité. La science de la complexité suggère qu’il existe des limites en termes de prédiction et de contrôle des systèmes sociaux semi-chaotiques [Stacey07]. C’est une énorme boîte de Pandore qui restera close dans ce livre.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces raisons sont la conséquence de l’intersection du management et de l’adoption à grande échelle des principes lean et agile. L’équipe de direction fait partie du système qui est perturbé ; si elle n’applique pas l’approche systémique, elle pourrait &#039;&#039;vraiment&#039;&#039; le perturber - et pas de la bonne manière !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les points-clés à retenir de l’approche systémique peuvent être résumé dans les [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 &#039;lois&#039;] décrites dans la [https://www.amazon.fr/cinqui%C3%A8me-discipline-organisations-apprenantes-dexemplaires-ebook/dp/B017WSYAHG Cinquième Discipline] :&lt;br /&gt;
* Les problèmes d’aujourd’hui viennent des &#039;solutions&#039; d’hier.&lt;br /&gt;
* Plus vous poussez, plus le système pousse en retour.&lt;br /&gt;
* Le comportement va d’abord empirer avant de s’améliorer.&lt;br /&gt;
* La manière la plus facile de s’en sortir conduit souvent à faire quelques pas en arrière.&lt;br /&gt;
* Le médicament peut être pire que la maladie.&lt;br /&gt;
* Aller plus vite c’est aller plus lentement.&lt;br /&gt;
* Les causes et les effets ne sont pas étroitement liés dans l’espace et le temps.&lt;br /&gt;
* De petits changements peuvent produire de gros résultats... mais les zones où l’effet de levier est le plus important sont souvent les moins évidentes.&lt;br /&gt;
* Vous pouvez avoir votre gâteau et le manger aussi... mais pas en une seule bouchée.&lt;br /&gt;
* Couper un éléphant en deux ne produit pas deux petits éléphants.&lt;br /&gt;
* Il n’y a aucun reproche à faire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La devise de Toyota en interne est [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html &amp;quot;Bien &#039;&#039;&#039;réfléchir&#039;&#039;&#039; permet d&#039;avoir de bons produits&amp;quot;]. L’approche systémique est un ensemble d’outils de réflexion pour aider à :&lt;br /&gt;
* &#039;&#039;&#039;voir les dynamiques des systèmes&#039;&#039;&#039; : une organisation de développement est un système de personnes et de règles avec de subtiles boucles de feedback et des conséquences inattendues&lt;br /&gt;
** nous pouvons apprendre à voir et ainsi à améliorer le système avec des &#039;&#039;&#039;diagrammes de boucles causales&#039;&#039;&#039; réalisés lors d’un atelier&lt;br /&gt;
* &#039;&#039;&#039;percevoir les modèles mentaux&#039;&#039;&#039; : parmi les raisons derrière des décisions sous-optimales se trouvent des hypothèses erronées et des raisonnements incorrects&lt;br /&gt;
** les diagrammes de boucles causales et les cinq pourquoi permettent de révéler cela&lt;br /&gt;
* &#039;&#039;&#039;voir les optimisations locales&#039;&#039;&#039; : une autre source de décisions sous-optimales est &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit prendre la &amp;quot;meilleure&amp;quot; décision du point de vue d’une personne ou d’un département, au détriment d’une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039; qui est l’objectif au niveau système &#039;&#039;lean&#039;&#039; et qui consiste à pouvoir &#039;&#039;livrer la plus grande valeur possible de très grande qualité avec un moral d’acier.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette présentation de l’approche systémique est faite autour des domaines suivants : apprendre à voir (1) &#039;&#039;les dynamiques des systèmes&#039;&#039;, (2) &#039;&#039;les modèles mentaux&#039;&#039;, (3) &#039;&#039;les causes racines&#039;&#039;, et (4) &#039;&#039;l’optimisation locale&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Complexité statique versus complexité dynamique ===&lt;br /&gt;
&lt;br /&gt;
La plupart d’entre nous, notamment les ingénieurs et les financiers, ont été formés pour maîtriser la &#039;&#039;&#039;complexité de détails statiques&#039;&#039;&#039;, en apprenant à analyser et à gérer l’information (exigences, analyses financières, ...), à décomposer des structures complexes en structures simples, et ainsi de suite. C’est-à-dire, la complexité d’une information qui est par nature structurellement statique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pourquoi les gros systèmes informatiques ont-ils tendance à se dégrader malgré de plus en plus de temps passé sur les anomalies ? Qu’est-ce qui pourrait bien se passer si les États-Unis d’Amérique envahissait l’Irak ? Voir les dynamiques derrière ces questions implique d’analyser la &#039;&#039;&#039;complexité des dynamiques&#039;&#039;&#039; en jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au contraire d&#039;une formation sur les détails statiques que la plupart d’entre nous avons suivie, peu d’entre nous ont reçu de formation sur l’étude des systèmes dynamiques et complexes&amp;lt;ref&amp;gt;Macro économie, psychologie, sociologie et biologie sont des exceptions parmi tant d’autres.&amp;lt;/ref&amp;gt; et notamment dans le milieu professionnel. Peut-être parce que nous avons la croyance qu’il est suffisant de s’appuyer sur le bon sens en milieu professionnel. Jay Wright Forrester a démontré que le &amp;quot;bon sens&amp;quot; n’est pas suffisant dans des systèmes complexes et qu’il est possible de former des personnes pour leur permettre de mieux appréhender les &#039;&#039;&#039;modèles de dynamique des systèmes&#039;&#039;&#039; en milieu professionnel en utilisant notamment des &#039;&#039;diagrammes de flux&#039;&#039; [http://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de flux peuvent s’appliquer aussi bien aux flux matériels, financiers, d’informations, de stocks (n’importe quel type de stock quantitatif comme de l’argent ou des anomalies), aux conséquences des décisions et des politiques et des relations de causes à effet. Lorsque nous pensons aux diagrammes de flux, nous pensons souvent au seul &#039;&#039;diagramme de boucle causale&#039;&#039; dédié aux relations de cause à effets et aux boucles de rétroaction dans un système [http://www.amazon.fr/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. Il existe une grande variété d’autres diagrammes qui peuvent faire figurer les stocks (quels qu’ils soient), les liens de causalité, et les retards. Dans son ouvrage, [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ [Weinberg92]] Gerald Weinberg appelle cela un &#039;&#039;diagramme d’effet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La première loi de la réalisation d’un diagramme : nous modélisons pour avoir une conversation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un outil très utile pour apprendre les dynamiques des systèmes est le diagramme de boucles causales : nous vous recommandons de l’utiliser sur un tableau blanc notamment lors des Rétrospectives Globales LeSS avec les collègues. Mais avant d’aller plus loin, voici la &#039;&#039;première loi de réalisation d’un diagramme&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;La première valeur d’un diagramme c’est la discussion qui se déroule lors de la réalisation du diagramme : nous modélisons pour avoir une conversation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un groupe se rassemble pour dessiner un diagramme de boucles causales sur un tableau blanc (&amp;quot;C’est l’acte de discuter et de réfléchir qui est le plus important lorsque nous dessinons&amp;quot;, Valtech India.), la première valeur d’un diagramme c’est la conversation et la compréhension commune à laquelle les personnes arrivent lors de la création du modèle. Ce qu’il en résulte, à savoir un diagramme facile à comprendre, est important pour rendre les idées et les modèles mentaux concrets et non ambigües (sur le tableau blanc) parce que les mots seuls peuvent être imprécis et mal compris. Toutefois, le diagramme est secondaire par rapport à ce avec quoi les gens repartent : ils ont appris quelque chose et ont revu leur compréhension du monde à travers une discussion.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Xgroup-cld-modeling.jpg|848px|border|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs -  modéliser pour avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Trucs et astuces de pro pour modéliser&#039;&#039; : nous commençons par écrire sur des petits post-its les noms des &#039;&#039;variables&#039;&#039;, par exemple &amp;quot;vélocité des &#039;&#039;features&#039;&#039;&amp;quot; ou &amp;quot;nombre d’anomalies&amp;quot;. Nous les plaçons ensuite sur le tableau blanc. Puis nous dessinons les liens de causalités entre les post-its. Il y aura (ou il devrait y avoir) beaucoup de réécriture, d’effaçage, de redessin lors de la session de modélisation. Le résultat le plus important d’une telle session est la &#039;&#039;compréhension&#039;&#039; : il se peut qu’à l’issue de cet atelier, certains participants voudront prendre une photo du dessin du tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : les diagrammes de boucles causales ==&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales sont souvent utilisés en introduction à LeSS pour aider à voir les dynamiques de ce qu’il se passe lors du développement à grande échelle. Il est donc utile de comprendre ce type de diagrammes pour cette seule et unique raison. Et cela s’avèrera encore plus utile pour vous, si vous le faites avec vos collègues devant un tableau blanc. Vous modélisez pour avoir une conversation. Quand ? Plus probablement lors d’une rétrospective globale LeSS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’aspect pratique de cet exercice est bien plus important que ce qu’il peut paraître au premier abord. Notre conseil d’&amp;quot;être un pratiquant systémique&amp;quot; peut vous sembler vague et sans grand impact. Mais si vous et quatre de vos collègues prenez l’habitude de vous réunir devant un grand tableau blanc, en dessinant des diagrammes de boucles causales ensemble, alors vous arriverez à faire la connexion entre &amp;quot;&#039;&#039;être&#039;&#039; un pratiquant systémique&amp;quot; avec &amp;quot;&#039;&#039;faire&#039;&#039; de l’approche systémique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les exemples suivants peuvent paraître aseptisés car présentés dans un livre. Mais imaginez-vous à côté d’un tableau blanc avec d’autres personnes dessinant ensemble des diagrammes au cours d’une conversation animée. C’est de cette manière-là que nous suggérons de &#039;faire&#039; de l’approche systémique.&lt;br /&gt;
&lt;br /&gt;
=== Notation et exemples ===&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales contiennent beaucoup d’éléments ; les éléments suivants sont les plus communément utilisés et sont vus en détail tout au long du scénario qui va suivre :&lt;br /&gt;
* variables&lt;br /&gt;
* liens de causalité&lt;br /&gt;
* effets opposés&lt;br /&gt;
* contraintes&lt;br /&gt;
* objectifs&lt;br /&gt;
* réactions ; solutions de contournement&lt;br /&gt;
* effets d’interaction&lt;br /&gt;
* effets extrêmes&lt;br /&gt;
* retards&lt;br /&gt;
* boucles de feedback positives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le scénario qui suit est un scénario simplifié pour une organisation spécifique. Il ne s’agit pas d’une généralisation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Les variables====&lt;br /&gt;
Les diagrammes de boucles causales comportent des &#039;&#039;variables&#039;&#039; (ou des stocks) telle que la &#039;&#039;vélocité (taux de livraison) des features logicielles&#039;&#039; et le &#039;&#039;nombre d’anomalies&#039;&#039;. Les variables ont une quantité mesurable.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-4-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Les liens de causalité====&lt;br /&gt;
Un élément peut avoir un effet sur un autre, par exemple si la vélocité des &#039;&#039;features&#039;&#039; augmente alors le nombre d’anomalies augmente ; autrement dit, plus de code, plus d’anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-5-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est temps désormais de se jeter à corps perdu dans la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; et dans la &#039;&#039;causalité fallacieuse&#039;&#039;. Il est facile de dessiner un diagramme, ça l’est moins de modéliser en faisant preuve de clairvoyance comme par exemple, la relation entre le &#039;&#039;nombre de développeurs&#039;&#039; et la &#039;&#039;vélocité des features&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toute relation de cause à effets est par nature obscure, même si les gens ont l’habitude de sauter sur la première conclusion venue comme par exemple plus de développeurs égale plus de vélocité. Ajouter des personnes tard au cours du développement peut &#039;&#039;réduire&#039;&#039; la vélocité (il s’agit d’une composante de la &amp;quot;loi de Brooks&amp;quot; [Brooks95]). Ou, &#039;&#039;davantage&#039;&#039; de mauvais développeurs pourrait vraiment vous ralentir. Il pourrait être objecté qu’&#039;&#039;enlever&#039;&#039; des développeurs exécrables peut permettre &#039;&#039;d’améliorer&#039;&#039; la vélocité.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-6-fr.png|link=|848px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Effets opposés====&lt;br /&gt;
L’effet d’un lien de causalité peut aller dans la même direction ou dans la direction opposée. Si A augmente alors B augmente, ou vice versa. L’effet opposé se souligne à l’aide d’un ‘O’ sur la ligne. Supposons que les anomalies ralentissent grandement le système, réduisant la vélocité des nouvelles features parce que les gens passent davantage de temps à corriger ou à trouver des solutions de contournement aux anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-7-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Contraintes====&lt;br /&gt;
À moins que vous ne trouviez des personnes prêtent à travailler gratuitement, il y a une contrainte sur le nombre de développeurs basé sur le budget disponible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les contraintes ne sont &#039;&#039;pas&#039;&#039; des liens de causalité. Lorsque le montant du budget disponible augmente, ce n’est pas le cas du nombre de développeurs.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-8-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Buts et réactions====&lt;br /&gt;
Les personnes, les départements et les systèmes ont des buts, comme par exemple avoir une &#039;&#039;vélocité des features plus élevée&#039;&#039;. Les buts occasionnent souvent de la pression pour que les gens réagissent (ou agissent) dans l’intention de leur faire atteindre ce but. Mais étant donné qu’il y a la &#039;&#039;causalité fallacieuse&#039;&#039; et la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; à laquelle il faut faire face, les gens devraient être prudents quant aux actions pertinentes à entreprendre. Voici un exemple de diagramme modélisant cela :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-9-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
Non seulement un but à atteindre avec une &#039;&#039;récompense&#039;&#039; au bout engendre une pression à agir, mais cela créé aussi une pression à &#039;&#039;faire semblant&#039;&#039; d’agir et à atteindre le but : les récompenses provoquent un &#039;&#039;&#039;dysfonctionnement des indicateurs&#039;&#039;&#039;. Le dysfonctionnement des indicateurs peut être proportionnel à la valeur perçue de la récompense parce que les personnes sont motivées pour avoir la récompense, non pour améliorer le système [http://www.amazon.fr/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ [Austin96]]. Remarquez bien comment et de quelle manière les récompenses peuvent dégrader la performance du système. De manière visuelle, les dynamiques d’un tel système pourrait être...&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-10-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
Il est assez intéressant de voir que toutes ces dynamiques ont été ajoutées par l’introduction d’une récompense et qu’il n’y pas de connexion entre le haut et le bas de cette modélisation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il n’y a aucune garantie que la vélocité des features s’améliore ou même que l’on y travaille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enlever le système de récompense est une solution à la cause racine de ce dysfonctionnement. Une autre contremesure de surface est le principe et le comportement managériale &#039;&#039;Aller voir&#039;&#039; (aller voir physiquement sur le lieu où le travail s’effectue) de l’approche lean :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-11-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Solutions de contournement====&lt;br /&gt;
Une solution payante à long terme pour atteindre une vélocité plus grande, mais qui n’est pas sans difficulté, consiste à : recruter des développeurs très qualifiés, faire davantage d’accompagnements et de formations, et à se séparer des moins bons éléments. L’alternative est ce que l’on appelle une &#039;&#039;solution de contournement&#039;&#039;, c’est ce que l’on met en place dans l’espoir d’atteindre l’objectif en moins de temps et avec moins d’effort. Parfois, une solution de contournement se révèle payante aussi bien sur le court terme que sur le long terme, renforçant par la-même le système. D’autres fois cela ne fonctionne pas... d’où l’expression &amp;quot;aller plus vite c’est aller plus lentement&amp;quot;. Par exemple, les gens peuvent &#039;&#039;croire&#039;&#039; qu’augmenter le nombre de développeurs permet d’augmenter la vélocité des features. Et ils peuvent par conséquent être amenés à espérer qu’en recrutant davantage de développeurs cela permettra de résoudre plus vite et plus facilement le problème de vélocité. La mention &#039;SC&#039; sur le diagramme ci-dessous indique une solution de contournement.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-12-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Effets d’interaction====&lt;br /&gt;
La capacité à embaucher est contraint à la capacité budgétaire. Une solution de longue haleine non sans difficulté est d’obtenir davantage de budget. Une solution de contournement possible est de recruter un &#039;&#039;grand&#039;&#039; nombre de développeurs bon marché. Dans ce cas, le niveau du budget a un &#039;&#039;effet d’interaction&#039;&#039; avec les autres boucles causales. Un budget peu élevé aura tendance à renforcer le taux de développeurs bon marché si la pression pour recruter augmente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pourrions dessiner simplement un lien de causalité (opposé) de &#039;&#039;rentrée budgétaire&#039;&#039; à &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;, mais cela voudrait simplement dire qu’avoir un budget moindre aurait pour conséquence de recruter davantage de développeurs bon marché. Mais ce n’est pas tout à fait ce que nous voulons dire ; ce que voulons montrer en fait, c’est l’effet d’interaction, c’est-à-dire qu’un effet A influence un &#039;&#039;effet&#039;&#039; B. Cela se fait en montrant un lien de causalité heurtant un autre lien de causalité, par exemple en traçant une ligne de &#039;&#039;rentrée budgétaire&#039;&#039; vers la ligne représentant la solution de contournement qui va vers &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-13-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Effets extrêmes====&lt;br /&gt;
Il nous est arrivé de travailler avec d’excellents développeurs très bon marché et avec d’autres développeurs hors de prix et très nuls, mais en moyenne, vous obtenez à hauteur de ce que vous payez ; lorsque vous recrutez au moins disant, le niveau moyen en terme de compétences sera plus faible. Dans le diagramme ci-dessous, nous avons voulu montrer que l’impact du recrutement de personnes bon marché en rapport avec le &#039;&#039;nombre de développeurs peu qualifiés&#039;&#039; à un impact sensiblement plus grand que la moyenne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour montrer un &#039;&#039;effet extrême&#039;&#039; sur un modèle, faites un trait épais comme vous pouvez voir ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-14-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Retards====&lt;br /&gt;
Un problème courant au niveau du recrutement dans un projet de développement logiciel concerne &#039;&#039;l’erreur au niveau de la variance d’un développeur moyen&#039;&#039; ; autrement dit la croyance fausse que la variance d’un développeur à un autre (en terme de productivité, de qualité de code, etc.) est relativement faible. Toutefois, les études de la variance au sujet des développeurs montrent un rapport de 1 à 4 entre le 1er quartile et le dernier [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. C’est plutôt quelque chose de significatif. De même des études - en long et en large - du modèle COCOMO montrent que la capacité du développement personnel est le facteur de loin le plus important quant à la productivité [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. Et, en moyenne, il s’avère que les développeurs peu qualifiés font du code de mauvaise qualité (mauvaise conception) et de plus d’anomalies, ceci rajoute un autre frein au système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mais l’impact de ces effets ne sont pas visibles immédiatement. Par exemple, cela peut prendre un certain temps après un recrutement massif de développeurs peu qualifiés avant que les impacts négatifs ne se fassent sentir au niveau de la qualité du code ou de la conception. De manière similaire, la &#039;&#039;baisse&#039;&#039; moyenne de la vélocité des features (en raison de l’impact important de la variance des développeurs évoqué plus haut) ne se verra pas immédiatement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour montrer ces &#039;&#039;effets à retardement&#039;&#039; dans le modèle, faites une double-ligne en travers de la ligne d’effet.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-15-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le retard a une influence intéressante sur le pouvoir &#039;&#039;pédagogique&#039;&#039; ou correctif sur un système. Si un impact ou une conséquence inattendue est retardé suffisamment longtemps, personne n’en voit ni l’effet (qu’il soit bénéfique ou néfaste) ni sur la façon dont A influence B ou plus subtilement comment &#039;&#039;A a influencé B qui a influencé A&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par conséquent, personne n’apprend de ses erreurs ni n’est en capacité de les corriger, que ce soit en terme de stratégie, d’actions d’encadrement, d’outils ou de quoi que ce soit. De la même manière, l’amélioration graduelle à travers l’application d’une démarche lean &#039;&#039;kaizen&#039;&#039;, peut prendre un certain temps ; de la patience et de la perspicacité sont nécessaires pour voir si et comment les choses s’améliorent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Boucles de feedback positives====&lt;br /&gt;
Les boucles de feedback négatives ou positives&amp;lt;ref&amp;gt;&#039;&#039;Les boucles de feedback&#039;&#039; sont parfois utilisées dans ce livre dans le sens littéral du terme, plutôt dans le sens des dynamiques des systèmes.&amp;lt;/ref&amp;gt; et les retards sont le point de départ pour une approche plus subtile d’un système, et de sa compréhension. Par exemple, de quelle manière une personne peut-elle devenir un meilleur développeur ? En partie, en bénéficiant du mentorat de très bons développeurs et en jetant un oeil sur du très bon code. Mais il est impossible de trouver du bon code dans un endroit remplit de développeurs médiocres, il est impossible également d’y attirer ou de retenir le petit groupe de très bon développeurs qui pourraient prendre le rôle de mentors. Ils préfèrent largement aller travailler ailleurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce groupe de développeurs médiocres rentrent dans un cercle vicieux en raison d’un ensemble de &#039;&#039;boucles de feedback positives&#039;&#039;. Fort heureusement, ce cercle vicieux est assujetti aux contraintes du budget.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Malheureusement de plus en plus des très bons développeurs, ceux en capacité d’élaborer du très bon code et de faire du mentorat auprès des autres développeurs, partent. Par conséquent, il y a de moins en moins de code de qualité à regarder et à partir duquel il est possible d’en tirer des enseignements. Le pourcentage de développeurs médiocres augmente de plus en plus et la vélocité au niveau des features continue à chuter. Le code devient de plus en plus brouillon, difficile, avec pleins de bouts de code dupliqués à gauche et à droite, le tout de telle manière que la capacité d’implémenter des features décline. Étant donné que la vélocité des features continue de chuter, il y a davantage de pression pour recruter des développeurs très bon marché. Tout cela conduit à de multiples boucles de renforcement positives dans le système comme l’illustre l’exemple ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-16-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Astuce&#039;&#039; : Vous pouvez trouver des boucles de feedback positives en cherchant des cycles ayant un &#039;&#039;nombre pair&#039;&#039; de relations. Vous en trouverez plusieurs exemples ci-dessus.&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Le scénario donné à titre d’exemple est uniquement cela, un exemple. Une diagramme de boucle causale permet de visualiser la richesse de la dynamique dans le système dans un milieu professionnel. La meilleure manière de modéliser un tel système est de le faire en groupe face à un tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Voir les modèles mentaux ==&lt;br /&gt;
Les précédents diagrammes de boucles causales reflètent les modèles mentaux de causalité des individus... qui peuvent s’avérer faux. Il est intéressant de remarquer que les modèles de causalité des individus sont influencés par la ponctualité (ou les retards) et la qualité des feedbacks dans le système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les &amp;quot;modèles mentaux&amp;quot; nous permettent d’améliorer nos compétences de méta-cognition pour voir et questionner nos propres postulats et l’enchaînement de nos raisonnements. Brûlons-nous des étapes de manière erronée ? Cette question implique aussi lorsque nous sommes en train de travailler avec des collègues de discuter avec eux (en s’enquérant plutôt qu’en reprochant) de leurs modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Voir&#039;&#039; les modèles mentaux n’est que la première étape ; les &#039;&#039;changer&#039;&#039; constitue une seconde partie bien plus difficile. Cet art est bien au-delà du sujet de cette introduction, même si une adoption réussie de LeSS implique des changements en terme d’état d’esprit et de prise de conscience au sein de très nombreuses équipes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une astuce pour mieux &#039;&#039;voir&#039;&#039; les modèles mentaux (croyances, échelle d’inférence, ...) en jeu au niveau des dynamiques des systèmes est de poser les questions suivantes lors d’un atelier de modélisation puis de tracer les éléments de réponse au tableau blanc. &amp;quot;Parlons donc des hypothèses derrière ce modèle. Que &#039;&#039;croyons&#039;&#039;-nous ou tenons pour acquis en terme de faits et d’effets qui nous ont conduits ici ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les éléments de réponse sont dessinés sur le tableau blanc. En voici un exemple :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-17-fr.png|botrder|848px|link=]]&lt;br /&gt;
&#039;&#039;Visualiser les postulats présents dans nos têtes... nos modèles mentaux.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Exemple : La dynamique &amp;quot;Aller plus vite c’est aller plus lentement&amp;quot; ===&lt;br /&gt;
Dorénavant, avec notre vocabulaire enrichi des termes de solutions de contournement, de boucles de feedback positives et de modèles mentaux, il est fascinant de voir qu’il peut y avoir un semblant d’amélioration à court terme sur une variable donnée, mais que cela entraîne en même temps une &#039;&#039;dégradation à retardement&#039;&#039; de cette même variable, d’où la dynamique &amp;quot;Aller plus vite c’est aller plus lentement&amp;quot;. Il s’agit d’une dynamique récurrente et d’une cause de vulnérabilité à terme. Voici un nouvel exemple illustrant cela :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;L&#039;histoire de Microsoft Word et de&#039;&#039; &#039;&#039;&#039;&#039;&#039;la boîte à outils secrète du développeur&#039;&#039;&#039;&#039;&#039; : un exemple typique d’une ‘amélioration’ à court terme mais d’une dynamique de dégradation à long terme est le récit de la première livraison de Microsoft Word sur Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ [Spolsky04]]. Le logiciel a été livré avec des &#039;&#039;années&#039;&#039; de retard par rapport à la date prévue. Pourquoi ? &#039;&#039;Parce que les managers ont essayé à tout prix de suivre le calendrier de départ et ont fait pression sur les développeurs pour le respecter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette histoire illustre pourquoi cet espoir illusoire de respecter une date souhaitée est bien identifié comme une source de gâchis dans l’approche lean. Dans le cas présent l’espoir illusoire consiste à insister (du moins apparemment) à suivre le calendrier, ce qui implique une idée fausse ou illusoire que les estimations ne sont pas de simples estimations mais des promesses, un mythe classique qui pousse à la dégradation d’un système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le modèle qui suit &#039;&#039;résume&#039;&#039; les dynamiques à l’oeuvre lorsque des managers poussent leurs équipes à respecter à tout prix les calendriers prévisionnels, et pourquoi cette solution de contournement qui freine pourtant l’avancement des travaux semblent les faire aller plus vite à court terme mais en réalité &#039;&#039;plus lentement&#039;&#039; à long terme. Par rapport à ce qui est décrit précédemment dans la dynamique de la pression du calendrier et de la boîte à outils secrète, certaines dynamiques ont été omises intentionnellement sur ce schéma et sont visibles sur le schéma des dynamiques avancées.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-18-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dynamique de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En solution de contournement, les managers de Microsoft ont exhorté, ont corrompu (à l’aide de primes potentielles), et ont menacé les développeurs de Word pour leur faire respecter le calendrier prévisionnel. En conséquence, les développeurs ont, de manière tout à fait prévisible, sorti leur &#039;&#039;&#039;boîte à outils secrète de développeurs&#039;&#039;&#039;, autrement dit tout un arsenal de pratiques pour pisser du code pourri (aucuns tests, aucunes revues, ignorance des anomalies connues, développement par copier-coller, mauvaise conception, ...) pour développer visiblement plus vite. Vous voyez bien, les développeurs ont aussi des solutions de contournement pour régler leurs problèmes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vu de l’extérieur, ces tactiques ont fonctionné à merveille. Au fur et à mesure que les managers mettaient la pression sur les développeurs, les ‘features’ étaient développées de plus en plus vite grâce à l’utilisation de la boîte à outils secrète, ce qui a renforcé la croyance en quoi mettre la pression sur les développeurs était quelque chose d’utile. Mais cette apparente accélération a eu en fait un effet à retardement qui a rendu les choses plus lentes (c’est ce que nous allons voir par la suite). Étant donné que le management n’a pas été assez rapide à voir l’effet à retardement de la boîte à outils, et parce que les managers pensent qu’ils n’ont pas besoin d’aller regarder fréquemment en détails le code source ou qu’ils n’ont pas besoin d’être eux-mêmes des développeurs très expérimentés, ils n’ont rien appris de cette dynamique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le schéma ci-dessous illustre l’examen approfondie des dynamiques des systèmes montrant pourquoi les choses sont allées plus lentement à long terme et pourquoi le tout premier Word pour Windows a été livré des années en retard par rapport à la date souhaitée...&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-19-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dynamiques avancées de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Naturellement, avoir une grande quantité de code de mauvaise qualité ralentit les choses. De manière beaucoup plus subtile, les développeurs ont &#039;&#039;ignoré&#039;&#039; la liste croissante d’anomalies pour privilégier la production de nouvelles features. Cela a eu pour conséquence d’avoir un délai important entre la déclaration d’une anomalie et sa correction. Il s’avère que cela a fait augmenter de manière significative la variabilité et le temps nécessaire pour corriger une anomalie en raison des effets cumulatifs négatifs liés à la nature même d’une vieille anomalie (par exemple avec la mise en place des solutions de contournement et des couplages existants entre les fonctionnalités), de l’oubli du contexte détaillé par les développeurs en relation avec l’anomalie, ces derniers mettant par conséquent plus de temps à le redécouvrir, de l’accumulation continue de code de mauvaise qualité dans le même temps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le lecteur avisé remarquera également plusieurs boucles causales positives renforçant le cycle de dégradation ; il s’agit de l’une des raisons expliquant le retard pris sur plusieurs années pour livrer le produit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une solution ? L’approche lean avec les principes &#039;&#039;Arrêter et corriger&#039;&#039; et &#039;&#039;Aller voir&#039;&#039;. &#039;&#039;Premièrement&#039;&#039;, plutôt que d’essayer d’aller plus vite lorsqu’il y a des problèmes, des managers-formateurs encouragent les gens à aller plus &#039;&#039;lentement&#039;&#039; et à les inciter à apprendre les dynamiques des systèmes, les causes racines et à les corriger pour améliorer le &#039;&#039;système&#039;&#039; du développement. En allant plus lentement, Toyota - les maîtres de l’approche lean - est devenue l’une des entreprises les plus rapides du monde. &#039;&#039;Deuxièmement&#039;&#039;, les managers doivent &#039;&#039;aller voir ce qui se passe sur le vrai lieu de travail&#039;&#039; pour apprendre ce qu’il se passe. Le &#039;&#039;vrai lieu&#039;&#039; dans le développement logiciel c’est le code, ce qui implique que les managers de proximité sont des développeurs expérimentés qui évalueront le code fréquemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les personnes de chez Microsoft n’ont réfléchi sur la situation que bien après la livraison. Lorsqu’ils ont fini par faire une rétrospective, cela a amené à une politique du &#039;&#039;zéro défaut&#039;&#039;, cela signifie que la première priorité était de corriger les anomalies connues dans le code en cours de développement afin d’aller vers du zéro anomalie ouverte dans la liste des anomalies avant d’écrire du code pour une nouvelle feature.&lt;br /&gt;
&lt;br /&gt;
== Voir (et entendre) l’optimisation locale ==&lt;br /&gt;
&amp;quot;Chacun fait de son mieux, mais malgré tout le flux de production du système se dégrade. Comment cela est-il possible ?&amp;quot;. Il s’agit du paradoxe de &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit c’est lorsqu’une personne à titre individuel ou qu&#039;un responsable de département prend une décision d’un point de vue local ou dans son propre intérêt. Les personnes prenant ce type de décision &#039;&#039;croient fréquemment qu’ils prennent la meilleure décision&#039;&#039;, mais parce que ‘meilleure’ est ici synonyme d’optimisation locale, cela a pour résultat une sous-optimisation globale du flux du système. Ceci est le résultat d’une &amp;quot;mentalité de silo&amp;quot;, d’incompréhension, de peur, de restrictions d’informations, de feedbacks à retardement, d’ignorance, de carriérisme, d’avarice et de bien d’autres &#039;&#039;dysfonctionnements d’apprentissages organisationnels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une petite équipe produit de 30 personnes n’a ni le temps ni l’argent pour s’engager dans ce genre de non-sens ou de gâchis. Mais les grandes entreprises avec de grands groupes produit, des processus centralisés et des groupes outils, un &amp;quot;bureau de gestion de projet&amp;quot; centralisé, et ainsi de suite, semblent avoir élevé l’optimisation locale et le gâchis à une forme d’art. Les bureaucraties gouvernementales en sont bien sûr la quintessence. En conséquence, lorsque vous servez de guide dans une adoption agile à grande échelle, &#039;&#039;voir&#039;&#039; (ou &#039;&#039;entendre&#039;&#039;) et s’occuper de l’optimisation locale est tout simplement quelque chose de vital.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par exemple, les départements juridiques et sécurité mettent en place des politiques qui leurs semblent très importantes de leurs points de vue. Dans l’objectif de prévenir la perte de propriété intellectuelle, le département juridique peut décréter &amp;quot;il est interdit d’afficher tout type d’information sur les murs&amp;quot;. Or, le département de la logistique, soumis de son côté à une pression de politique de réductions des coûts peut surenchérir en disant : &amp;quot;Il est important de s’assurer que nos murs ne soient ni sales ni abîmés&amp;quot;. Et ainsi s’arrête le management visuel qui est l’une des pratiques de l’approche lean (le management visuel se faisant habituellement sur les murs), et ils inhibent également une pratique d’innovation bien connue à savoir le travail de groupe devant un tableau blanc. Les juristes réussiront peut être à réduire la perte de propriété intellectuelle (ce qui en réalité devrait poser question), et les gens de la logistique réussiront à garder leurs murs propres, mais au prix d’inhiber le groupe de développement produit dans sa capacité d’innover et de collaborer. Finalement, l’entreprise se laissera distancer par la concurrence avec de moins en moins de propriété intellectuelle valant la peine d’être défendue parce que les outils permettant l’innovation et de livrer rapidement ont été bannis, mais les juristes auront rempli leur mandat vis-à-vis de la direction pour &amp;quot;s’assurer que la propriété intellectuelle est protégée&amp;quot;. Et la police de la logistique aura nettoyé les murs. &#039;&#039;Ils ont fait de leur mieux&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce qui suit est extrait d’un vrai mail de la &#039;&#039;POLICE DE LA LOGISTIQUE&#039;&#039; dans une organisation qui a banni le management visuel sur les murs. Pouvez-vous identifier les optimisations locales et les modèles mentaux qui sont derrière tout ça ?&lt;br /&gt;
&lt;br /&gt;
 Les [https://fr.wikipedia.org/wiki/Bureau_%C3%A0_cloisons bureaux à cloisons] peuvent être personnalisés. Mais tout ce qui est visible au-dessus de la cloison ou qui perturbe l’harmonie de l’environnement de bureau est interdit.&lt;br /&gt;
&lt;br /&gt;
Nous constatons aussi des optimisations locales dans les groupes centralisés dont le rôle est de choisir les logiciels pour les autres personnes de l’entreprise. La croyance la plus répandue relative à cette démarche est qu’il s’agit de ce qu’il y a de mieux pour réduire les coûts d’achats (curieusement ces mêmes groupes recommandent rarement les logiciels open source gratuits) ou ce qu’il y a de mieux pour accomplir une tâche compliquée ou ce qu’il y a de mieux pour l’accomplissement du travail d’un seul type de travailleur (même si &#039;&#039;tout le monde&#039;&#039; est censé devoir utiliser l’outil), plutôt que de maximiser l’objectif de l’entreprise qui est d’avoir un système de flux de production de la valeur plus rapide pour les clients.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans les adoptions de Scrum ou des principes agiles à grande échelle, la plupart des problématiques de type &amp;quot;Oui, mais...&amp;quot; qui sont soulevées sont des exemples de sous-optimisations, comme par exemple &amp;quot;&#039;&#039;Oui, mais... qu’en est-il des comptes-rendus auprès du management&#039;&#039; ?&amp;quot; ou encore de manière plus générale &amp;quot;* Oui, mais … qu’en est-il de... * ?&amp;quot;. Alors, les principes et les pratiques sont dévoyés, pour servir soit l’objectif de rendre compte, soit n’importe quel autre objectif secondaire plutôt que suivre l’objectif d’optimiser le flux de valeur produite. De temps en temps, nous voyons des &#039;&#039;&#039;optimisations locales dans certains cas rares ou extrêmes&#039;&#039;&#039;. Par exemple, une entreprise doit choisir un outil centralisé répondant à un certain nombre de cas d’utilisations possibles dont un cas extrêmement rare ou complexe, la personne, en charge de faire ce choix, choisit un outil correspondant à un cas unique d’utilisation, sous-optimisant ainsi l’ensemble du système pour un cas représentant uniquement 5% des cas d’utilisation au lieu de l’optimiser pour la majorité des 95% des autres cas d’utilisations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
D’autres optimisations locales sont dues, quant à elles, à l’ignorance des nouvelles manières de travailler. C’est quelque chose de très répandue et tout spécialement dans les groupes produit à grande échelle. Par exemple, un jour nous avons aidé un groupe produit distribué à travers l’Europe à adopter d’une part Scrum et d’autre part la pratique de &#039;&#039;l’intégration continue&#039;&#039; le tout sous la forme d’un système d’intégration continue dédié intégrant, compilant, testant automatiquement de manière continue le produit. Après quelques temps, un manager, que l’on pourrait qualifier de traditionnel, extérieur au groupe est venu inspecter ce qu’il se passait. Celui-ci a recommandé que les pratiques d’intégration devraient être changées en raison de l’absence de schéma d’intégration global permettant à un responsable d’intégration de faire manuellement l’intégration de l’ensemble du logiciel ; une absence de schéma pour la bonne raison qu’il n’y avait plus besoin de responsable d’intégration au sein de l’organisation. Il voulait ‘optimiser’ le travail d’un responsable d’intégration qui n’existait plus. Il était dans l’impossibilité de voir que la totalité de l’ancienne manière de faire les choses avait disparu avec l’intégration continue. Cette histoire se répéta dans l’ensemble des départements du groupe produit : il y a avait des optimisations locales partout autour des façons de faire existantes, tels que les tests manuels, le département d’architecture séparé des équipes, les équipes composants, etc. N’importe quel coach dont la tâche consistait à introduire Scrum à grande échelle au niveau de l’organisation avait une &#039;&#039;montagne&#039;&#039; d’optimisations locales à penser à gérer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans l’approche lean et dans les méthodes agiles, l’accent est mis sur les objectifs du système dans sa globalité : livrer de la valeur de grande qualité au plus vite tout en gardant le moral des équipes au plus haut - autrement dit une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039;. Essayer de reconsidérer vos décisions à la lumière de cet objectif. Pour développer une culture de &amp;quot; l’optimisation globale&amp;quot;, remettez donc en cause toutes les décisions et les règles avec la question suivante :&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Est-ce que cette décision ou cette règle se focalise sur le fait de livrer de la valeur au client externe au plus vite, ou se focalise-t-elle sur les intérêts d’un département, d’une personne, d’une pratique/règle interne, ou d’un cas rarissime ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans LeSS, le Product Owner est responsable pour choisir ces objectifs à haute valeur qui &#039;&#039;&#039;pourrait mener à un produit potentiellement livrable (à la fin du Sprint) maximisant les impacts souhaités et enchantant le client tout en maintenant un rythme soutenable et une haute qualité d’ingénierie&#039;&#039;&#039;. Cet objectif explicite est destiné à orienter le système vers son optimisation globale plutôt que vers une optimisation qui ne serait que locale.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
En plus de devenir un pratiquant de l’approche systémique vous-même, encouragez donc les autres à en apprendre plus sur ce sujet. Nous vous suggérons d’essayer de rassembler quelques-uns de vos collègues autour d’un tableau blanc et d’y dessiner des diagrammes de boucles causales, afin que les architectes des systèmes et les pratiquants de l’approche systémique soient réunis en un seul endroit.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Xgroup-cld-modeling.jpg|848px|border|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Séance d’approche systémique. Réalisation d’un diagramme de boucles causales à plusieurs mains dans l’objectif d’avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lectures recommandées ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.amazon.fr/Hors-crise-W-Edwards-Deming/dp/2717843930/ &#039;&#039;Hors de la Crise&#039;&#039;] de W. Edwards Deming est un ouvrage de référence, sans conteste le plus connu des penseurs systémiques et des experts sur la qualité. Cet ouvrage commence par un objectif modeste : &amp;quot;l’objectif de ce livre est la transformation du style du management américain... ce qui exige de tout changer pour mettre en place une toute nouvelle structure.&amp;quot; Deming prône un &#039;&#039;Système de connaissances approfondies&#039;&#039; dans lequel les managers (1) reconnaissent qu’il y a un &#039;&#039;système&#039;&#039;, (2) qu’ils sont en mesure de comprendre les facteurs les plus répandus et les facteurs spéciaux de variations au sein du système (la théorie des files d’attente est liée à ce phénomène de variation), (3) qu’ils sont en mesure de comprendre que les connaissances sont limitées et qu’il y a des erreurs de raisonnement, et (4) que la psychologie et les recherches en sciences sociales jouent des rôles tout à fait crédibles dans l’objectif de comprendre que les règles régissant les comportements ou en lien avec la motivation des individus ne soient pas basés sur le seul &amp;quot;bon sens&amp;quot;. Le coeur de l’ouvrage tourne autour des célèbres [[Les_14_points_de_Deming|&#039;&#039;14 points pour le management&#039;&#039;]], y compris par exemple &amp;quot;&#039;&#039;Éliminer le management par les objectifs. Éliminer le management par les nombres, par les objectifs par les nombres. Y substituer le leadership&#039;&#039;.&amp;quot;&lt;br /&gt;
* [https://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ &#039;&#039;Industrial Dynamics&#039;&#039;] de Jay Forrester est un classique du genre sur les dynamiques des systèmes, très bien écrit et très instructif. Même si cet ouvrage a été écrit au début des années 1960, il est toujours aussi pertinent aujourd’hui. Il va au-delà de la modélisation des causes à effets pour modéliser également le flux et les stocks d’informations, d’argent et de matériaux au sein d’un système. Le livre contient également une modélisation mathématique formelle de ces dynamiques, toutefois la lecture de cette dernière reste facultative pour apprécier la qualité de l’ouvrage.&lt;br /&gt;
* Les ouvrages [https://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039;] et [https://www.amazon.fr/Introduction-General-Systems-Thinking-Weinberg/dp/0932633498/ &#039;&#039;An Introduction to General Systems Thinking&#039;&#039;] de Gerald Weinberg sont intéressants. Il sont écrits du point de vue d’un consultant expérimenté en développement de systèmes.&lt;br /&gt;
* [https://www.amazon.fr/cinqui%C3%A8me-discipline-Levier-organisations-apprenantes/dp/2212559372/ &#039;&#039;La cinquième discipline&#039;&#039;] est un autre classique du genre qui prône que l’encadrement d’une entreprise devrait appliquer l’approche systémique (autrement dit la &#039;&#039;cinquième&#039;&#039; discipline) ainsi que d’autres disciplines-clés toutes aussi importantes en vue d’obtenir une entreprise durable. Ces autres disciplines que les dirigeants devraient appliquer sont (1) une discipline personnelle, (2) une réflexion sur leurs propres croyances et raisonnements erronés, (3) la définition et la communication d’une vision partagée ayant du sens, et (4) la capacité des équipes à apprendre. Nous vous recommandons d’ignorer - du moins dans un premier temps pendant vos premières années de pratiques - le concept d’archétypes présenté dans le livre. Ce concept avait pour but d’être une aide à l’apprentissage de la cinquième discipline mais nous avons observé qu’il était soit une source de distraction soit qu’il intimidait les lecteurs quant à leur apprentissage et à l’application de la modélisation basique&amp;lt;ref&amp;gt; ‘Basique’ ne signifie pas trivial ou facile à résoudre. Par exemple, les problématiques de &#039;motivation&#039; et de &#039;qualité&#039; sont des problématiques basiques mais elles ne sont pas faciles à résoudre.&amp;lt;/ref&amp;gt;de dynamiques des systèmes. Les ‘archétypes’ ne font pas partie à l’origine des dynamiques des systèmes.&lt;br /&gt;
*[https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ &#039;&#039;La 5ème discipline - le guide de l’organisation apprenante&#039;&#039;] est une source extrêmement riche sur l’approche systémique écrite du point de vue des pratiquants de cette approche et de consultants.&lt;br /&gt;
* Les écrits d’Argyris, Outnam, McLain et Schön sur les apprentissages organisationnels comme [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] et [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ &#039;&#039;Organizational Learning&#039;&#039;] abordent des concepts importants tels que la &#039;&#039;double-boucle apprenante&#039;&#039; et le &#039;&#039;dialogue grand-plaidoyer/grand-réquisitoire&#039;&#039;.&lt;br /&gt;
* Les publications et les ressources de la &#039;&#039;Society for Organizational Learning&#039;&#039;](https://www.solonline.org/).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14285</id>
		<title>LeSS - Approche systémique</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14285"/>
		<updated>2020-11-01T19:13:08Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br/&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/principles/systems-thinking.html Systems Thinking]&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux [[Fichier:Nime.png|50px|link=https://twitter.com/__nime__]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Relecteurs : Christophe Gesché, Fabrice Aimetti&amp;lt;br/&amp;gt;&lt;br /&gt;
Date : 27/10/2020&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traduction :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[LeSS - Portail Principes]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Approche systémique ==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;J’ai pris un cours de lecture rapide puis j’ai lu « Guerre et Paix » en vingt minutes. Cela parle de la Russie. — Woody Allen&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Quoi que nous fassions, le nombre d’anomalie dans notre &#039;&#039;backlog&#039;&#039; reste identique.&amp;quot; nous a dit un jour un manager en évoquant un produit de près de 15 millions de lignes de code écrites en C et C++ et sur lequel plusieurs centaines de développeurs étaient en train de travailler. Que pouvait-il bien se passer ? L’approche systémique peut s’avérer utile dans ce cas. En petits groupes, les forces en présence peuvent rapidement être identifiées et comprises de manière informelle, mais dans le cadre du développement d’un gros produit ou de n’importe quel gros système, c’est difficile. Gerry Weinberg met en avant deux facteurs décisifs dans ce genre de situation :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Loi de Weinberg-Brooks&#039;&#039;&#039; : De plus en plus de projets informatiques sont partis de travers après que le management ait pris des décisions basées sur des &#039;&#039;&#039;modèles systémiques incorrects&#039;&#039;&#039; plus que pour toutes autres combinaisons de causes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Erreur de causalité&#039;&#039;&#039; : Chaque effet a une cause... et nous pouvons dire desquelles il s’agit. [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226 [Weinberg92]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces deux facteurs reflètent bien l’impact de nos &#039;&#039;&#039;modèles mentaux&#039;&#039;&#039; sur le système, un sujet que nous reverrons plus tard dans cette partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les problèmes résultant de nos modèles mentaux et de nos postulats sont un point à traiter. Un autre point est l’adoption à grande échelle de Scrum, de l’approche lean et des principes agiles en dehors du domaine du développement. Ce point est aussi présent dans la gestion de produit, les budgets, les tests, la commercialisation, la gouvernance et la politique RH. En conséquence, dans les adoptions agiles à grande échelle, il est utile de se réunir avec des collègues et de &#039;&#039;réfléchir en profondeur&#039;&#039; sur les modèles mentaux, les relations causales, les boucles de feedback et les mécanismes (ou les illusions) de contrôle dans un gros système qui va être sérieusement &#039;&#039;perturbé&#039;&#039;. L’approche systémique est l’un de ces outils de réflexion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En 1958 la &#039;&#039;Harvard Business Review&#039;&#039; a publié un article de Jay Forrestor, professeur à la MIT Sloan School, qui a fait date [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers”]. Cet article a lancé le mouvement de l’approche systémique dans le domaine des formations en gestion d’entreprise et la MIT Sloan School of Management devint célèbre pour ses formations en &#039;&#039;&#039;dynamique des systèmes&#039;&#039;&#039;. Le terme de dynamique des systèmes est parfois utilisé comme synonyme de l&#039;&#039;&#039;&#039;approche systémique&#039;&#039;&#039;, même si ce dernier est un terme beaucoup plus général.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le MIT a également attiré d’autres chercheurs intéressés par la dynamique systémique tel que Peter Senge&amp;lt;ref&amp;gt;&#039;&#039;La cinquième discipline&#039;&#039; écrit par Senge sur l’approche systémique et les organisations apprenantes a été nommé &amp;quot;l’un des livres les plus novateurs sur le management de ces 75 dernières années&amp;quot; par la &#039;&#039;Harvard Business Review.&#039;&#039; [Senge94].&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En corrélation avec la loi de &#039;&#039;Weinberg-Brook&#039;&#039;, Jay Wright Forrester a montré que les décideurs à qui il avait été donné des modèles dynamiques de systèmes opérationnels et à qui il avait été demandé d’améliorer la performance opérationnelle, &#039;&#039;n’avaient fait généralement qu’empirer les choses&#039;&#039; [https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ [SKRRS94]]. Il en est ressorti d’ailleurs que la plupart des personnes évaluaient mal la manière dont il faut améliorer les systèmes, et appliquaient généralement leur &amp;quot;bon sens&amp;quot;, en mettant en place des solutions de contournement qui n’apportent aucune amélioration systémique à long terme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pourquoi le comportement d’un groupe de développement de grande taille (autrement dit un système) n’est-il pas compris ou guidé de manière compétente ? La réponse réside, en partie, dans le comportement des systèmes stochastiques avec les files et les variabilités comme nous avons pu l’évoquer avec le principe LeSS de la [https://less.works/less/principles/queueing_theory.html théorie des files d’attentes (en)]. Et c’est la même réponse qui est au coeur de la &#039;&#039;théorie du contrôle&#039;&#039; : la plupart des systèmes d’intérêt - tel qu’un groupe de développement de produit - ont des boucles de feedback positives et négatives ainsi qu’un comportement non linéaire. Le comportement de ces systèmes défient nos intuitions les plus profondes. Et puis il y a la question secondaire des &#039;&#039;gens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé, les raisons expliquants l’incompétence à maîtriser ou à guider un gros système sont (liste non exhaustive) :&lt;br /&gt;
&lt;br /&gt;
* le manque de connaissance des dynamiques des systèmes, des boucles de feedback, du comportement non linéaire des systèmes, et des conséquences inattendues dans les systèmes sur le lieu de travail.&lt;br /&gt;
* la mauvaise compréhension des causes racines des problèmes (et de comment les trouver)&lt;br /&gt;
** &#039;&#039;les causes&#039;&#039;, pas &#039;&#039;la cause&#039;&#039; ; en approche systémique, nous savons que les causes des problèmes sont multiples, indirectes et dynamiques&lt;br /&gt;
* l’incapacité à savoir si ou pourquoi une solution de contournement ou une décision locale dégrade la performance globale opérationnelle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour résumé, nous n&#039;utilisons pas l’approche systémique&amp;lt;ref&amp;gt;Une autre raison : croire que plus de contrôle est possible qu’il ne l’est en réalité. La science de la complexité suggère qu’il existe des limites en termes de prédiction et de contrôle des systèmes sociaux semi-chaotiques [Stacey07]. C’est une énorme boîte de Pandore qui restera close dans ce livre.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces raisons sont la conséquence de l’intersection du management et de l’adoption à grande échelle des principes lean et agile. L’équipe de direction fait partie du système qui est perturbé ; si elle n’applique pas l’approche systémique, elle pourrait &#039;&#039;vraiment&#039;&#039; le perturber - et pas de la bonne manière !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les points-clés à retenir de l’approche systémique peuvent être résumé dans les [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 &#039;lois&#039;] décrites dans la [https://www.amazon.fr/cinqui%C3%A8me-discipline-organisations-apprenantes-dexemplaires-ebook/dp/B017WSYAHG Cinquième Discipline] :&lt;br /&gt;
* Les problèmes d’aujourd’hui viennent des &#039;solutions&#039; d’hier.&lt;br /&gt;
* Plus vous poussez, plus le système pousse en retour.&lt;br /&gt;
* Le comportement va d’abord empirer avant de s’améliorer.&lt;br /&gt;
* La manière la plus facile de s’en sortir conduit souvent à faire quelques pas en arrière.&lt;br /&gt;
* Le médicament peut être pire que la maladie.&lt;br /&gt;
* Aller plus vite c’est aller plus lentement.&lt;br /&gt;
* Les causes et les effets ne sont pas étroitement liés dans l’espace et le temps.&lt;br /&gt;
* De petits changements peuvent produire de gros résultats... mais les zones où l’effet de levier est le plus important sont souvent les moins évidentes.&lt;br /&gt;
* Vous pouvez avoir votre gâteau et le manger aussi... mais pas en une seule bouchée.&lt;br /&gt;
* Couper un éléphant en deux ne produit pas deux petits éléphants.&lt;br /&gt;
* Il n’y a aucun reproche à faire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La devise de Toyota en interne est [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html &amp;quot;Bien &#039;&#039;&#039;réfléchir&#039;&#039;&#039; permet d&#039;avoir de bons produits&amp;quot;]. L’approche systémique est un ensemble d’outils de réflexion pour aider à :&lt;br /&gt;
* &#039;&#039;&#039;voir les dynamiques des systèmes&#039;&#039;&#039; : une organisation de développement est un système de personnes et de règles avec de subtiles boucles de feedback et des conséquences inattendues&lt;br /&gt;
** nous pouvons apprendre à voir et ainsi à améliorer le système avec des &#039;&#039;&#039;diagrammes de boucles causales&#039;&#039;&#039; réalisés lors d’un atelier&lt;br /&gt;
* &#039;&#039;&#039;percevoir les modèles mentaux&#039;&#039;&#039; : parmi les raisons derrière des décisions sous-optimales se trouvent des hypothèses erronées et des raisonnements incorrects&lt;br /&gt;
** les diagrammes de boucles causales et les cinq pourquoi permettent de révéler cela&lt;br /&gt;
* &#039;&#039;&#039;voir les optimisations locales&#039;&#039;&#039; : une autre source de décisions sous-optimales est &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit prendre la &amp;quot;meilleure&amp;quot; décision du point de vue d’une personne ou d’un département, au détriment d’une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039; qui est l’objectif au niveau système &#039;&#039;lean&#039;&#039; et qui consiste à pouvoir &#039;&#039;livrer la plus grande valeur possible de très grande qualité avec un moral d’acier.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette présentation de l’approche systémique est faite autour des domaines suivants : apprendre à voir (1) &#039;&#039;les dynamiques des systèmes&#039;&#039;, (2) &#039;&#039;les modèles mentaux&#039;&#039;, (3) &#039;&#039;les causes racines&#039;&#039;, et (4) &#039;&#039;l’optimisation locale&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Complexité statique versus complexité dynamique ===&lt;br /&gt;
&lt;br /&gt;
La plupart d’entre nous, notamment les ingénieurs et les financiers, ont été formés pour maîtriser la &#039;&#039;&#039;complexité de détails statiques&#039;&#039;&#039;, en apprenant à analyser et à gérer l’information (exigences, analyses financières, ...), à décomposer des structures complexes en structures simples, et ainsi de suite. C’est-à-dire, la complexité d’une information qui est par nature structurellement statique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pourquoi les gros systèmes informatiques ont-ils tendance à se dégrader malgré de plus en plus de temps passé sur les anomalies ? Qu’est-ce qui pourrait bien se passer si les États-Unis d’Amérique envahissait l’Irak ? Voir les dynamiques derrière ces questions implique d’analyser la &#039;&#039;&#039;complexité des dynamiques&#039;&#039;&#039; en jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au contraire d&#039;une formation sur les détails statiques que la plupart d’entre nous avons suivie, peu d’entre nous ont reçu de formation sur l’étude des systèmes dynamiques et complexes&amp;lt;ref&amp;gt;Macro économie, psychologie, sociologie et biologie sont des exceptions parmi tant d’autres.&amp;lt;/ref&amp;gt; et notamment dans le milieu professionnel. Peut-être parce que nous avons la croyance qu’il est suffisant de s’appuyer sur le bon sens en milieu professionnel. Jay Wright Forrester a démontré que le &amp;quot;bon sens&amp;quot; n’est pas suffisant dans des systèmes complexes et qu’il est possible de former des personnes pour leur permettre de mieux appréhender les &#039;&#039;&#039;modèles de dynamique des systèmes&#039;&#039;&#039; en milieu professionnel en utilisant notamment des &#039;&#039;diagrammes de flux&#039;&#039; [http://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de flux peuvent s’appliquer aussi bien aux flux matériels, financiers, d’informations, de stocks (n’importe quel type de stock quantitatif comme de l’argent ou des anomalies), aux conséquences des décisions et des politiques et des relations de causes à effet. Lorsque nous pensons aux diagrammes de flux, nous pensons souvent au seul &#039;&#039;diagramme de boucle causale&#039;&#039; dédié aux relations de cause à effets et aux boucles de rétroaction dans un système [http://www.amazon.fr/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. Il existe une grande variété d’autres diagrammes qui peuvent faire figurer les stocks (quels qu’ils soient), les liens de causalité, et les retards. Dans son ouvrage, [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ [Weinberg92]] Gerald Weinberg appelle cela un &#039;&#039;diagramme d’effet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La première loi de la réalisation d’un diagramme : nous modélisons pour avoir une conversation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un outil très utile pour apprendre les dynamiques des systèmes est le diagramme de boucles causales : nous vous recommandons de l’utiliser sur un tableau blanc notamment lors des Rétrospectives Globales LeSS avec les collègues. Mais avant d’aller plus loin, voici la &#039;&#039;première loi de réalisation d’un diagramme&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;La première valeur d’un diagramme c’est la discussion qui se déroule lors de la réalisation du diagramme : nous modélisons pour avoir une conversation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un groupe se rassemble pour dessiner un diagramme de boucles causales sur un tableau blanc (&amp;quot;C’est l’acte de discuter et de réfléchir qui est le plus important lorsque nous dessinons&amp;quot;, Valtech India.), la première valeur d’un diagramme c’est la conversation et la compréhension commune à laquelle les personnes arrivent lors de la création du modèle. Ce qu’il en résulte, à savoir un diagramme facile à comprendre, est important pour rendre les idées et les modèles mentaux concrets et non ambigües (sur le tableau blanc) parce que les mots seuls peuvent être imprécis et mal compris. Toutefois, le diagramme est secondaire par rapport à ce avec quoi les gens repartent : ils ont appris quelque chose et ont revu leur compréhension du monde à travers une discussion.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Xgroup-cld-modeling.jpg|848px|border|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs -  modéliser pour avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Trucs et astuces de pro pour modéliser&#039;&#039; : nous commençons par écrire sur des petits post-its les noms des &#039;&#039;variables&#039;&#039;, par exemple &amp;quot;vélocité des &#039;&#039;features&#039;&#039;&amp;quot; ou &amp;quot;nombre d’anomalies&amp;quot;. Nous les plaçons ensuite sur le tableau blanc. Puis nous dessinons les liens de causalités entre les post-its. Il y aura (ou il devrait y avoir) beaucoup de réécriture, d’effaçage, de redessin lors de la session de modélisation. Le résultat le plus important d’une telle session est la &#039;&#039;compréhension&#039;&#039; : il se peut qu’à l’issue de cet atelier, certains participants voudront prendre une photo du dessin du tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : les diagrammes de boucles causales ==&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales sont souvent utilisés en introduction à LeSS pour aider à voir les dynamiques de ce qu’il se passe lors du développement à grande échelle. Il est donc utile de comprendre ce type de diagrammes pour cette seule et unique raison. Et cela s’avèrera encore plus utile pour vous, si vous le faites avec vos collègues devant un tableau blanc. Vous modélisez pour avoir une conversation. Quand ? Plus probablement lors d’une rétrospective globale LeSS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L’aspect pratique de cet exercice est bien plus important que ce qu’il peut paraître au premier abord. Notre conseil d’&amp;quot;être un pratiquant systémique&amp;quot; peut vous sembler vague et sans grand impact. Mais si vous et quatre de vos collègues prenez l’habitude de vous réunir devant un grand tableau blanc, en dessinant des diagrammes de boucles causales ensemble, alors vous arriverez à faire la connexion entre &amp;quot;&#039;&#039;être&#039;&#039; un pratiquant systémique&amp;quot; avec &amp;quot;&#039;&#039;faire&#039;&#039; de l’approche systémique&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les exemples suivants peuvent paraître aseptisés car présentés dans un livre. Mais imaginez-vous à côté d’un tableau blanc avec d’autres personnes dessinant ensemble des diagrammes au cours d’une conversation animée. C’est de cette manière-là que nous suggérons de &#039;faire&#039; de l’approche systémique.&lt;br /&gt;
&lt;br /&gt;
=== Notation et exemples ===&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales contiennent beaucoup d’éléments ; les éléments suivants sont les plus communément utilisés et sont vus en détail tout au long du scénario qui va suivre :&lt;br /&gt;
* variables&lt;br /&gt;
* liens de causalité&lt;br /&gt;
* effets opposés&lt;br /&gt;
* contraintes&lt;br /&gt;
* objectifs&lt;br /&gt;
* réactions ; solutions de contournement&lt;br /&gt;
* effets d’interaction&lt;br /&gt;
* effets extrêmes&lt;br /&gt;
* retards&lt;br /&gt;
* boucles de feedback positives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le scénario qui suit est un scénario simplifié pour une organisation spécifique. Il ne s’agit pas d’une généralisation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Les variables====&lt;br /&gt;
Les diagrammes de boucles causales comportent des &#039;&#039;variables&#039;&#039; (ou des stocks) telle que la &#039;&#039;vélocité (taux de livraison) des features logicielles&#039;&#039; et le &#039;&#039;nombre d’anomalies&#039;&#039;. Les variables ont une quantité mesurable.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-4-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Les liens de causalité====&lt;br /&gt;
Un élément peut avoir un effet sur un autre, par exemple si la vélocité des &#039;&#039;features&#039;&#039; augmente alors le nombre d’anomalies augmente ; autrement dit, plus de code, plus d’anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-5-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est temps désormais de se jeter à corps perdu dans la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; et dans la &#039;&#039;causalité fallacieuse&#039;&#039;. Il est facile de dessiner un diagramme, ça l’est moins de modéliser en faisant preuve de clairvoyance comme par exemple, la relation entre le &#039;&#039;nombre de développeurs&#039;&#039; et la &#039;&#039;vélocité des features&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toute relation de cause à effets est par nature obscure, même si les gens ont l’habitude de sauter sur la première conclusion venue comme par exemple plus de développeurs égale plus de vélocité. Ajouter des personnes tard au cours du développement peut &#039;&#039;réduire&#039;&#039; la vélocité (il s’agit d’une composante de la &amp;quot;loi de Brooks&amp;quot; [Brooks95]). Ou, &#039;&#039;davantage&#039;&#039; de mauvais développeurs pourrait vraiment vous ralentir. Il pourrait être objecté qu’&#039;&#039;enlever&#039;&#039; des développeurs exécrables peut permettre &#039;&#039;d’améliorer&#039;&#039; la vélocité.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-6-fr.png|link=|848px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Effets opposés====&lt;br /&gt;
L’effet d’un lien de causalité peut aller dans la même direction ou dans la direction opposée. Si A augmente alors B augmente, ou vice versa. L’effet opposé se souligne à l’aide d’un ‘O’ sur la ligne. Supposons que les anomalies ralentissent grandement le système, réduisant la vélocité des nouvelles features parce que les gens passent davantage de temps à corriger ou à trouver des solutions de contournement aux anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-7-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Contraintes====&lt;br /&gt;
À moins que vous ne trouviez des personnes prêtent à travailler gratuitement, il y a une contrainte sur le nombre de développeurs basé sur le budget disponible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les contraintes ne sont &#039;&#039;pas&#039;&#039; des liens de causalité. Lorsque le montant du budget disponible augmente, ce n’est pas le cas du nombre de développeurs.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-8-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Buts et réactions====&lt;br /&gt;
Les personnes, les départements et les systèmes ont des buts, comme par exemple avoir une &#039;&#039;vélocité des features plus élevée&#039;&#039;. Les buts occasionnent souvent de la pression pour que les gens réagissent (ou agissent) dans l’intention de leur faire atteindre ce but. Mais étant donné qu’il y a la &#039;&#039;causalité fallacieuse&#039;&#039; et la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; à laquelle il faut faire face, les gens devraient être prudents quant aux actions pertinentes à entreprendre. Voici un exemple de diagramme modélisant cela :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-9-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
Non seulement un but à atteindre avec une &#039;&#039;récompense&#039;&#039; au bout engendre une pression à agir, mais cela créé aussi une pression à &#039;&#039;faire semblant&#039;&#039; d’agir et à atteindre le but : les récompenses provoquent un &#039;&#039;&#039;dysfonctionnement des indicateurs&#039;&#039;&#039;. Le dysfonctionnement des indicateurs peut être proportionnel à la valeur perçue de la récompense parce que les personnes sont motivées pour avoir la récompense, non pour améliorer le système [http://www.amazon.fr/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ [Austin96]]. Remarquez bien comment et de quelle manière les récompenses peuvent dégrader la performance du système. De manière visuelle, les dynamiques d’un tel système pourrait être...&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-10-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
Il est assez intéressant de voir que toutes ces dynamiques ont été ajoutées par l’introduction d’une récompense et qu’il n’y pas de connexion entre le haut et le bas de cette modélisation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il n’y a aucune garantie que la vélocité des features s’améliore ou même que l’on y travaille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enlever le système de récompense est une solution à la cause racine de ce dysfonctionnement. Une autre contremesure de surface est le principe et le comportement managériale &#039;&#039;Aller voir&#039;&#039; (aller voir physiquement sur le lieu où le travail s’effectue) de l’approche lean :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-11-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Solutions de contournement====&lt;br /&gt;
Une solution payante à long terme pour atteindre une vélocité plus grande, mais qui n’est pas sans difficulté, consiste à : recruter des développeurs très qualifiés, faire davantage d’accompagnements et de formations, et à se séparer des moins bons éléments. L’alternative est ce que l’on appelle une &#039;&#039;solution de contournement&#039;&#039;, c’est ce que l’on met en place dans l’espoir d’atteindre l’objectif en moins de temps et avec moins d’effort. Parfois, une solution de contournement se révèle payante aussi bien sur le court terme que sur le long terme, renforçant par la-même le système. D’autres fois cela ne fonctionne pas... d’où l’expression &amp;quot;aller plus vite c’est aller plus lentement&amp;quot;. Par exemple, les gens peuvent &#039;&#039;croire&#039;&#039; qu’augmenter le nombre de développeurs permet d’augmenter la vélocité des features. Et ils peuvent par conséquent être amenés à espérer qu’en recrutant davantage de développeurs cela permettra de résoudre plus vite et plus facilement le problème de vélocité. La mention &#039;SC&#039; sur le diagramme ci-dessous indique une solution de contournement.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-12-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Effets d’interaction====&lt;br /&gt;
La capacité à embaucher est contraint à la capacité budgétaire. Une solution de longue haleine non sans difficulté est d’obtenir davantage de budget. Une solution de contournement possible est de recruter un &#039;&#039;grand&#039;&#039; nombre de développeurs bon marché. Dans ce cas, le niveau du budget a un &#039;&#039;effet d’interaction&#039;&#039; avec les autres boucles causales. Un budget peu élevé aura tendance à renforcer le taux de développeurs bon marché si la pression pour recruter augmente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pourrions dessiner simplement un lien de causalité (opposé) de &#039;&#039;rentrée budgétaire&#039;&#039; à &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;, mais cela voudrait simplement dire qu’avoir un budget moindre aurait pour conséquence de recruter davantage de développeurs bon marché. Mais ce n’est pas tout à fait ce que nous voulons dire ; ce que voulons montrer en fait, c’est l’effet d’interaction, c’est-à-dire qu’un effet A influence un &#039;&#039;effet&#039;&#039; B. Cela se fait en montrant un lien de causalité heurtant un autre lien de causalité, par exemple en traçant une ligne de &#039;&#039;rentrée budgétaire&#039;&#039; vers la ligne représentant la solution de contournement qui va vers &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-13-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
====Effets extrêmes====&lt;br /&gt;
Il nous est arrivé de travailler avec d’excellents développeurs très bon marché et avec d’autres développeurs hors de prix et très nuls, mais en moyenne, vous obtenez à hauteur de ce que vous payez ; lorsque vous recrutez au moins disant, le niveau moyen en terme de compétences sera plus faible. Dans le diagramme ci-dessous, nous avons voulu montrer que l’impact du recrutement de personnes bon marché en rapport avec le &#039;&#039;nombre de développeurs peu qualifiés&#039;&#039; à un impact sensiblement plus grand que la moyenne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour montrer un &#039;&#039;effet extrême&#039;&#039; sur un modèle, faites un trait épais comme vous pouvez voir ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-14-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Retards====&lt;br /&gt;
Un problème courant au niveau du recrutement dans un projet de développement logiciel concerne &#039;&#039;l’erreur au niveau de la variance d’un développeur moyen&#039;&#039; ; autrement dit la croyance fausse que la variance d’un développeur à un autre (en terme de productivité, de qualité de code, etc.) est relativement faible. Toutefois, les études de la variance au sujet des développeurs montrent un rapport de 1 à 4 entre le 1er quartile et le dernier [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. C’est plutôt quelque chose de significatif. De même des études - en long et en large - du modèle COCOMO montrent que la capacité du développement personnel est le facteur de loin le plus important quant à la productivité [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. Et, en moyenne, il s’avère que les développeurs peu qualifiés font du code de mauvaise qualité (mauvaise conception) et de plus d’anomalies, ceci rajoute un autre frein au système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mais l’impact de ces effets ne sont pas visibles immédiatement. Par exemple, cela peut prendre un certain temps après un recrutement massif de développeurs peu qualifiés avant que les impacts négatifs ne se fassent sentir au niveau de la qualité du code ou de la conception. De manière similaire, la &#039;&#039;baisse&#039;&#039; moyenne de la vélocité des features (en raison de l’impact important de la variance des développeurs évoqué plus haut) ne se verra pas immédiatement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour montrer ces &#039;&#039;effets à retardement&#039;&#039; dans le modèle, faites une double-ligne en travers de la ligne d’effet.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-15-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le retard a une influence intéressante sur le pouvoir &#039;&#039;pédagogique&#039;&#039; ou correctif sur un système. Si un impact ou une conséquence inattendue est retardé suffisamment longtemps, personne n’en voit ni l’effet (qu’il soit bénéfique ou néfaste) ni sur la façon dont A influence B ou plus subtilement comment &#039;&#039;A a influencé B qui a influencé A&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par conséquent, personne n’apprend de ses erreurs ni n’est en capacité de les corriger, que ce soit en terme de stratégie, d’actions d’encadrement, d’outils ou de quoi que ce soit. De la même manière, l’amélioration graduelle à travers l’application d’une démarche lean &#039;&#039;kaizen&#039;&#039;, peut prendre un certain temps ; de la patience et de la perspicacité sont nécessaires pour voir si et comment les choses s’améliorent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Boucles de feedback positives====&lt;br /&gt;
Les boucles de feedback négatives ou positives&amp;lt;ref&amp;gt;&#039;&#039;Les boucles de feedback&#039;&#039; sont parfois utilisées dans ce livre dans le sens littéral du terme, plutôt dans le sens des dynamiques des systèmes.&amp;lt;/ref&amp;gt; et les retards sont le point de départ pour une approche plus subtile d’un système, et de sa compréhension. Par exemple, de quelle manière une personne peut-elle devenir un meilleur développeur ? En partie, en bénéficiant du mentorat de très bons développeurs et en jetant un oeil sur du très bon code. Mais il est impossible de trouver du bon code dans un endroit remplit de développeurs médiocres, il est impossible également d’y attirer ou de retenir le petit groupe de très bon développeurs qui pourraient prendre le rôle de mentors. Ils préfèrent largement aller travailler ailleurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce groupe de développeurs médiocres rentrent dans un cercle vicieux en raison d’un ensemble de &#039;&#039;boucles de feedback positives&#039;&#039;. Fort heureusement, ce cercle vicieux est assujetti aux contraintes du budget.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Malheureusement de plus en plus des très bons développeurs, ceux en capacité d’élaborer du très bon code et de faire du mentorat auprès des autres développeurs, partent. Par conséquent, il y a de moins en moins de code de qualité à regarder et à partir duquel il est possible d’en tirer des enseignements. Le pourcentage de développeurs médiocres augmente de plus en plus et la vélocité au niveau des features continue à chuter. Le code devient de plus en plus brouillon, difficile, avec pleins de bouts de code dupliqués à gauche et à droite, le tout de telle manière que la capacité d’implémenter des features décline. Étant donné que la vélocité des features continue de chuter, il y a davantage de pression pour recruter des développeurs très bon marché. Tout cela conduit à de multiples boucles de renforcement positives dans le système comme l’illustre l’exemple ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-16-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Astuce&#039;&#039; : Vous pouvez trouver des boucles de feedback positives en cherchant des cycles ayant un &#039;&#039;nombre pair&#039;&#039; de relations. Vous en trouverez plusieurs exemples ci-dessus.&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Le scénario donné à titre d’exemple est uniquement cela, un exemple. Une diagramme de boucle causale permet de visualiser la richesse de la dynamique dans le système dans un milieu professionnel. La meilleure manière de modéliser un tel système est de le faire en groupe face à un tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Voir les modèles mentaux ==&lt;br /&gt;
Les précédents diagrammes de boucles causales reflètent les modèles mentaux de causalité des individus... qui peuvent s’avérer faux. Il est intéressant de remarquer que les modèles de causalité des individus sont influencés par la ponctualité (ou les retards) et la qualité des feedbacks dans le système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les &amp;quot;modèles mentaux&amp;quot; nous permettent d’améliorer nos compétences de méta-cognition pour voir et questionner nos propres postulats et l’enchaînement de nos raisonnements. Brûlons-nous des étapes de manière erronée ? Cette question implique aussi lorsque nous sommes en train de travailler avec des collègues de discuter avec eux (en s’enquérant plutôt qu’en reprochant) de leurs modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Voir&#039;&#039; les modèles mentaux n’est que la première étape ; les &#039;&#039;changer&#039;&#039; constitue une seconde partie bien plus difficile. Cet art est bien au-delà du sujet de cette introduction, même si une adoption réussie de LeSS implique des changements en terme d’état d’esprit et de prise de conscience au sein de très nombreuses équipes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une astuce pour mieux &#039;&#039;voir&#039;&#039; les modèles mentaux (croyances, échelle d’inférence, ...) en jeu au niveau des dynamiques des systèmes est de poser les questions suivantes lors d’un atelier de modélisation puis de tracer les éléments de réponse au tableau blanc. &amp;quot;Parlons donc des hypothèses derrière ce modèle. Que &#039;&#039;croyons&#039;&#039;-nous ou tenons pour acquis en terme de faits et d’effets qui nous ont conduits ici ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les éléments de réponse sont dessinés sur le tableau blanc. En voici un exemple :&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-17-fr.png|botrder|848px|link=]]&lt;br /&gt;
&#039;&#039;Visualiser les postulats présents dans nos têtes... nos modèles mentaux.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Exemple : La dynamique &amp;quot;Aller plus vite c’est aller plus lentement&amp;quot; ===&lt;br /&gt;
Dorénavant, avec notre vocabulaire enrichi des termes de solutions de contournement, de boucles de feedback positives et de modèles mentaux, il est fascinant de voir qu’il peut y avoir un semblant d’amélioration à court terme sur une variable donnée, mais que cela entraîne en même temps une &#039;&#039;dégradation à retardement&#039;&#039; de cette même variable, d’où la dynamique &amp;quot;Aller plus vite c’est aller plus lentement&amp;quot;. Il s’agit d’une dynamique récurrente et d’une cause de vulnérabilité à terme. Voici un nouvel exemple illustrant cela :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;L&#039;histoire de Microsoft Word et de&#039;&#039; &#039;&#039;&#039;&#039;&#039;la boîte à outils secrète du développeur&#039;&#039;&#039;&#039;&#039; : un exemple typique d’une ‘amélioration’ à court terme mais d’une dynamique de dégradation à long terme est le récit de la première livraison de Microsoft Word sur Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ [Spolsky04]]. Le logiciel a été livré avec des &#039;&#039;années&#039;&#039; de retard par rapport à la date prévue. Pourquoi ? &#039;&#039;Parce que les managers ont essayé à tout prix de suivre le calendrier de départ et ont fait pression sur les développeurs pour le respecter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette histoire illustre pourquoi cet espoir illusoire de respecter une date souhaitée est bien identifié comme une source de gâchis dans l’approche lean. Dans le cas présent l’espoir illusoire consiste à insister (du moins apparemment) à suivre le calendrier, ce qui implique une idée fausse ou illusoire que les estimations ne sont pas de simples estimations mais des promesses, un mythe classique qui pousse à la dégradation d’un système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le modèle qui suit &#039;&#039;résume&#039;&#039; les dynamiques à l’oeuvre lorsque des managers poussent leurs équipes à respecter à tout prix les calendriers prévisionnels, et pourquoi cette solution de contournement qui freine pourtant l’avancement des travaux semblent les faire aller plus vite à court terme mais en réalité &#039;&#039;plus lentement&#039;&#039; à long terme. Par rapport à ce qui est décrit précédemment dans la dynamique de la pression du calendrier et de la boîte à outils secrète, certaines dynamiques ont été omises intentionnellement sur ce schéma et sont visibles sur le schéma des dynamiques avancées.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-18-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dynamique de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En solution de contournement, les managers de Microsoft ont exhorté, ont corrompu (à l’aide de primes potentielles), et ont menacé les développeurs de Word pour leur faire respecter le calendrier prévisionnel. En conséquence, les développeurs ont, de manière tout à fait prévisible, sorti leur &#039;&#039;&#039;boîte à outils secrète de développeurs&#039;&#039;&#039;, autrement dit tout un arsenal de pratiques pour pisser du code pourri (aucuns tests, aucunes revues, ignorance des anomalies connues, développement par copier-coller, mauvaise conception, ...) pour développer visiblement plus vite. Vous voyez bien, les développeurs ont aussi des solutions de contournement pour régler leurs problèmes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vu de l’extérieur, ces tactiques ont fonctionné à merveille. Au fur et à mesure que les managers mettaient la pression sur les développeurs, les ‘features’ étaient développées de plus en plus vite grâce à l’utilisation de la boîte à outils secrète, ce qui a renforcé la croyance en quoi mettre la pression sur les développeurs était quelque chose d’utile. Mais cette apparente accélération a eu en fait un effet à retardement qui a rendu les choses plus lentes (c’est ce que nous allons voir par la suite). Étant donné que le management n’a pas été assez rapide à voir l’effet à retardement de la boîte à outils, et parce que les managers pensent qu’ils n’ont pas besoin d’aller regarder fréquemment en détails le code source ou qu’ils n’ont pas besoin d’être eux-mêmes des développeurs très expérimentés, ils n’ont rien appris de cette dynamique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le schéma ci-dessous illustre l’examen approfondie des dynamiques des systèmes montrant pourquoi les choses sont allées plus lentement à long terme et pourquoi le tout premier Word pour Windows a été livré des années en retard par rapport à la date souhaitée...&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-19-fr.png|border|848px|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dynamiques avancées de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Naturellement, avoir une grande quantité de code de mauvaise qualité ralentit les choses. De manière beaucoup plus subtile, les développeurs ont &#039;&#039;ignoré&#039;&#039; la liste croissante d’anomalies pour privilégier la production de nouvelles features. Cela a eu pour conséquence d’avoir un délai important entre la déclaration d’une anomalie et sa correction. Il s’avère que cela a fait augmenter de manière significative la variabilité et le temps nécessaire pour corriger une anomalie en raison des effets cumulatifs négatifs liés à la nature même d’une vieille anomalie (par exemple avec la mise en place des solutions de contournement et des couplages existants entre les fonctionnalités), de l’oubli du contexte détaillé par les développeurs en relation avec l’anomalie, ces derniers mettant par conséquent plus de temps à le redécouvrir, de l’accumulation continue de code de mauvaise qualité dans le même temps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le lecteur avisé remarquera également plusieurs boucles causales positives renforçant le cycle de dégradation ; il s’agit de l’une des raisons expliquant le retard pris sur plusieurs années pour livrer le produit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une solution ? L’approche lean avec les principes &#039;&#039;Arrêter et corriger&#039;&#039; et &#039;&#039;Aller voir&#039;&#039;. &#039;&#039;Premièrement&#039;&#039;, plutôt que d’essayer d’aller plus vite lorsqu’il y a des problèmes, des managers-formateurs encouragent les gens à aller plus &#039;&#039;lentement&#039;&#039; et à les inciter à apprendre les dynamiques des systèmes, les causes racines et à les corriger pour améliorer le &#039;&#039;système&#039;&#039; du développement. En allant plus lentement, Toyota - les maîtres de l’approche lean - est devenue l’une des entreprises les plus rapides du monde. &#039;&#039;Deuxièmement&#039;&#039;, les managers doivent &#039;&#039;aller voir ce qui se passe sur le vrai lieu de travail&#039;&#039; pour apprendre ce qu’il se passe. Le &#039;&#039;vrai lieu&#039;&#039; dans le développement logiciel c’est le code, ce qui implique que les managers de proximité sont des développeurs expérimentés qui évalueront le code fréquemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les personnes de chez Microsoft n’ont réfléchi sur la situation que bien après la livraison. Lorsqu’ils ont fini par faire une rétrospective, cela a amené à une politique du &#039;&#039;zéro défaut&#039;&#039;, cela signifie que la première priorité était de corriger les anomalies connues dans le code en cours de développement afin d’aller vers du zéro anomalie ouverte dans la liste des anomalies avant d’écrire du code pour une nouvelle feature.&lt;br /&gt;
&lt;br /&gt;
== Voir (et entendre) l’optimisation locale ==&lt;br /&gt;
&amp;quot;Chacun fait de son mieux, mais malgré tout le flux de production du système se dégrade. Comment cela est-il possible ?&amp;quot;. Il s’agit du paradoxe de &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit c’est lorsqu’une personne à titre individuel ou qu&#039;un responsable de département prend une décision d’un point de vue local ou dans son propre intérêt. Les personnes prenant ce type de décision &#039;&#039;croient fréquemment qu’ils prennent la meilleure décision&#039;&#039;, mais parce que ‘meilleure’ est ici synonyme d’optimisation locale, cela a pour résultat une sous-optimisation globale du flux du système. Ceci est le résultat d’une &amp;quot;mentalité de silo&amp;quot;, d’incompréhension, de peur, de restrictions d’informations, de feedbacks à retardement, d’ignorance, de carriérisme, d’avarice et de bien d’autres &#039;&#039;dysfonctionnements d’apprentissages organisationnels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une petite équipe produit de 30 personnes n’a ni le temps ni l’argent pour s’engager dans ce genre de non-sens ou de gâchis. Mais les grandes entreprises avec de grands groupes produit, des processus centralisés et des groupes outils, un &amp;quot;bureau de gestion de projet&amp;quot; centralisé, et ainsi de suite, semblent avoir élevé l’optimisation locale et le gâchis à une forme d’art. Les bureaucraties gouvernementales en sont bien sûr la quintessence. En conséquence, lorsque vous servez de guide dans une adoption agile à grande échelle, &#039;&#039;voir&#039;&#039; (ou &#039;&#039;entendre&#039;&#039;) et s’occuper de l’optimisation locale est tout simplement quelque chose de vital.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par exemple, les départements juridiques et sécurité mettent en place des politiques qui leurs semblent très importantes de leurs points de vue. Dans l’objectif de prévenir la perte de propriété intellectuelle, le département juridique peut décréter &amp;quot;il est interdit d’afficher tout type d’information sur les murs&amp;quot;. Or, le département de la logistique, soumis de son côté à une pression de politique de réductions des coûts peut surenchérir en disant : &amp;quot;Il est important de s’assurer que nos murs ne soient ni sales ni abîmés&amp;quot;. Et ainsi s’arrête le management visuel qui est l’une des pratiques de l’approche lean (le management visuel se faisant habituellement sur les murs), et ils inhibent également une pratique d’innovation bien connue à savoir le travail de groupe devant un tableau blanc. Les juristes réussiront peut être à réduire la perte de propriété intellectuelle (ce qui en réalité devrait poser question), et les gens de la logistique réussiront à garder leurs murs propres, mais au prix d’inhiber le groupe de développement produit dans sa capacité d’innover et de collaborer. Finalement, l’entreprise se laissera distancer par la concurrence avec de moins en moins de propriété intellectuelle valant la peine d’être défendue parce que les outils permettant l’innovation et de livrer rapidement ont été bannis, mais les juristes auront rempli leur mandat vis-à-vis de la direction pour &amp;quot;s’assurer que la propriété intellectuelle est protégée&amp;quot;. Et la police de la logistique aura nettoyé les murs. &#039;&#039;Ils ont fait de leur mieux&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce qui suit est extrait d’un vrai mail de la &#039;&#039;POLICE DE LA LOGISTIQUE&#039;&#039; dans une organisation qui a banni le management visuel sur les murs. Pouvez-vous identifier les optimisations locales et les modèles mentaux qui sont derrière tout ça ?&lt;br /&gt;
&lt;br /&gt;
 Les [https://fr.wikipedia.org/wiki/Bureau_%C3%A0_cloisons bureaux à cloisons] peuvent être personnalisés. Mais tout ce qui est visible au-dessus de la cloison ou qui perturbe l’harmonie de l’environnement de bureau est interdit.&lt;br /&gt;
&lt;br /&gt;
Nous constatons aussi des optimisations locales dans les groupes centralisés dont le rôle est de choisir les logiciels pour les autres personnes de l’entreprise. La croyance la plus répandue relative à cette démarche est qu’il s’agit de ce qu’il y a de mieux pour réduire les coûts d’achats (curieusement ces mêmes groupes recommandent rarement les logiciels open source gratuits) ou ce qu’il y a de mieux pour accomplir une tâche compliquée ou ce qu’il y a de mieux pour l’accomplissement du travail d’un seul type de travailleur (même si &#039;&#039;tout le monde&#039;&#039; est censé devoir utiliser l’outil), plutôt que de maximiser l’objectif de l’entreprise qui est d’avoir un système de flux de production de la valeur plus rapide pour les clients.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans les adoptions de Scrum ou des principes agiles à grande échelle, la plupart des problématiques de type &amp;quot;Oui, mais...&amp;quot; qui sont soulevées sont des exemples de sous-optimisations, comme par exemple &amp;quot;&#039;&#039;Oui, mais... qu’en est-il des comptes-rendus auprès du management&#039;&#039; ?&amp;quot; ou encore de manière plus générale &amp;quot;* Oui, mais … qu’en est-il de... * ?&amp;quot;. Alors, les principes et les pratiques sont dévoyés, pour servir soit l’objectif de rendre compte, soit n’importe quel autre objectif secondaire plutôt que suivre l’objectif d’optimiser le flux de valeur produite. De temps en temps, nous voyons des &#039;&#039;&#039;optimisations locales dans certains cas rares ou extrêmes&#039;&#039;&#039;. Par exemple, une entreprise doit choisir un outil centralisé répondant à un certain nombre de cas d’utilisations possibles dont un cas extrêmement rare ou complexe, la personne, en charge de faire ce choix, choisit un outil correspondant à un cas unique d’utilisation, sous-optimisant ainsi l’ensemble du système pour un cas représentant uniquement 5% des cas d’utilisation au lieu de l’optimiser pour la majorité des 95% des autres cas d’utilisations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
D’autres optimisations locales sont dues, quant à elles, à l’ignorance des nouvelles manières de travailler. C’est quelque chose de très répandue et tout spécialement dans les groupes produit à grande échelle. Par exemple, un jour nous avons aidé un groupe produit distribué à travers l’Europe à adopter d’une part Scrum et d’autre part la pratique de &#039;&#039;l’intégration continue&#039;&#039; le tout sous la forme d’un système d’intégration continue dédié intégrant, compilant, testant automatiquement de manière continue le produit. Après quelques temps, un manager, que l’on pourrait qualifier de traditionnel, extérieur au groupe est venu inspecter ce qu’il se passait. Celui-ci a recommandé que les pratiques d’intégration devraient être changées en raison de l’absence de schéma d’intégration global permettant à un responsable d’intégration de faire manuellement l’intégration de l’ensemble du logiciel ; une absence de schéma pour la bonne raison qu’il n’y avait plus besoin de responsable d’intégration au sein de l’organisation. Il voulait ‘optimiser’ le travail d’un responsable d’intégration qui n’existait plus. Il était dans l’impossibilité de voir que la totalité de l’ancienne manière de faire les choses avait disparu avec l’intégration continue. Cette histoire se répéta dans l’ensemble des départements du groupe produit : il y a avait des optimisations locales partout autour des façons de faire existantes, tels que les tests manuels, le département d’architecture séparé des équipes, les équipes composants, etc. N’importe quel coach dont la tâche consistait à introduire Scrum à grande échelle au niveau de l’organisation avait une &#039;&#039;montagne&#039;&#039; d’optimisations locales à penser à gérer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans l’approche lean et dans les méthodes agiles, l’accent est mis sur les objectifs du système dans sa globalité : livrer de la valeur de grande qualité au plus vite tout en gardant le moral des équipes au plus haut - autrement dit une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039;. Essayer de reconsidérer vos décisions à la lumière de cet objectif. Pour développer une culture de &amp;quot; l’optimisation globale&amp;quot;, remettez donc en cause toutes les décisions et les règles avec la question suivante :&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Est-ce que cette décision ou cette règle se focalise sur le fait de livrer de la valeur au client externe au plus vite, ou se focalise-t-elle sur les intérêts d’un département, d’une personne, d’une pratique/règle interne, ou d’un cas rarissime ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans LeSS, le Product Owner est responsable pour choisir ces objectifs à haute valeur qui &#039;&#039;&#039;pourrait mener à un produit potentiellement livrable (à la fin du Sprint) maximisant les impacts souhaités et enchantant le client tout en maintenant un rythme soutenable et une haute qualité d’ingénierie&#039;&#039;&#039;. Cet objectif explicite est destiné à orienter le système vers son optimisation globale plutôt que vers une optimisation qui ne serait que locale.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
En plus de devenir un pratiquant de l’approche systémique vous-même, encouragez donc les autres à en apprendre plus sur ce sujet. Nous vous suggérons d’essayer de rassembler quelques-uns de vos collègues autour d’un tableau blanc et d’y dessiner des diagrammes de boucles causales, afin que les architectes des systèmes et les pratiquants de l’approche systémique soient réunis en un seul endroit.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Xgroup-cld-modeling.jpg|848px|border|link=]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Séance d’approche systémique. Réalisation d’un diagramme de boucles causales à plusieurs mains dans l’objectif d’avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lectures recommandées ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.amazon.fr/Hors-crise-W-Edwards-Deming/dp/2717843930/ &#039;&#039;Hors de la Crise&#039;&#039;] de W. Edwards Deming est un ouvrage de référence, sans conteste le plus connu des penseurs systémiques et des experts sur la qualité. Cet ouvrage commence par un objectif modeste : &amp;quot;l’objectif de ce livre est la transformation du style du management américain... ce qui exige de tout changer pour mettre en place une toute nouvelle structure.&amp;quot; Deming prône un &#039;&#039;Système de connaissances approfondies&#039;&#039; dans lequel les managers (1) reconnaissent qu’il y a un &#039;&#039;système&#039;&#039;, (2) qu’ils sont en mesure de comprendre les facteurs les plus répandus et les facteurs spéciaux de variations au sein du système (la théorie des files d’attente est liée à ce phénomène de variation), (3) qu’ils sont en mesure de comprendre que les connaissances sont limitées et qu’il y a des erreurs de raisonnement, et (4) que la psychologie et les recherches en sciences sociales jouent des rôles tout à fait crédibles dans l’objectif de comprendre que les règles régissant les comportements ou en lien avec la motivation des individus ne soient pas basés sur le seul &amp;quot;bon sens&amp;quot;. Le coeur de l’ouvrage tourne autour des célèbres [[Les_14_points_de_Deming|&#039;&#039;14 points pour le management&#039;&#039;]], y compris par exemple &amp;quot;&#039;&#039;Éliminer le management par les objectifs. Éliminer le management par les nombres, par les objectifs par les nombres. Y substituer le leadership&#039;&#039;.&amp;quot;&lt;br /&gt;
* [https://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ &#039;&#039;Industrial Dynamics&#039;&#039;] de Jay Forrester est un classique du genre sur les dynamiques des systèmes, très bien écrit et très instructif. Même si cet ouvrage a été écrit au début des années 1960, il est toujours aussi pertinent aujourd’hui. Il va au-delà de la modélisation des causes à effets pour modéliser également le flux et les stocks d’informations, d’argent et de matériaux au sein d’un système. Le livre contient également une modélisation mathématique formelle de ces dynamiques, toutefois la lecture de cette dernière reste facultative pour apprécier la qualité de l’ouvrage.&lt;br /&gt;
* Les ouvrages [https://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039;] et [https://www.amazon.fr/Introduction-General-Systems-Thinking-Weinberg/dp/0932633498/ &#039;&#039;An Introduction to General Systems Thinking&#039;&#039;] de Gerald Weinberg sont intéressants. Il sont écrits du point de vue d’un consultant expérimenté en développement de systèmes.&lt;br /&gt;
* [https://www.amazon.fr/cinqui%C3%A8me-discipline-Levier-organisations-apprenantes/dp/2212559372/ &#039;&#039;La cinquième discipline&#039;&#039;] est un autre classique du genre qui prône que l’encadrement d’une entreprise devrait appliquer l’approche systémique (autrement dit la &#039;&#039;cinquième&#039;&#039; discipline) ainsi que d’autres disciplines-clés toutes aussi importantes en vue d’obtenir une entreprise durable. Ces autres disciplines que les dirigeants devraient appliquer sont (1) une discipline personnelle, (2) une réflexion sur leurs propres croyances et raisonnements erronés, (3) la définition et la communication d’une vision partagée ayant du sens, et (4) la capacité des équipes à apprendre. Nous vous recommandons d’ignorer - du moins dans un premier temps pendant vos premières années de pratiques - le concept d’archétypes présenté dans le livre. Ce concept avait pour but d’être une aide à l’apprentissage de la cinquième discipline mais nous avons observé qu’il était soit une source de distraction soit qu’il intimidait les lecteurs quant à leur apprentissage et à l’application de la modélisation basique&amp;lt;ref&amp;gt; ‘Basique’ ne signifie pas trivial ou facile à résoudre. Par exemple, les problématiques de &#039;motivation&#039; et de &#039;qualité&#039; sont des problématiques basiques mais elles ne sont pas faciles à résoudre.&amp;lt;/ref&amp;gt;de dynamiques des systèmes. Les ‘archétypes’ ne font pas partie à l’origine des dynamiques des systèmes.&lt;br /&gt;
*[https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ &#039;&#039;La 5ème discipline - le guide de l’organisation apprenante&#039;&#039;] est une source extrêmement riche sur l’approche systémique écrite du point de vue des pratiquants de cette approche et de consultants.&lt;br /&gt;
* Les écrits d’Argyris, Outnam, McLain et Schön sur les apprentissages organisationnels comme [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] et [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ &#039;&#039;Organizational Learning&#039;&#039;] abordent des concepts importants tels que la &#039;&#039;double-boucle apprenante&#039;&#039; et le &#039;&#039;dialogue grand-plaidoyer/grand-réquisitoire&#039;&#039;.&lt;br /&gt;
* Les publications et les ressources de la &#039;&#039;Society for Organizational Learning&#039;&#039;](https://www.solonline.org/).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14227</id>
		<title>LeSS - Approche systémique</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14227"/>
		<updated>2020-10-27T22:20:08Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br/&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/principles/systems-thinking.html]&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux&amp;lt;br/&amp;gt;&lt;br /&gt;
Relecteur : Fabrice Aimetti, Christophe Gesché&amp;lt;br/&amp;gt;&lt;br /&gt;
Date : 27/10/2018&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traduction :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[LeSS - Portail Principes]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Systems Thinking =&lt;br /&gt;
&lt;br /&gt;
= Approche systémique =&lt;br /&gt;
&lt;br /&gt;
I took a speed reading course and read “War and Peace” in twenty minutes. It involves Russia. —Woody Allen&lt;br /&gt;
&lt;br /&gt;
J’ai pris un cours de lecture rapide puis j’ai lu « Guerre et Paix » en vingt minutes. Cela parle de la Russie.&lt;br /&gt;
&lt;br /&gt;
“No matter what we do, the number of defects in our backlog remains about the same,” a manager told us; this for a 15 MSLOC C and C++ product with several hundred developers where we were working. What’s going on? Systems thinking may help. In small groups the forces at play are more quickly seen and informally understood, but in large product development—or any large system—it’s tough. Gerry Weinberg highlights two decisive factors in this situation:&lt;br /&gt;
&lt;br /&gt;
« Quoi que nous fassions, le nombre d’anomalie dans notre &#039;&#039;backlog&#039;&#039; reste identique. » nous a dit un jour un manager en évoquant un produit de près de 15 millions de lignes de code sur lequel plusieurs centaines de développeurs étaient en train de travailler. Que pouvait-il bien se passer ? L’approche systémique peut s’avérer utile dans ce cas comme dans d’autres. En petits groupes, les forces en présence peuvent rapidement être identifiées et comprises de manière informelle, mais dans le cadre du développement d’un gros produit ou de n’importe quel gros système, c’est difficile. Gerry Weinberg met en avant deux facteurs décisifs dans ce genre de situation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Weinberg-Brooks’ Law&#039;&#039;&#039;: More software projects have gone awry from management’s taking action based on &#039;&#039;&#039;&#039;&#039;incorrect system models&#039;&#039;&#039;&#039;&#039; than for all other causes combined.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causation Fallacy&#039;&#039;&#039;: Every effect has a cause… and we can tell which is which. [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Loi de Weinberg-Brooks&#039;&#039;&#039; : De plus en plus de projets informatiques sont partis de travers après que le management ait pris des décisions basées sur des &#039;&#039;&#039;modèles systémiques incorrects&#039;&#039;&#039; plus que pour toutes autres causes combinées.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Erreur de causalité&#039;&#039;&#039; : Chaque effet a une cause … et nous pouvons dire desquelles il s’agit. [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
These reflect the impact of our &#039;&#039;&#039;mental models&#039;&#039;&#039; on the system, a subject that will be revisited later in this section.&lt;br /&gt;
&lt;br /&gt;
Ces deux facteurs reflètent bien l’impact de nos &#039;&#039;&#039;modèles mentaux&#039;&#039;&#039; sur le système, un sujet que nous reverrons plus tard dans cette section.&lt;br /&gt;
&lt;br /&gt;
Problems stemming from mental models and assumptions are one issue. Another is that large-scale adoption of Scrum, lean thinking, and agile principles is not isolated to the development group. It bumps into product management, budgeting, beta-testing, launch, and governance and HR policies. Accordingly, in large-scale agile adoption it is useful to be able to get together with colleagues and &#039;&#039;effectively reason&#039;&#039; about the mental models, causal relations, feedback loops, and control mechanisms (or illusions of control) in a big system that is about to be seriously &#039;&#039;perturbed.&#039;&#039; Systems thinking is one of those reasoning tools.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résultant de nos modèles mentaux et de nos postulats sont un point à traiter. Un autre point est l’adoption à grande échelle de Scrum, de l’approche lean et des principes agiles en dehors du domaine du développement. Ce point est aussi présent dans la gestion de produit, les budgets, les tests, la commercialisation, la gouvernance et la politique RH. En conséquence, dans les adoptions agiles à grande échelle, il est utile de se réunir avec des collègues et de &#039;&#039;réfléchir en profondeur&#039;&#039; sur les modèles mentaux, les relations causales, les boucles de &#039;&#039;feedback&#039;&#039; et les mécanismes de contrôles (ou les illusions de contrôle) dans un gros système qui va être sérieusement &#039;&#039;pertubé&#039;&#039;. L’approche systémique est l’un de ces outils de réflexion.&lt;br /&gt;
&lt;br /&gt;
In 1958, the &#039;&#039;Harvard Business Review&#039;&#039; published [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”] a landmark paper by Jay Forrester, MIT Sloan School professor. This paper spurred the movement of systems thinking in business education, and the MIT Sloan School of Management became known for educating people in &#039;&#039;&#039;system dynamics&#039;&#039;&#039;. System dynamics is sometimes treated as a synonym for &#039;&#039;&#039;systems thinking&#039;&#039;&#039; , though the latter is a more general term.&lt;br /&gt;
&lt;br /&gt;
En 1958 la &#039;&#039;Harvard Business Review&#039;&#039; a publié un article de Jay Forrestor, professeur au MIT Sloan School, qui a fait date [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”]. Cet article a lancé le mouvement de l’approche systémique dans le domaine des formations en gestion d’entreprise et la MIT Sloan School of Management devint célèbre pour ses formations en &#039;&#039;&#039;dynamique des systèmes&#039;&#039;&#039;. Le terme de dynamique des systèmes est parfois utilisé comme synonyme d’&#039;&#039;&#039;approche systémique&#039;&#039;&#039;, même si ce dernier est un terme beaucoup plus général.&lt;br /&gt;
&lt;br /&gt;
MIT also attracted other system-dynamics-oriented researchers such as Peter Senge.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-1 1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le MIT a également attiré d’autres chercheurs intéressés par la dynamique systémique tel que Peter Senge[^1].&lt;br /&gt;
&lt;br /&gt;
Consistent with &#039;&#039;Weinberg-Brook’s Law&#039;&#039;, Forrester’s research showed that decision makers who were given dynamic models of a business system and asked to improve their output performance, &#039;&#039;usually made them run worse&#039;&#039; [http://www.amazon.com/The-Fifth-Discipline-Fieldbook-Organization/dp/0385472560/ref=sr_1_fkmr0_3?ie=UTF8&amp;amp;qid=1413528034&amp;amp;sr=8-3-fkmr0&amp;amp;keywords=The+Fifth+Discipline+%EF%BF%BCFieldbook [SKRRS94]]. The observation was that most people have weak judgement on how to fundamentally improve systems, usually applying incorrect “common sense” and quick-fix ‘solutions’ that do not create long-lasting systemic improvement.&lt;br /&gt;
&lt;br /&gt;
En corrélation avec la loi de &#039;&#039;Weinberg-Brook&#039;&#039;, Jay Wright Forrester a montré que les décideurs à qui il avait été donné des modèles dynamiques de systèmes opérationnels et à qui il avait été demandé d’améliorer la performance opérationnelle, &#039;&#039;n’avaient fait généralement qu’empirer les choses&#039;&#039; [https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ [SKRRS94]]. Il en est ressorti d’ailleurs que la plupart des personnes évaluaient mal la manière dont il faut améliorer les systèmes, et appliquaient généralement leur « bon sens », en mettant en place des solutions de contournement qui n’apportent aucune amélioration systémique à long terme.&lt;br /&gt;
&lt;br /&gt;
Why is the behavior of a large development group (a system) not understood or guided skillfully? The answer lies, in part, in the behavior of stochastic systems with queues and variability, as explored in the [https://less.works/less/principles/queueing_theory.html Queueing Theory] LeSS principle. And the same answer lies in &#039;&#039;control theory&#039;&#039;: Most systems of interest—such as a product development group—have complex positive and negative feedback loops and nonlinear behavior. The behavior of these systems defies our gut instinct. And then there is the minor issue of &#039;&#039;people&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pourquoi le comportement d’un groupe de développement de grande taille (autrement dit un système) n’est-il pas compris ou guidé de manière compétente ? La réponse réside, en partie, dans le comportement des systèmes stochastiques avec les files et les variabilités comme nous avons pu l’évoquer avec le principe LeSS de la [https://less.works/less/principles/queueing_theory.html théorie des files d’attentes]. Et c’est la même réponse qui est au cœur de la &#039;&#039;théorie du contrôle&#039;&#039; : la plupart des systèmes d’intérêt - tel qu’un groupe de développement de produit - ont des boucles de &#039;&#039;feedback&#039;&#039; positives et négatives ainsi qu’un comportement non linéaire. Le comportement de ces systèmes défient nos instincts. Et puis il y a la problématique mineure des &#039;&#039;gens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In summary, reasons for not being skillful in fathoming or guiding a big system include (but are not limited to):&lt;br /&gt;
&lt;br /&gt;
En résumé, les raisons expliquants l’incompétence à maîtriser ou à guider un gros systèmes sont (liste non exhaustive) :&lt;br /&gt;
&lt;br /&gt;
* lack of knowledge about the system dynamics, feedback loops, nonlinear systems behavior, and unintended consequences in workplace systems&lt;br /&gt;
* un manque de connaissance des dynamiques des systèmes, des boucles de &#039;&#039;feedback&#039;&#039;, du comportement non linéaire des systèmes, et des conséquences inattendues dans les systèmes sur le lieu de travail.&lt;br /&gt;
* not understanding root causes of problems (and how to find)&lt;br /&gt;
* une incompréhension des causes racines des problèmes (et de comment les trouver)&lt;br /&gt;
** &#039;&#039;causes,&#039;&#039; not cause; in systems thinking one sees that there are multiple, indirect, and dynamic causes to problems&lt;br /&gt;
** &#039;&#039;les causes&#039;&#039;, non la cause ; en approche systémique, nous savons que les causes des problèmes sont multiples, indirectes et dynamiques&lt;br /&gt;
* not knowing if or why quick-fix or local-department decisions degraded overall delivery performance.&lt;br /&gt;
* l’incapacité à savoir si ou pourquoi une solution de contournement ou une décision locale dégrade la performance globale opérationnelle.&lt;br /&gt;
&lt;br /&gt;
In short, not being systems thinkers.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-2 2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En bref, ne pas utiliser l’approche systémique[^2].&lt;br /&gt;
&lt;br /&gt;
These reasons are consequential at the intersection of management and large-scale adoption of lean and agile principles. The leadership team is part of the system being perturbed; if they do not apply systems thinking, they could &#039;&#039;really&#039;&#039; perturb it—and not in a good way!&lt;br /&gt;
&lt;br /&gt;
Ces raisons sont la conséquence de l’intersection du management et de l’adoption des principes lean et agile. L’équipe de direction fait partie du système qui est pertubé ; si elle n’applique pas l’approche systémique, elle pourrait &#039;&#039;vraiment&#039;&#039; le perturber - et pas de la bonne façon.&lt;br /&gt;
&lt;br /&gt;
As a summary of systems thinking insight, we like the [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 ‘laws’] described in [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413531002&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline The Fifth Discipline]:&lt;br /&gt;
&lt;br /&gt;
Les points-clés à retenir de l’approche systémique peuvent être résumé dans les [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 lois] décrites dans la [https://www.amazon.fr/cinqui%C3%A8me-discipline-organisations-apprenantes-dexemplaires-ebook/dp/B017WSYAHG Cinquième discipline]&lt;br /&gt;
&lt;br /&gt;
* Today’s problems come from yesterday’s ‘solutions.’&lt;br /&gt;
* The harder you push, the harder the system pushes back.&lt;br /&gt;
* Behavior will grow worse before it grows better.&lt;br /&gt;
* The easy way out usually leads back in.&lt;br /&gt;
* The cure can be worse than the disease.&lt;br /&gt;
* Faster is slower.&lt;br /&gt;
* Cause and effect are not closely related in time and space.&lt;br /&gt;
* Small changes can produce big results…but the areas of highest leverage are often the least obvious.&lt;br /&gt;
* You can have your cake and eat it too—but not all at once.&lt;br /&gt;
* Dividing an elephant in half does not produce two small elephants.&lt;br /&gt;
* There is no blame.&lt;br /&gt;
* Les problèmes d’aujourd’hui viennent des solutions d’hier&lt;br /&gt;
* Plus vous poussez, plus le système pousse en retour&lt;br /&gt;
* Le comportement empirera d’abord avant de s’améliorer&lt;br /&gt;
* La manière la plus facile de s’en sortir conduit souvent à faire quelques pas en arrière&lt;br /&gt;
* Le médicament peut être pire que la maladie&lt;br /&gt;
* Plus vite c’est plus lentement&lt;br /&gt;
* Les causes et les effets ne sont pas étroitement liés dans l’espace et le temps&lt;br /&gt;
* De petits changements peuvent produire de gros résultats … mais les zones où l’effet de levier est le plus important sont souvent les moins évidentes&lt;br /&gt;
* Vous pouvez avoir votre gâteau et le manger aussi - mais pas en une seule bouchée&lt;br /&gt;
* Couper un éléphant en deux ne produit pas deux petits éléphants&lt;br /&gt;
* Il n’y a aucun reproche à faire&lt;br /&gt;
&lt;br /&gt;
Toyota’s internal motto is [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html “Good &#039;&#039;&#039;thinking&#039;&#039;&#039;, good products.”] Systems thinking is a set of &#039;&#039;thinking&#039;&#039; tools to help…&lt;br /&gt;
&lt;br /&gt;
La devise de Toyota en interne est [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html « Une bonne &#039;&#039;&#039;réflexion&#039;&#039;&#039;, de bons produits »]. L’approche systémique est un jeu d’outils de réflexion pour aider …&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;see system dynamics&#039;&#039;&#039;—a development organization is a system of people and policies with subtle feedback loops and unintended consequences&lt;br /&gt;
* &#039;&#039;&#039;à voir les dynamiques des systèmes&#039;&#039;&#039; - une organisation de développement est un système de personnes et de règles avec de subtiles boucles de &#039;&#039;feedback&#039;&#039; et des conséquences inattendues&lt;br /&gt;
** we can learn to see and thus improve the system with &#039;&#039;&#039;causal loop diagrams&#039;&#039;&#039; created in a workshop&lt;br /&gt;
** nous pouvons apprendre à voir et ainsi à améliorer le système avec des &#039;&#039;&#039;diagrammes de boucles causales&#039;&#039;&#039; faits lors d’un atelier&lt;br /&gt;
* &#039;&#039;&#039;see mental models&#039;&#039;&#039;—one reason behind suboptimal decisions is mistaken assumptions and faulty reasoning&lt;br /&gt;
* &#039;&#039;&#039;à percevoir les modèles mentaux&#039;&#039;&#039; - parmi les raisons derrière des décisions sous-optimales se trouvent des hypothèses erronées et des raisonnements incorrects&lt;br /&gt;
** causal loop diagramming and Five Whys expose these&lt;br /&gt;
** les diagrammes de boucles causales et les cinq pourquoi permettent de révéler tout ça&lt;br /&gt;
* &#039;&#039;&#039;see local optimization&#039;&#039;&#039;—another source of suboptimal decisions is &#039;&#039;&#039;local optimization&#039;&#039;&#039; , making the ‘best’ decision from the viewpoint of a person or department, rather than &#039;&#039;&#039;global optimization&#039;&#039;&#039; for the lean systems-level goal of &#039;&#039;deliver value fast with high quality and high morale&#039;&#039; .&lt;br /&gt;
* &#039;&#039;&#039;à voir les optimisations locales&#039;&#039;&#039; - une autre source de décisions sous-optimales est &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit prendre la « meilleure » décision du point de vue d’une personne ou d’un département, au détriment d’une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039; qui est l’objectif au niveau système &#039;&#039;lean&#039;&#039; que de pouvoir &#039;&#039;livrer la plus grande valeur possible de très grande qualité avec un moral d’acier&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This introduction is organized around the following areas in systems thinking: Learning to see (1) &#039;&#039;system dynamics&#039;&#039; , (2) &#039;&#039;mental models&#039;&#039; , (3) &#039;&#039;root causes&#039;&#039; , and (4) &#039;&#039;local optimization&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Cette introduction à l’approche systémique est présenté autour des domaines suivants : Apprendre à voir (1) &#039;&#039;les dynamiques des systèmes&#039;&#039;, (2) &#039;&#039;les modèles mentaux&#039;&#039;, (3) &#039;&#039;les causes racines&#039;&#039;, et (4) &#039;&#039;l’optimisation locale&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Static versus Dynamic Complexity ===&lt;br /&gt;
&lt;br /&gt;
=== Complexité statique versus complexité dynamique ===&lt;br /&gt;
&lt;br /&gt;
Many of us, especially in engineering and finance, are educated to master &#039;&#039;&#039;complexity of static details&#039;&#039;&#039;—learning to analyze and manage information (requirements, financial analysis, …), decompose complex structures into simpler ones, and so forth. That is, complexity of a static, information, or structural nature.&lt;br /&gt;
&lt;br /&gt;
La plupart d’entre nous, notamment les ingénieurs et les financiers, ont été formés pour maîtriser la &#039;&#039;&#039;complexité de détails statiques&#039;&#039;&#039; - en apprenant à analyser et à gérer l’information (exigences, analyses financières, …), à décomposer des structures complexes en structures simples, et ainsi de suite. C’est-à-dire, la complexité d’une information qui est par nature structurellement statique.&lt;br /&gt;
&lt;br /&gt;
Why do big software systems tend to degrade, with more and more time spent on defects? What might happen if the USA invades Iraq? Seeing the dynamics behind these questions involves analysis of the &#039;&#039;&#039;complexity of dynamics&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Pourquoi les gros systèmes informatiques ont-ils tendance à se dégrader malgré de plus en plus de temps passé sur les anomalies ? Qu’est-ce qui pourrait bien se passer si les États-Unis d’Amérique envahissait l’Irak ? Voir les dynamiques derrière ces questions implique d’analyser la &#039;&#039;&#039;complexité des dynamiques&#039;&#039;&#039; en jeu.&lt;br /&gt;
&lt;br /&gt;
In contrast to static-details education, many of us receive no &#039;&#039;formal&#039;&#039; education in analyzing &#039;&#039;dynamics&#039;&#039; complexity&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-3 3]&amp;lt;/sup&amp;gt;, especially workplace dynamics. Perhaps there is a belief it is sufficient to rely on common sense in the workplace. Forrester demonstrated that “common sense” is just not so in complex systems, and showed it is possible to formally educate people to become better system dynamics thinkers in the workplace using &#039;&#039;dynamic system models&#039;&#039; visualized in &#039;&#039;flow diagrams&#039;&#039; [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
En contraste avec une formation sur les détails statiques que la plupart d’entre nous avons suivie, peu d’entre nous ont reçu de formation sur l’étude des systèmes dynamiques et complexes[^3] et notamment en milieu professionnel. Peut-être parce que nous avons la croyance qu’il est suffisant de s’appuyer sur le bon sens en milieu professionnel. Jay Wright Forrester a démontré que le « bon sens » n’est pas suffisant dans des systèmes complexes et qu’il est possible de former des personnes pour leur permettre de mieux appréhender les dynamiques des systèmes en milieu professionnel en utilisant notamment des &#039;&#039;diagrammes de flux&#039;&#039; [http://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
Flow diagrams encompass material, financial, and information flows, stocks (variables with a quantity, such as cash or number of defects), the impact of decisions and policies, and cause-effect relations. A popular simplification is the &#039;&#039;&#039;causal loop diagram&#039;&#039;&#039; that focuses on cause-effect relationships and feedback loops in a system [http://www.amazon.com/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. There are a variety of similar notations; they all show stocks (variables), causal links, and delay. In [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] this is called the &#039;&#039;diagram of effect&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de flux peuvent s’appliquer aussi bien aux flux matériels, financiers, d’informations, de stocks (n’importe quel type de stock quantitatif comme de l’argent ou des anomalies), aux conséquences des décisions et des politiques et des relations de causes à effet. Lorsque nous pensons aux diagrammes de flux, nous pensons souvent au seul diagramme de boucle causale dédié aux relations de cause à effets et aux boucles de rétroaction dans un système [http://www.amazon.fr/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. Il existe une grande variété d’autres diagrammes qui peuvent faire figurer les stocks (quels qu’ils soient), les liens de causalités, et les retards. Dans son ouvrage, [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] Gerald Weinberg appelle cela un &#039;&#039;diagramme d’effet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== The First Law of Diagramming: Model to Have a Conversation ===&lt;br /&gt;
&lt;br /&gt;
=== La première loi de la réalisation d’un diagramme : nous modélisons pour avoir une conversation ===&lt;br /&gt;
&lt;br /&gt;
A tool to learn to see system dynamics is a causal loop diagram, ideally sketched on a whiteboard in a LeSS Overall Retrospective with colleagues. Before going further, here is the &#039;&#039;First Law of Diagramming&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un outil très utile pour apprendre les dynamiques des systèmes est le diagramme de boucles causales - nous vous recommandons de l’utiliser sur un tableau blanc notamment lors des Rétrospectives Globales LeSS. Mais avant d’aller plus loin, voici la &#039;&#039;première loi de réalisation d’un diagramme&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;The primary value in diagrams is in the discussion while diagramming—we model to have a conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;La première valeur d’un diagramme c’est la discussion qui se déroule lors de la réalisation du diagramme - nous modélisons pour avoir une conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
When a group gets together to sketch a causal loop diagram on a whiteboard (See it is the the acts of discussing and thinking that are most important when diagramming, Valtech India.), the primary value is the conversation and shared understanding they arrive at while creating the model. Its visualization as an easy-to-see diagram &#039;&#039;is&#039;&#039; important to make concrete and unambiguous (on the whiteboard) the ideas—the mental models people have—because words alone can be fuzzy and misunderstood. But still, the diagram is secondary to what people take away: learning and a revised understanding through a discussion.&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un groupe se rassemble pour dessiner un diagramme de boucles causales sur un tableau blanc (« C’est l’acte de discuter et de réfléchir qui est le plus important lorsque nous dessinons », Valtech India.), la première valeur d’un diagramme c’est la conversation et la compréhension commune à laquelle les personnes arrivent lors de la création du modèle. Ce qu’il en résulte à savoir un diagramme facile à comprendre est important pour rendre les idées et les modèles mentaux concrets et non ambigües (sur le tableau blanc) parce que les mots seuls peuvent être imprécis et mal compris. Toutefois, le diagramme est secondaire par rapport avec ce que les gens repartent : ils ont appris quelque chose et ont revu leur compréhension du monde à travers une discussion.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|frame|none|alt=|caption group%20cld%20modeling.jpg]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Xgroup-cld-modeling.jpg|frameless|848px|Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Concrete modeling tip&#039;&#039; : We start by writing on sticky notes to define &#039;&#039;variables&#039;&#039; . A note might read “feature velocity” or “# defects.” We place these on a whiteboard. Then we sketch causal link lines between the sticky notes. There will be (or should be) lots of rewriting, erasing, and redrawing during the modeling session. The most meaningful outcome is &#039;&#039;understanding&#039;&#039; ; in addition, some participants will want to take a digital photo of the whiteboard sketch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Trucs et astuces de pro pour modéliser&#039;&#039; : Nous commençons par écrire sur des petits papiers repositionnables les noms des &#039;&#039;variables&#039;&#039;, par exemple « vélocité des &#039;&#039;features&#039;&#039; » ou « nombre d’anomalies ». Nous les plaçons ensuite sur le tableau blanc. Puis nous dessinons les liens de causalités entre les papiers . Il y aura (ou il devrait y avoir) beaucoup de réécriture, d’effaçage, de redessin lors de la session de modélisation. Le résultat le plus important d’une telle session est la &#039;&#039;compréhension&#039;&#039; - il se peut qu’à l’issue de cet atelier, certains participants voudront prendre une photo du dessin du tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Causal Loop Diagrams ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : les diagrammes de boucles causales ==&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams are used regularly in introductions to LeSS, to help see the dynamics of what is going on in large-scale development. It is useful to understand them for that reason alone. And more useful to you, we recommend you do these together with colleagues at a whiteboard. Model to have a conversation. When? Probably during a LeSS Overall Retrospective.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales sont souvent utilisés en introduction à LeSS pour aider à voir les dynamiques de ce qu’il se passe dans du développement à grande échelle. Il est donc utile de comprendre ce type de diagrammes pour cette seule et unique raison. Et cela s’avèrera encore plus utile pour vous, si vous le faites avec vos collègues devant un tableau blanc. Vous modélisez pour avoir une conversation. Quand ? Plus probablement lors d’une rétrospective globale LeSS.&lt;br /&gt;
&lt;br /&gt;
The practical aspect of this tip is more important than may first be appreciated. It is vague and low-impact to suggest “be a systems thinker.” But if you and four colleagues get into the habit of standing together at a large whiteboard, sketching causal loop diagrams together, then there is a concrete and potentially high-impact practice that connects “&#039;&#039;be&#039;&#039; a systems thinker” with “&#039;&#039;do&#039;&#039; systems thinking.”&lt;br /&gt;
&lt;br /&gt;
L’aspect pratique de cet exercice est bien plus important que ce qu’il peut paraître au premier abord. Notre conseil d’« être un pratiquant systémique » peut vous sembler vague et sans grand impact. Mais si vous et quatre de vos collègues prenez l’habitude de vous réunir devant un grand tableau blanc, en dessinant des diagrammes de boucles causales ensemble, alors vous arriverez à faire la connexion entre « &#039;&#039;être&#039;&#039; un pratiquant systémique » avec « &#039;&#039;faire&#039;&#039; de l’approche systémique ».&lt;br /&gt;
&lt;br /&gt;
The following examples seem sterile when presented in a book. But imagine you were at a whiteboard with other people and the diagrams were being sketched during a lively conversation. That’s the way we suggest ‘doing’ systems thinking.&lt;br /&gt;
&lt;br /&gt;
Les exemples suivants peuvent paraître stériles car présentés dans un livre. Mais imaginez-vous à côté d’un tableau blanc avec d’autres personnes dessinant ensemble des diagrammes au cours d’une conversation animée. C’est de cette manière-là que nous suggérons de ‘ faire ’ de l’approche systémique.&lt;br /&gt;
&lt;br /&gt;
====== Notation and Examples ======&lt;br /&gt;
&lt;br /&gt;
====== Notation et exemples ======&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams contain many elements; the following common useful subset is explored through a scenario.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales contiennent beaucoup d’éléments ; les éléments suivants sont les plus communément utilisés et sont vus en détail tout au long du scénario qui va suivre&lt;br /&gt;
&lt;br /&gt;
* variables&lt;br /&gt;
* causal links&lt;br /&gt;
* opposite effects&lt;br /&gt;
* constraints&lt;br /&gt;
* goals&lt;br /&gt;
* reactions; quick-fix reactions&lt;br /&gt;
* interaction effects&lt;br /&gt;
* extreme effects&lt;br /&gt;
* delays&lt;br /&gt;
* positive feedback loops&lt;br /&gt;
* variables&lt;br /&gt;
* liens de causalité&lt;br /&gt;
* effets opposés&lt;br /&gt;
* contraintes&lt;br /&gt;
* objectifs&lt;br /&gt;
* réactions ; réactions solutions de contournement&lt;br /&gt;
* effets d’interaction&lt;br /&gt;
* effets extrêmes&lt;br /&gt;
* retards&lt;br /&gt;
* boucles de &#039;&#039;feedback&#039;&#039; positives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following simplified scenario is for a particular organization. It is not a generalization.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le scénario qui suit est un scénario simplifié pour une organisation spécifique. Il ne s’agit pas d’une généralisation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variables&#039;&#039;&#039;—Causal loop diagrams include &#039;&#039;variables&#039;&#039; (or stocks) such as the &#039;&#039;velocity (rate of delivery) of software features&#039;&#039; and &#039;&#039;number of defects&#039;&#039; . Variables have a measurable quantity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les variables&#039;&#039;&#039; - Les diagrammes de boucles causales comportent des &#039;&#039;variables&#039;&#039; (ou des stocks) telle que la &#039;&#039;vélocité (taux de livraison) des features&#039;&#039; et le &#039;&#039;nombre d’anomalies&#039;&#039;. Les variables ont une quantité mesurable.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-4.png.pagespeed.ic.WpO9GKmuZP.webp|frame|none|alt=|caption systems thinking-4.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-4-fr.png|frameless|848px|1er schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causal links&#039;&#039;&#039;—An element can have an effect on another, such as if feature velocity increases, then the number of defects increase; that is, more new code, more defects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les liens de causalité&#039;&#039;&#039; - Un élément peut avoir un effet sur un autre, comme par exemple si la vélocité des &#039;&#039;features&#039;&#039; augmente alors le nombre d’anomalies augmente ; autrement dit, plus de code, plus d’anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-5.png.pagespeed.ic.oPRro2SqND.webp|frame|none|alt=|caption systems thinking-5.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-5-fr.png|frameless|848px|2ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Now it is time to bump into &#039;&#039;Weinberg-Brook’s Law&#039;&#039; and the &#039;&#039;Causation Fallacy&#039;&#039; . It is easy to sketch a diagram; it is something else to model with insight. For example, consider the relationship between the &#039;&#039;number of developers&#039;&#039; and &#039;&#039;feature velocity.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il est temps désormais de se jeter à corps perdu dans la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; et dans la &#039;&#039;causalité fallacieuse&#039;&#039;. C’est facile de dessiner un diagramme, ça l’est moins que de modéliser en faisant preuve de clairvoyance comme par exemple, la relation entre le &#039;&#039;nombre de développeurs&#039;&#039; et la &#039;&#039;vélocité des features&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The nature of any cause-effect relationship is actually not obvious, though it is common for people to jump to conclusions such as more developers means better velocity. Adding people late in development may &#039;&#039;reduce&#039;&#039; velocity (a sub-element of “Brooks’ Law” [Brooks95]). Or, &#039;&#039;more&#039;&#039; bad programmers could really slow you down. An argument can be made that &#039;&#039;removing&#039;&#039; terrible developers can &#039;&#039;improve&#039;&#039; velocity.&lt;br /&gt;
&lt;br /&gt;
Toute relation de cause à effets est par nature obscure, même si les gens ont l’habitude de sauter sur la première conclusion venue comme par exemple plus de développeurs égale plus de vélocité. Ajouter des personnes tard au cours du développement peut &#039;&#039;réduire&#039;&#039; la vélocité (il s’agit d’une composante de la « loi de Brooks » [Brooks95]). Ou, &#039;&#039;davantage&#039;&#039; de mauvais développeurs pourrait vraiment vous ralentir. Il pourrait être objecté qu’&#039;&#039;enlever&#039;&#039; des développeurs exécrables peut permettre &#039;&#039;d’améliorer&#039;&#039; la vélocité.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-6.png.pagespeed.ic.6XIYl7Vm3_.webp|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-6-fr.png|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-6-fr.png|frameless|848px|3ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Opposite effects&#039;&#039;&#039;—A causal link effect may be the same or opposite direction; if A goes up then B goes up, or vice versa. Opposite effect is shown with an ‘O’ on the line. Suppose defects going up puts a drag on the system, lowering the velocity of new features because people spend more time fixing or working around bugs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets opposés&#039;&#039;&#039; - L’effet d’un lien de causalité peut aller dans la même direction ou dans la direction opposée. Si A monte alors B monte ou vice versa. L’effet opposé se souligne à l’aide d’un ‘0’ sur la ligne. Supposons que les anomalies ralentissent grandement le système, réduisant la vélocité des nouvelles &#039;&#039;features&#039;&#039; parce que les gens passent plus de temps à corriger ou à trouver des solutions de contournement aux anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-7.png.pagespeed.ic.DPGMJyX2Qf.webp|frame|none|alt=|caption systems thinking-7.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-7-fr.png|frameless|848px|4ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Constraints&#039;&#039;&#039;—Unless you can find people to work for free, there is a constraint on the number of developers, based upon cash supply.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contraintes&#039;&#039;&#039; - À moins que vous ne trouviez des personnes prêtent à travailler gratuitement, il y a une contrainte sur le nombre de développeurs basé sur le budget disponible.&lt;br /&gt;
&lt;br /&gt;
Constraints are &#039;&#039;not&#039;&#039; causal links. As cash supply goes up, it is not the case that the number of developers goes up.&lt;br /&gt;
&lt;br /&gt;
Les contraintes ne sont &#039;&#039;pas&#039;&#039; des liens de causalité. Lorsque la montant du budget disponible augmente, ce n’est pas le cas du nombre de développeurs/&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-8.png.pagespeed.ic.gbgAIK-IsZ.webp|frame|none|alt=|caption systems thinking-8.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-8-fr.png|frameless|848px|5ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goals and Reactions&#039;&#039;&#039;–People, departments, and systems have goals, such as &#039;&#039;higher feature velocity&#039;&#039; . Goals often generate pressure for people to react (or act), with the intent of achieving the goal. But since there is &#039;&#039;Causation Fallacy&#039;&#039; and &#039;&#039;Weinberg-Brooks’ Law&#039;&#039; to contend with, people should be cautious about assuming what actions will help. Now a goal and pressure for reaction is shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buts et réactions&#039;&#039;&#039; - Les personnes, les départements et les systèmes ont des buts, comme par exemple avoir une &#039;&#039;vélocité des features plus élevée&#039;&#039;. Les buts occasionnent souvent de la pression pour que les gens réagissent (ou agissent) dans l’intention de leur faire atteindre ce but. Mais étant donné qu’il y a la &#039;&#039;causalité fallacieuse&#039;&#039; et la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; à laquelle il faut faire face, les gens devraient être prudents quant aux actions pertinentes à entreprendre. Voici un exemple de diagramme modélisant cela :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-9.png.pagespeed.ic.yVcHbh4_-i.webp|frame|none|alt=|caption systems thinking-9.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-9-fr.png|frameless|848px|6ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Not only does a goal with a &#039;&#039;reward&#039;&#039; create pressure to act, but also it creates pressure to &#039;&#039;appear&#039;&#039; to be acting and achieving, due to the &#039;&#039;&#039;measurement dysfunction&#039;&#039;&#039; generated by rewards. And the measurement dysfunction can be proportional to the perceived value of the reward because people are being motivated to get a reward, not to improve the system [http://www.amazon.com/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Notice how rewards can actually degrade system performance. Visually, the system dynamics may be…&lt;br /&gt;
&lt;br /&gt;
Non seulement un but à atteindre avec une &#039;&#039;récompense&#039;&#039; au bout engendre une pression à agir, mais cela créé aussi une pression à &#039;&#039;faire semblant&#039;&#039; d’agir et à atteindre le but — les récompenses provoquent un &#039;&#039;&#039;dysfonctionnement des indicateurs&#039;&#039;&#039;. Le dysfonctionnement des indicateurs peut être proportionnel à la valeur perçue de la récompense parce que les personnes sont motivées pour avoir la récompense, non pour améliorer le système [http://www.amazon.fr/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Remarquez bien comment et de quelle manière les récompenses peuvent dégrader la performance du système. De manière visuelle, les dynamiques d’un tel système pourrait être …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-10.png.pagespeed.ic.39CLFp-g_9.webp|frame|none|alt=|caption systems thinking-10.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-10-fr.png|frameless|848px|7ème schéma]]&lt;br /&gt;
&lt;br /&gt;
It is quite interesting that all these dynamics have been added by introduction of reward, and yet there is no necessary connection between the top part of this model and the bottom.&lt;br /&gt;
&lt;br /&gt;
Il est assez intéressant de voir que toutes ces dynamiques ont été ajouté par l’introduction d’une récompense et qu’il n’y pas de connexion entre le haut et le bas de cette modélisation.&lt;br /&gt;
&lt;br /&gt;
There is no guarantee that feature velocity has improved—or even been worked on.&lt;br /&gt;
&lt;br /&gt;
Il n’y a aucune garantie que la vélocité des features s’améliore ou même que l’on y travaille.&lt;br /&gt;
&lt;br /&gt;
Removing the reward system is a root-cause solution to the dysfunction. Another (lesser) surface countermeasure is the lean-thinking &#039;&#039;Go See&#039;&#039; (go see physically at the place of real work) principle and management behavior:&lt;br /&gt;
&lt;br /&gt;
Enlever le système de récompense est une solution à la cause racine de ce dysfonctionnement. Une autre contremesure de surface est le principe et le comportement managériale &#039;&#039;Aller voir&#039;&#039; (aller voir physiquement sur le lieu où le travail s’effectue) de l’approche lean.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-11.png.pagespeed.ic.NU8SjnJkUY.webp|frame|none|alt=|caption systems thinking-11.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-11-fr.png|frameless|848px|8ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick-fix reactions&#039;&#039;&#039;—One difficult and slow solution toward the goal of higher velocity is to hire great developers, to increase coaching and education of existing staff, and to remove terrible workers. The alternative is called a &#039;&#039;quick fix&#039;&#039; , a reaction that is hoped to achieve the goal quickly and with less effort. Sometimes a quick fix works well both in the short and long term, really strengthening the system. Sometimes not…hence, “faster is slower.” For example, people may &#039;&#039;believe&#039;&#039; that increasing the number of developers increases the feature velocity. And they may thereby hope that hiring more developers will most quickly and easily solve the velocity problem. ‘QF’ indicates the quick fix:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solutions de contournement&#039;&#039;&#039; - Une solution payante à long terme pour atteindre une vélocité plus grande, qui n’est pas sans difficulté, consiste à : recruter de développeurs très qualifiés, faire davantage d’accompagnements et de formations, et à se séparer des moins bons éléments. L’alternative est ce que l’on appelle une &#039;&#039;solution de contournement&#039;&#039;, c’est ce que l’on met en place dans l’espoir d’atteindre l’objectif en moins de temps et avec moins d’effort. Parfois, une solution de contournement se révèle payante aussi bien dans le court terme que dans le long terme, renforçant par la-même le système. D’autres fois cela ne fonctionne pas … d’où l’expression « aller plus vite c’est aller plus lentement ». Par exemple, les gens peuvent &#039;&#039;croire&#039;&#039; qu’augmenter le nombre de développeurs permet d’augmenter la vélocité des features. Et ils peuvent par conséquent être amenés à espérer qu’en recrutant davantage de développeurs cela permettra de résoudre plus vite et plus facilement le problème de vélocité. La mention ‘SC’ sur le diagramme ci-dessous indique une solution de contournement.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-12.png.pagespeed.ic.x8IJWKprUx.webp|frame|none|alt=|caption systems thinking-12.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-12-fr.png|frameless|848px|9ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interaction effects&#039;&#039;&#039;—There is the constraint of cash supply on hiring. One hard and slow solution is to get more cash. A quicker fix is to hire &#039;&#039;much&#039;&#039; cheaper developers. In this case, the level of cash supply now has an &#039;&#039;interaction effect&#039;&#039; with other causal links. Low cash tends to strengthen the hire rate of much cheaper developers when there is pressure to increase hire rates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets d’interaction&#039;&#039;&#039; - La capacité à embaucher est contraint à la capacité budgétaire. Une solution de longue haleine non sans difficulté est d’obtenir davantage de budget. Une solution de contournement possible est de recruter un &#039;&#039;grand&#039;&#039; nombre de développeurs bon marché. Dans ce cas, le niveau du budget a un &#039;&#039;effet d’interaction&#039;&#039; avec les autres boucles causales. Un budget peu élevé aura tendance à renforcer le taux de développeurs bon marché si la pression pour recruter augmente.&lt;br /&gt;
&lt;br /&gt;
One could simply draw an (opposite) causal link directly from &#039;&#039;cash supply&#039;&#039; to &#039;&#039;hire rate of very cheap developers&#039;&#039; , but that merely says that less cash leads to more hiring of extremely cheap developers. That is not quite what we want to say; rather, we want to show the interaction effect—that effect A influences &#039;&#039;effect&#039;&#039; B. This is done by showing a causal link entering another causal link. For example, from &#039;&#039;cash supply&#039;&#039; to the quick-fix line going into &#039;&#039;hire rate of very cheap developers&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
Nous pourrions dessiner simplement un lien de causalité (opposé) de &#039;&#039;rentrée budgétaire&#039;&#039; à &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;, mais cela voudrait simplement dire qu’avoir un budget moindre aurait pour conséquence de recruter davantage de développeurs bon marché. Mais ce n’est pas tout à fait ce que nous voulons dire ; ce que voulons montrer en fait, c’est l’effet d’interaction - c’est-à-dire qu’un effet A influence un &#039;&#039;effet&#039;&#039; B. Cela se fait en montrant un lien de causalité heurtant un autre lien de causalité, par exemple en traçant une ligne de &#039;&#039;rentrée budgétaire&#039;&#039; vers la ligne représentant la solution de contournement qui va vers &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-13.png.pagespeed.ic.LvAE8ewRFJ.webp|frame|none|alt=|caption systems thinking-13.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-13-fr.png|frameless|848px|10ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extreme effects&#039;&#039;&#039;—We have worked with some very inexpensive developers with excellent skill and some very expensive developers that are terrible, but on average, you get what you pay for—when you hire from a large pool of very cheap labor, the average skill level is lower. In the model we want to show that the impact of hiring very cheap labor on the &#039;&#039;number of low-skilled developers&#039;&#039; is a significantly greater effect than average.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets extrêmes&#039;&#039;&#039; - Il nous est arrivé de travailler avec d’excellents développeurs très bon marché et avec d’autres hors de prix très nuls, mais en moyenne, vous obtenez à hauteur de ce que vous payez - lorsque vous recrutez au moins disant, le niveau moyen en terme de compétences sera plus faible. Dans le diagramme ci-dessous, nous avons voulu montrer que l’impact du recrutement de personnes bon marché en rapport avec le &#039;&#039;nombre de développeurs peu qualifiés&#039;&#039; à un impact sensiblement plus grand que la moyenne.&lt;br /&gt;
&lt;br /&gt;
To show an &#039;&#039;extreme effect&#039;&#039; in the model, use a thick line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer un &#039;&#039;effet extrême&#039;&#039; sur un modèle, faites un trait épais comme vous pouvez voir ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-14.png.pagespeed.ic.JYkqz8Qe24.webp|frame|none|alt=|caption systems thinking-14.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-14-fr.png|frameless|848px|11ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delays&#039;&#039;&#039;—One problem in hiring in software development is the &#039;&#039;fallacy of mild programmer variance&#039;&#039; —the mistaken belief that programmer variance (in terms of productivity, code quality, etc.) is relatively small. However, programmer variance studies suggest an average of four times faster in the top versus bottom quartile [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. Rather significant. Also, the COCOMO model—based on large and longitudinal studies—shows that the capability of the development personnel is by far the most important factor for productivity [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. And, on average, very weak programmers create poor-quality code (poor design) and more defects, creating another drag on the system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retards&#039;&#039;&#039; Un problème courant au niveau du recrutement dans un projet de développement logiciel concerne &#039;&#039;l’erreur au niveau de la variance d’un développeur moyen&#039;&#039; - autrement dit la croyance fausse que la variance d’un développeur à un autre (en terme de productivité, de qualité de code, etc.) est relativement faible. Toutefois, les études de la variance au sujet des développeurs montrent un rapport de un à 4 entre le 1er quartile et le dernier [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. C’est plutôt quelque chose de significatif. De même des études - en long et en large - du modèle COCOMO montrent que la capacité du développement personnel est le facteur de loin le plus important quant à la productivité [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. Et, en moyenne, il s’avère que les développeurs peu qualifiés font du code de mauvaise qualité (mauvaise conception) et de plus d’anomalies, ceci rajoute un autre frein au système.&lt;br /&gt;
&lt;br /&gt;
But the impacts of these effects are not immediately obvious. For example, it takes a relatively long time after hiring a large pool of weak programmers before the impacts of more and more bad code/design start to be felt. Similarly, the average &#039;&#039;decrease&#039;&#039; in feature velocity (because of the powerful impact of programmer variance) will not show up immediately.&lt;br /&gt;
&lt;br /&gt;
Mais l’impact de ces effets ne sont pas visibles immédiatement. Par exemple, cela peut prendre un certain temps après un recrutement massif de développeurs peu qualifiés avant que les impacts négatifs ne se fassent sentir au niveau de la qualité du code ou de la conception. De manière similaire, la &#039;&#039;baisse&#039;&#039; moyenne de la vélocité des features (en raison de l’impact important de la variance des développeurs évoqué plus haut) ne se verra pas immédiatement.&lt;br /&gt;
&lt;br /&gt;
To show these &#039;&#039;delayed effects&#039;&#039; in the model, use a double-line through the effect line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer ces &#039;&#039;effets à retardement&#039;&#039; dans le modèle, faites une double-ligne en travers de la ligne d’effet.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-15.png.pagespeed.ic.0fwliLJm6G.webp|frame|none|alt=|caption systems thinking-15.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-15-fr.png|frameless|848px|12ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Delay has an intriguing influence on the &#039;&#039;educational&#039;&#039; or corrective power in a system. If an impact or unintended consequence is long delayed, one does not feel the effect (pain or gain) and so does not clearly see how A influenced B, or more subtly how &#039;&#039;A influenced B influenced A&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Le retard a une influence intéressante sur le pouvoir &#039;&#039;pédagogique&#039;&#039; ou correctif sur un système. Si un impact ou une conséquence inattendue est retardé suffisamment longtemps, personne n’en voit ni l’effet (qu’il soit bénéfique ou néfaste) ni sur la façon dont A influence B ou plus subtilement comment &#039;&#039;A a influencé B qui a influencé A&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Therefore, one does not learn from or correct mistakes—in policy, management actions, tools, and so forth. Likewise, gradual improvement through the lean thinking practice of &#039;&#039;kaizen&#039;&#039; can take a long time; patience and insight are needed to see if and how things improve.&lt;br /&gt;
&lt;br /&gt;
Par conséquent, personne n’apprend de ses erreurs ni n’est en capacité de les corriger - que ce soit en terme de stratégie, d’actions d’encadrement, d’outils ou de quoi que ce soit. De la même manière, l’amélioration graduelle à travers l’application d’une démarche lean &#039;&#039;kaizen&#039;&#039;, peut prendre un certain temps ; de la patience et de la perspicacité sont nécessaires pour voir si et comment les choses s’améliorent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Positive feedback loops&#039;&#039;&#039;—Negative or positive feedback loops&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-5 5]&amp;lt;/sup&amp;gt; and delays are where things start to get more subtle in a system—and in understanding a system. For example, how does one become a better programmer? In part, by mentoring from great programmers and seeing lots of examples of great code. But an office with a lot of low-skill developers does not generate a lot of great code examples, nor does it attract or retain the small pool of great programmers who could act as mentors. They would rather work somewhere else.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Boucles de feedback positives&#039;&#039;&#039; - Les boucles de feedback négatives ou positives [^5] et les retards sont le point de départ pour une approche plus subtile d’un système - et de sa compréhension. Par exemple, de quelle manière une personne peut-elle devenir un meilleur développeur ? En partie, en bénéficiant du mentorat de très bons développeurs et en jetant un œil sur du très bon code. Mais il est impossible de trouver du bon code dans un endroit remplit de développeurs médiocres, il est impossible également d’y attirer ou de retenir le petit groupe de très bon développeurs qui pourraient prendre le rôle de mentors. Ils préfèrent largement aller travailler ailleurs.&lt;br /&gt;
&lt;br /&gt;
Now the development group starts to enter a self-reinforcing downward spiral—a set of &#039;&#039;positive feedback loops&#039;&#039; . Fortunately, the downward trend is constrained by the supply of cash.&lt;br /&gt;
&lt;br /&gt;
Ce groupe de développeurs médiocres rentrent dans un cercle vicieux en raison d’un ensemble de &#039;&#039;boucles de feedback positives&#039;&#039;. Fort heureusement, ce cercle vicieux est assujeti aux contraintes du budget.&lt;br /&gt;
&lt;br /&gt;
More great programmers—who could craft great code and mentor others—leave. So there is less and less quality code to look at and to learn from. The percentage of weak programmers grows even larger and feature velocity drops further. Code becomes more messy, awkward, and duplication-riddled, so the capacity to swiftly implement features declines. Since feature velocity is dropping further, there is more pressure to hire yet more very cheap programmers. All this leads to multiple positive reinforcement loops in the system, for example:&lt;br /&gt;
&lt;br /&gt;
Malheureusement de plus en plus des très bons développeurs - ceux en capacité d’élaborer du très bon code et de faire du mentorat auprès des autres développeurs - partent. Par conséquent, il y a de moins en moins de code de qualité à regarder et à partir duquel il est possible d’en tirer des enseignements. Le pourcentage de développeurs médiocres augmente de plus en plus et la vélocité au niveau des features continue à chuter. Le code devient de plus en plus brouillon, difficile, avec pleins de bouts de code dupliqués à gauche et à droite, le tout de telle manière que la capacité d’implémenter des features décline. Étant donné que la vélocité des features continue de chuter, il y a davantage de pression pour recruter des développeurs très bon marché. Tout cela conduit à de multiples boucles de renforcement positives dans le système comme l’illustre l’exemple ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-16.png.pagespeed.ic.ONFuUmJHSE.webp|frame|none|alt=|caption systems thinking-16.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-16-fr.png|frameless|848px|13ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip&#039;&#039; : You can find positive feedback loops by finding cycles with an &#039;&#039;even number&#039;&#039; of ‘Opposite’ effect relationships. There are several examples in the model above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Astuce&#039;&#039; : Vous pouvez trouver des boucles de feedback positives en cherchant des cycles ayant un &#039;&#039;nombre pair&#039;&#039; de relations. Vous en trouverez plusieurs exemples ci-dessus.&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
The example scenario is only that—an example. A causal loop diagram can visualize rich dynamics in a workplace system. These are best created by a group at a whiteboard.&lt;br /&gt;
&lt;br /&gt;
Le scénario donné à titre d’exemple est uniquement cela - un exemple. Une diagramme de boucle causale permet de visualiser la richesse de la dynamique dans le système dans un milieu professionnel. La meilleure manière de modéliser un tel système est de le faire en groupe face à un tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing Mental Models ==&lt;br /&gt;
&lt;br /&gt;
== Voir les modèles mentaux ==&lt;br /&gt;
&lt;br /&gt;
The previous causal loop diagrams reflect people’s mental models of causation, which may be wrong. It is interesting to note that people’s models of causation are influenced by the timeliness (delay) and quality of feedback in the system.&lt;br /&gt;
&lt;br /&gt;
Les précédents diagrammes de boucles causales reflètent les modèles mentaux de causalité des individus … qui peuvent s’avérer faux. Il est intéressant de remarquer que les modèles de causalité des individus sont influencés par la ponctualité (ou les retards) et la qualité des feedbacks dans le système.&lt;br /&gt;
&lt;br /&gt;
The implication of “mental models” is to improve our meta-cognitive skill to see and question our own assumptions and chains of reasoning. Are we making faulty leaps of logic? It also implies when working with others to discuss (inquiring rather than abusing) the mental models of our colleagues.&lt;br /&gt;
&lt;br /&gt;
Les « modèles mentaux » nous permettent d’améliorer nos compétences de méta-cognition pour voir et questionner nos propres postulats et l’enchaînement de nos raisonnements. Brûlons-nous des étapes de manière erronée ? Cette question implique aussi lorsque nous sommes en train de travailler avec des collègues de discuter avec eux (en s’enquérant plutôt qu’en reprochant) de leurs modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Seeing&#039;&#039; these mental models is step one; &#039;&#039;changing&#039;&#039; them is the even harder part of step two. That art is beyond the scope of this introduction, though a successful LeSS adoption must involve changes in mindset and insight among many groups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Voir&#039;&#039; les modèles mentaux n’est que la première étape ; les &#039;&#039;changer&#039;&#039; constitue une seconde partie bien plus difficile. Cet art est bien au-delà du sujet de cette introduction, même si une adoption réussie de LeSS implique des changements en terme d’état d’esprit et de prise de conscience au sein de très nombreuses équipes.&lt;br /&gt;
&lt;br /&gt;
A tip to better &#039;&#039;see&#039;&#039; the mental models (beliefs, chains of inference, …) playing out in the system dynamics is to ask the following question during a modeling workshop and then sketch the answers. “Let’s talk about the assumptions behind this model. What do we &#039;&#039;believe&#039;&#039; or assume in terms of facts and effects that led us here?”&lt;br /&gt;
&lt;br /&gt;
Une astuce pour mieux &#039;&#039;voir&#039;&#039; les modèles mentaux (croyances, échelle d’inférence, …) en jeu au niveau des dynamiques des systèmes est de poser les questions suivantes lors d’un atelier de modélisation puis de tracer les éléments de réponse au tableau blanc. « Parlons donc des hypothèses derrière ce modèle. Que &#039;&#039;croyons&#039;&#039;-nous ou tenons pour acquis en terme de faits et d’effets qui nous ont conduits ici ? »&lt;br /&gt;
&lt;br /&gt;
Answers are sketched on the whiteboard model, for example:&lt;br /&gt;
&lt;br /&gt;
Les éléments de réponse sont dessinés sur le tableau blanc. En voici un exemple :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-17.png.pagespeed.ic.5UIqBnJfK1.webp|frame|none|alt=|caption systems thinking-17.png]]&lt;br /&gt;
Visualizing the assumptions in our heads… our mental models.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-17-fr.png|frameless|848px|14ème schéma]]&lt;br /&gt;
&#039;&#039;Visualiser les postulats présents dans nos têtes … nos modèles mentaux.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Example: The “Faster is Slower” Dynamic ===&lt;br /&gt;
&lt;br /&gt;
=== Exemple : La dynamique « Aller plus vite c’est aller plus lentement » ===&lt;br /&gt;
&lt;br /&gt;
With the vocabulary of quick fixes, delays, positive feedback loops, and mental models, it is fascinating to see that there can be a short-term apparent improvement in a variable as the result of a quick fix, but a &#039;&#039;delayed degradation&#039;&#039; of the very same variable—the “faster is slower” dynamic. This is a recurrent dynamic in the workplace and a cause of weakness. So it is worth another illustration.&lt;br /&gt;
&lt;br /&gt;
Dorénavant, avec notre vocabulaire enrichi des termes de solutions de contournement, de boucles de feedback positives et de modèles mentaux, il est fascinant de voir qu’il peut y avoir un semblant d’amélioration à court terme sur une variable donnée, mais que cela entraîne en même temps une &#039;&#039;dégradation à retardement&#039;&#039; de cette même variable - d’où la dynamique « Aller plus vite c’est aller plus lentement ». Il s’agit d’une dynamique récurrente et d’une cause de vulnérabilité à terme. Voici un nouvel exemple illustrant cela :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The story of Microsoft Word and the&#039;&#039; &#039;&#039;&#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039;&#039;&#039; : A classic example of the short-term ‘improving’ but long-term degrading dynamic is the story of the first release of Microsoft Word for Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. It was released &#039;&#039;years&#039;&#039; later than desired. Why? &#039;&#039;Because managers tried to follow the original schedule and pushed developers to meet it&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Histoire de Microsoft Word et de&#039;&#039; &#039;&#039;&#039;&#039;&#039;la boîte à outils secrète du développeur&#039;&#039;&#039;&#039;&#039; : Un exemple typique d’une ‘amélioration’ à court terme mais d’une dynamique de dégradation à long terme est le récit de la première livraison de Microsoft Word sur Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. Le logiciel a été livré avec des &#039;&#039;années&#039;&#039; de retard par rapport à la date prévue. Pourquoi ? &#039;&#039;Parce que les managers ont essayé à tout prix de suivre le calendrier de départ et ont fait pression sur les développeurs pour le respecter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The story illustrates why &#039;&#039;wishful thinking&#039;&#039; is identified as one of the wastes in lean thinking. In this case the wishful thinking of insisting on (apparently) following a schedule, which implies the misconception or wishful thinking that development estimates are not estimates but are commitments—a common myth that propels degradation of a system.&lt;br /&gt;
&lt;br /&gt;
Cette histoire illustre pourquoi cet espoir illusoire de respecter une date souhaitée est bien identifié comme une source de gâchis dans l’approche lean. Dans le cas présent l’espoir illusoire consiste à insister (du moins apparemment) à suivre le calendrier, ce qui implique une idée fausse ou illusoire que les estimations ne sont pas de simples estimations mais des promesses - un mythe classique qui pousse à la dégradation d’un système.&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 The next model] illustrates a &#039;&#039;summary&#039;&#039; of the dynamics of what happened when the managers pushed people to evidently keep to the original schedule, and why this quick-fix reaction to slow progress appeared to make things faster in the short term but actually even &#039;&#039;slower&#039;&#039; in the long term. See the dynamic of schedule pressure and the secret toolbox. intentionally omits some deeper dynamics that are expanded and shown in See deeper dynamics of schedule pressure and the secret toolbox..&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 Le modèle suivant] illustre un &#039;&#039;résumé&#039;&#039; des dynamiques à l’œuvre lorsque des managers poussent leurs équipes à respecter à tout prix les calendriers prévisionnels, et pourquoi cette solution de contournement qui freine pourtant l’avancement des travaux semblent les faire aller plus vite à court terme mais en réalité &#039;&#039;plus lentement&#039;&#039; à long terme. Par rapport à ce qui est décrit précédemment dans la dynamique de la pression du calendrier et la boîte à outils secrète, certaines dynamiques ont été omises intentionnellement sur ce schéma et sont visibles sur le schéma dynamiques avancées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-18.png.pagespeed.ic.A7OSuu755I.webp|frame|none|alt=|caption systems thinking-18.png]]&lt;br /&gt;
The dynamic of schedule pressure and the secret toolbox.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-18-fr.png|frameless|848px|15ème schéma]]&lt;br /&gt;
&#039;&#039;Dynamique de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As a quick fix, the Microsoft managers exhorted, bribed (with potential rewards), and threatened the Word developers to keep to the original schedule. Consequently, the developers predictably pulled out their &#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039; —the many practices related to hacking out dirty code (no tests, no reviews, ignore known defects, copy-paste programming, poor design, …) to apparently deliver a feature faster. You see, developers also have &#039;&#039;quick-fix&#039;&#039; reactions for their problems.&lt;br /&gt;
&lt;br /&gt;
En solution de contournement, les managers de Microsoft ont exhorté, ont corrompu (à l’aide de primes potentielles), et ont menacé les développeurs de Word pour leur faire respecter le calendrier prévisionnel. En conséquence, les développeurs ont, de manière tout à fait prévisible, sorti leur &#039;&#039;&#039;boîte à outils secrète de développeurs&#039;&#039;&#039; - autrement dit tout un arsenal de pratiques pour pisser du code pourri (aucuns tests, aucunes revues, ignorance des anomalies connues, développement par copier-coller, mauvaise conception, …) pour développer visiblement plus vite. Vous voyez bien, les développeurs ont aussi des solutions de contournement pour régler leurs problèmes.&lt;br /&gt;
&lt;br /&gt;
The tactics seemed to have worked like magic. As the managers pressured the developers, ‘features’ were delivered quicker as people used the secret toolbox, which reinforced the belief that pressuring developers helps. But this apparent acceleration actually had a delayed effect to make things slower, which is explored next. Since management did not quickly see the delayed effect of the secret toolbox, and because they believed managers should not be frequently looking in detail at the source code or themselves be master programmers, they did not learn from this dynamic.&lt;br /&gt;
&lt;br /&gt;
Vu de l’extérieur, ces tactiques ont fonctionné à merveille. Au fur et à mesure que les managers mettaient la pression sur les développeurs, les ‘features’ étaient développées de plus en plus vite grâce à l’utilisation de la boîte à outils secrète, ce qui a renforcé la croyance en quoi mettre la pression sur les développeurs était quelque chose d’utile. Mais cette apparente accélération a eu en fait un effet à retardement qui a rendu les choses plus lentes (c’est ce que nous allons voir par la suite). Étant donné que le management n’a pas été assez rapide à voir l’effet à retardement de la boîte à outils, et parce que les managers pensent qu’ils n’ont pas besoin d’aller regarder fréquemment en détails le code source ou qu’ils n’ont pas besoin d’être eux-mêmes des développeurs très expérimentés, ils n’ont rien appris de cette dynamique.&lt;br /&gt;
&lt;br /&gt;
A closer exploration of the system dynamics shows why things went slower in the long term and why the first Word for Windows release was years later than desired, illustrated in this model…&lt;br /&gt;
&lt;br /&gt;
Le schéma ci-dessous illustre l’examen approfondie des dynamiques des systèmes montrant pourquoi les choses sont allées plus lentement à long terme et pourquoi le tout premier Word pour Windows a été livré des années en retard par rapport à la date souhaitée …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-19.png.pagespeed.ic.D24dvGHzfu.webp|systems thinking-19.png]]&lt;br /&gt;
Some deeper dynamics of schedule pressure and the secret toolbox.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-19-fr.png|frameless|848px|16ème schéma]]&lt;br /&gt;
&#039;&#039;Dynamiques avancées de la pression sur le calendrier et de la boîte à outils secrètes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Naturally, lots of dirty code eventually slowed things down. More subtly, developers would &#039;&#039;ignore&#039;&#039; the bug list of ever-increasing open defects to—instead—generate new features. This led to a long delay between the creation of a defect and its correction. It turns out that this significantly increases variability and time to fix a defect because of the compounding negative effect of a long-lived bug (for example, due to workarounds and coupling) and because developers have long forgotten the detailed context of code related to the defect and therefore need to slowly rediscover that context—with more and more dirty confusing code surrounding them.&lt;br /&gt;
&lt;br /&gt;
Naturellement, avoir une grande quantité de code de mauvaise qualité ralentie les choses. De manière beaucoup plus subtile, les développeurs ont &#039;&#039;ignoré&#039;&#039; la liste croissante d’anomalies pour privilégier la production de nouvelles features. Cela a eu pour conséquence d’avoir un délai important entre la déclaration d’une anomalie et sa correction. Il s’avère que cela a fait augmenter de manière significative la variabilité et le temps nécessaire pour corriger une anomalie en raison des effets cumulatifs négatifs liée à la nature même d’une vieille anomalie (par exemple avec la mise en place des solutions de contournement et des couplages existants entre les fonctionnalités), de l’oubli du contexte détaillé par les développeurs en relation avec l’anomalie, ces derniers mettant par conséquent plus de temps à le redécouvrir, de l’accumulation continue de code de mauvaise qualité dans le même temps.&lt;br /&gt;
&lt;br /&gt;
The astute reader may also notice the several positive feedback loops that reinforce the degradation cycle; this is one reason the product was years later than intended.&lt;br /&gt;
&lt;br /&gt;
Le lecteur avisé remarquera également plusieurs boucles causales positives renforçant le cycle de dégradation ; il s’agit de l’une des raisons expliquant le retard pris sur plusieurs années pour livrer le produit.&lt;br /&gt;
&lt;br /&gt;
Solution? The lean thinking &#039;&#039;Stop and Fix&#039;&#039; and &#039;&#039;Go See&#039;&#039; principles. &#039;&#039;First&#039;&#039; , rather than trying to go faster when there are problems, manager-teachers encourage people to go &#039;&#039;slower&#039;&#039; and help them learn to see system dynamics and root causes, and to fix these—to improve the &#039;&#039;system&#039;&#039; of development. By going slower, Toyota—the masters of lean thinking—has become one of the fastest companies around. &#039;&#039;Second&#039;&#039; , for managers to &#039;&#039;go see at the real place of work&#039;&#039; to learn what is going on. The “real place” in software development is the code, which suggests that first-level managers are master programmers who are frequently evaluating the code.&lt;br /&gt;
&lt;br /&gt;
Une solution ? L’approche lean avec les principes &#039;&#039;Arrêter et corriger&#039;&#039; et &#039;&#039;Aller voir&#039;&#039;. &#039;&#039;Premièrement&#039;&#039;, plutôt que d’essayer d’aller plus vite lorsqu’il y a des problèmes, des managers-formateurs encouragent les gens à aller plus &#039;&#039;lentement&#039;&#039; et à les inciter à apprendre les dynamiques des systèmes, les causes racines et à les corriger pour améliorer le &#039;&#039;système&#039;&#039; du développement. En allant plus lentement, Toyota - les maîtres de l’approche lean - est devenue l’une des entreprises les rapides du monde. _Deuxièmement, les managers doivent &#039;&#039;aller voir ce qui se passe sur le vrai lieu de travail&#039;&#039; pour apprendre ce qu’il se passe. Le « vrai lieu » dans le développement logiciel c’est le code, ce qui implique que les managers de proximité sont des développeurs expérimentés qui évalueront le code fréquemment.&lt;br /&gt;
&lt;br /&gt;
Microsoft people did not reflect on the situation until after release. When they did finally hold a retrospective, it led to a &#039;&#039;zero-defects&#039;&#039; policy, meaning that the first priority was to fix known bugs in the code under development—to drive down to zero the open-defects list before writing more new-feature code.&lt;br /&gt;
&lt;br /&gt;
Les personnes de chez Microsoft n’ont pas réfléchi sur la situation que bien après la livraison. Lorsqu’ils ont fini par faire une rétrospective, cela a amené à une politique du &#039;&#039;zéro défaut&#039;&#039;, cela signifie que la première priorité était de corriger les anomalies connues dans le code en cours de développement afin d’aller vers du zéro anomalie ouverte dans la liste des anomalies avant d’écrire du code pour une nouvelle feature.&lt;br /&gt;
&lt;br /&gt;
== Seeing (and Hearing) Local Optimization ==&lt;br /&gt;
&lt;br /&gt;
== Voir (et entendre) l’optimisation locale ==&lt;br /&gt;
&lt;br /&gt;
“Everyone is doing their best yet overall systems throughput is degrading. How can that be?” This is the paradox of &#039;&#039;&#039;local optimization&#039;&#039;&#039; —when a person or departmental decision maker optimizes for the local view or self-interest. The party making the decision frequently &#039;&#039;believes they are making the best decision&#039;&#039; , but because ‘best’ is a local optimization, in fact it sub-optimizes overall system throughput. This is a result of “silo mentality,” misunderstanding, fear, limited information, delayed feedback, ignorance, careerism, avarice, and other common &#039;&#039;organizational learning disorders&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
« Chacun fait de son mieux, mais malgré tout le flux de production du système se dégrade. Comment cela est-il possible ? ». Il s’agit du paradoxe de &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039; - autrement dit c’est lorsqu’une personne à titre individuel ou un responsable de département prend une décision d’un point de vue local ou dans son propre intérêt. Les personnes prenant ce type de décision &#039;&#039;croient fréquemment qu’ils prennent la meilleure décision&#039;&#039;, mais parce que ‘meilleure’ est ici synonyme d’optimisation locale, cela a pour résultat une sous-optimisation globale du flux du système. Ceci est le résultat d’une « mentalité de silo », d’incompréhension, de peur, de restrictions d’informations, de feedbacks à retardement, d’ignorance, de carriérisme, d’avarice et de bien d’autres &#039;&#039;dysfonctionnements d’apprentissages organisationnels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A small product group of 30 people does not have the time or money to engage in much nonsense or waste. But large companies, with large product groups, centralized process and tool groups, a centralized “project management office,” and so forth, seem to have raised local optimization and waste to an art form. Government bureaucracies are the quintessential example, of course. As such, when you serve as a guide in large-scale agile adoption, &#039;&#039;seeing&#039;&#039; (or &#039;&#039;hearing&#039;&#039; ) and dealing with local optimization is singularly vital.&lt;br /&gt;
&lt;br /&gt;
Une petite équipe produit de 30 personnes n’a ni temps ni l’argent pour s’engager dans ce genre de non-sens ou de gâchis. Mais les grandes entreprises avec de grands groupes produit, des processus centralisés et des groupes outils, un « bureau de gestion de projet » centralisé, et ainsi de suite, semblent avoir élevé l’optimisation locale et le gâchis à une forme d’art. Les bureaucraties gouvernementales en sont bien sûr la quintessence. En conséquence, lorsque vous servez de guide dans une adoption agile à grande échelle, &#039;&#039;voir&#039;&#039; (ou &#039;&#039;entendre&#039;&#039;) et s’occuper de l’optimisation locale est tout simplement quelque chose de vital.&lt;br /&gt;
&lt;br /&gt;
For example, the legal and corporate security departments put in place a policy that seems terribly important from their perspective. In the aim of preventing loss of intellectual property (IP), the legal department decrees “no one shall put any information on the walls.” Or, in response to cost-cutting pressure, the facilities management says, “It is important to ensure our walls are not dirty or damaged.” And thus they shut down a practice in lean thinking, visual management (which is usually done on walls), and they inhibit a well-known innovation practice, group whiteboard work. The lawyers may succeed in reducing loss of IP (actually, that is questionable), and the facilities people will succeed in keeping the walls clean—at the cost of inhibiting the product development group from innovating and collaborating. Finally, the company falls behind with less and less IP even worth protecting because tools for innovation and delivering fast have been disallowed, but the lawyers have successfully fulfilled their mandate from the executive team to “ensure our IP is protected.” And the &#039;&#039;furniture police&#039;&#039; have clear walls. &#039;&#039;They have done their best&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Par exemple, les départements juridiques et sécurité mettent en place des politiques qui leurs semblent très importantes de leurs points de vue. Dans l’objectif de prévenir la perte de propriété intellectuelle, le département juridique peut décréter « il est interdit d’afficher tout type d’information sur les murs. ». Or, le département des immeubles soumis de son côté, à une pression de politique de réductions de coûts peut surenchérir en disant : « Il est important de s’assurer que nos murs ne soient ni sales ni abîmés ». Et ainsi s’arrête le management visuel qui est l’une des pratiques de l’approche lean (le management visuel se faisant habituellement sur les murs), et ils inhibent également une pratique d’innovation bien connue à savoir le travail de groupe devant un tableau blanc. Les juristes réussiront peut être à réduire la perte de propriété intellectuelle (ce qui en réalité devrait poser question), et les gens des immeubles réussiront à garder leurs murs propres - mais au prix d’inhiber le groupe de développement produit dans sa capacité d’innover et de collaborer. Finalement, l’entreprise se laissera distancer par la concurrence avec de moins en moins de propriété intellectuelle valant la peine d’être défendue parce que les outils permettant l’innovation et de livrer rapidement ont été bannis, mais les juristes auront rempli leur mandat vis-à-vis de la direction de « s’assurer que la propriété intellectuelle est protégée ». Et la police de la logistique aura nettoyé les murs. &#039;&#039;Ils ont fait de leur mieux&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The following is a real e-mail quote from the &#039;&#039;FURNITURE POLICE&#039;&#039; in one organization that dissallowed visual management on the walls. Can you identify the local optimizations and mental models driving this?&lt;br /&gt;
&lt;br /&gt;
Ce qui suit est extrait d’un vrai message électronique de la &#039;&#039;POLICE DE LA LOGISTIQUE&#039;&#039; dans une organisation qui a banni le management visuel sur les murs. Pouvez-vous identifier les optimisations locales et les modèles mentaux qui sont derrière tout ça ?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;Individual work cubic partition can be personalized. But things obvious higher than the partition or harming the office environment’s harmony are restricted.&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;_Les [https://fr.wikipedia.org/wiki/Bureau_%C3%A0_cloisons bureaux à cloisons] peuvent être personnalisés. Mais tout ce qui visible au-dessus de la cloison ou qui perturbe l’harmonie de l’environnement de bureau est interdite.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
We also see local optimization in centralized groups that make software tool choices for others. The common mindset is to choose a tool that is best at reducing some supposed cost (curiously, these groups seldom recommend free open source tools) or best at doing something complicated or best for the work of one specialized worker role (even though &#039;&#039;everybody&#039;&#039; has to use the tool), rather than maximizing the global goal of faster system throughput of value to customers.&lt;br /&gt;
&lt;br /&gt;
Nous constatons aussi des optimisations locales dans les groupes centralisés dont le rôle est de choisir les logiciels pour les autres personnes de l’entreprise. La croyance la plus répandue que cette démarche est qu’il s’agit de ce qu’il y a de mieux pour réduire les coûts d’achats (curieusement ces mêmes groupes recommandent rarement les logiciels libres gratuits) ou ce qu’il y a de mieux pour accomplir une tâche compliquée ou ce qu’il y a de mieux pour l’accomplissement du travail d’un seul type de travailleur (même si &#039;&#039;tout le monde&#039;&#039; est censé devoir utiliser l’outil), plutôt que de maximiser l’objectif de l’entreprise qui est d’avoir un système de flux de production de la valeur plus rapide pour les clients.&lt;br /&gt;
&lt;br /&gt;
In large-scale adoption of Scrum or agile principles, most of the “Yes, but …” issues that are raised are examples of local optimization, such as, “&#039;&#039;Yes, but…what about management reporting&#039;&#039;?” or more generally, “&#039;&#039;Yes, but…what about &amp;lt;special case=&amp;quot;&amp;quot;&amp;gt;&#039;&#039;?” Then, policies and practices are twisted around, serving the goal of reporting or some other secondary aim rather than the primary goal of optimizing for fast value throughput. Sometimes we see &#039;&#039;local optimization for the extreme or rare case&#039;&#039; . For example, a person responsible for making a centralized tool choice for the enterprise presents a scenario for a complex or rare case of use, and then chooses the tool that fits that, sub-optimizing for a 5 percent case instead of optimizing for ease and speed for the 95 percent case.&amp;lt;/special&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans les adoptions de Scrum ou des principes agiles à grande échelle, la plupart des problématiques de type « Oui, mais … » qui sont soulevées sont des exemples de sous-optimisations, comme par exemple « &#039;&#039;Oui, mais … qu’en est-il des comptes-rendus auprès du management&#039;&#039; ? » ou encore de manière plus générale « * Oui, mais … qu’en est-il de … * ? ». Alors, les principes et les pratiques sont dévoyés, pour servir soit l’objectif de rendre compte soit n’importe quel autre objectif secondaire plutôt que suivre l’objectif d’optimiser le flux de valeur produite. De temps en temps, nous voyons des &#039;&#039;&#039;optimisations locales dans certains cas rares ou extrêmes&#039;&#039;&#039;. Par exemple, une entreprise doit choisir un outil centralisé répondant à un certain nombre de cas d’utilisations possibles dont un cas extrêmement rare ou complexe, la personne, en charge de faire ce choix, choisit un outil correspondant à un cas unique d’utilisation, sous-optimisant ainsi l’ensemble du système pour un cas représentant uniquement 5% des cas d’utilisation au lieu de l’optimiser pour la majorité des 95% des autres cas d’utilisations.&lt;br /&gt;
&lt;br /&gt;
Other local optimizations are due to ignorance of new ways of working. This is especially common in large-scale product groups. For example, we once helped a large networking product group in Europe adopt Scrum and the practice of &#039;&#039;continuous integration&#039;&#039; (CI) combined with a CI system that continually integrated, built, and automatically tested the product. After some time, an outside traditional manager inspected what was going on, and recommended the integration practices should be changed—because there was no written integration plan for how a human integration manager should manually integrate all the software, and of course, there was no integration manager. They wanted to ‘optimize’ around the work of an integration manager that was no longer needed. They could not see that their entire old-fashioned model of work had been eliminated with CI. This story repeats in all the departments of a large established product: local optimization around the &#039;&#039;existing&#039;&#039; ways of work, such as manual test, a separate architecture department, component teams, and so on. A coach working to introduce large-scale Scrum at the enterprise level has a &#039;&#039;mountain&#039;&#039; of similar local optimization thinking to deal with.&lt;br /&gt;
&lt;br /&gt;
D’autres optimisations locales sont dues, quant à elles, à l’ignorance des nouvelles manières de travailler. C’est quelque chose de très répandue et tout spécialement dans les groupes produit à grande échelle. Par exemple, un jour nous avons aidé un groupe produit distribué à travers l’Europe à adopter d’une part Scrum et d’autre part la pratique de &#039;&#039;l’intégration continue&#039;&#039; (CI) le tout sous la forme d’un système d’intégration continue dédié intégrant, compilant, testant automatiquement de manière continue le produit. Après quelques temps, un manager, que l’on pourrait qualifier de traditionnel, extérieur au groupe est venu inspecter ce qu’il se passait. Celui-ci a recommandé que les pratiques d’intégration devraient être changées en raison de l’absence de schéma d’intégration global permettant à un responsable d’intégration de faire manuellement l’intégration de l’ensemble du logiciel ; une absence de schéma pour la bonne raison qu’il n’y avait plus besoin de responsable d’intégration au sein de l’organisation. Il voulait ‘optimiser’ le travail d’un responsable d’intégration qui n’existait plus. Il était dans l’impossibilité de voir que la totalité de l’ancienne manière de faire les choses avait disparu avec l’intégration continue. Cette histoire se répéta dans l’ensemble des départements du groupe produit : il y a avait des optimisations locales partout autour des façons de faire existantes, tels que les tests manuels, le département d’architecture séparé des équipes, les équipes composants, etc. N’importe quel coach dont la tâche consistait à introduire Scrum à grande échelle au niveau de l’organisation avait une &#039;&#039;montagne&#039;&#039; d’optimisations locales à penser à gérer.&lt;br /&gt;
&lt;br /&gt;
In lean thinking and agile methods, the focus is on global systems goals: Deliver value fast with high quality and morale—&#039;&#039;&#039;global optimization&#039;&#039;&#039; . Try to consider decisions in light of this goal. To develop an “optimize the whole” culture, challenge all decisions and policies with the question:&lt;br /&gt;
&lt;br /&gt;
Dans l’approche lean et dans les méthodes agiles, l’accent est mis sur les objectifs du système dans sa globalité : livrer de la valeur de grande qualité au plus vite tout en gardant le moral des équipes au plus haut - autrement dit une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039;. Essayer de reconsidérer vos décisions à la lumière de cet objectif. Pour développer une culture de « l’optimisation du tout », remettez donc en cause toutes les décisions et les règles avec la question suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Does this decision or policy focus on delivering value to the external customer fast, or does it focus on the interests of a department, person, internal policy/practice, or rare case?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;** Est-ce que cette décision ou cette règle se focalise-t-elle sur livrer de la valeur au client externe au plus vite, ou se focalise-t-elle sur les intérêts d’un département, d’une personne, d’une pratique/règle interne, ou d’un cas rarissime ?**&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
In LeSS, the Product Owner is responsible for choosing high-value goals that &#039;&#039;&#039;could lead to potentially shippable product (at the end of the Sprint) and that maximize the desired impacts and that delight the customer, while maintaining a sustainable pace and high engineering quality&#039;&#039;&#039;. That explicit goal is meant to orient the system toward global rather than local optimization.&lt;br /&gt;
&lt;br /&gt;
Dans LeSS, le Product Owner est responsable pour choisir ces objectifs à haute valeur qui &#039;&#039;&#039;pourrait mener à un produit potentiellement livrable (à la fin du Sprint) maximisant les impacts souhaités et réjouissant le client tout en maintenant un rythme soutenable et une haute qualité d’ingénierie&#039;&#039;&#039;. Cet objectif explicite est destiné à orienter le système vers son optimisation globale plutôt que vers une optimisation qui ne serait que locale.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In addition to becoming a systems thinker yourself, encourage others to learn more about this topic. We suggest you to try getting together at a whiteboard with colleagues to sketch a causal loop diagram, so that &#039;&#039;being&#039;&#039; systems thinkers and &#039;&#039;doing&#039;&#039; systems thinking are connected at the workplace.&lt;br /&gt;
&lt;br /&gt;
En plus de devenir un pratiquant de l’approche systémique vous-même, encouragez donc les autres à en apprendre plus sur ce sujet. Nous vous suggérons d’essayer de rassembler quelques-uns de vos collègues autour d’un tableau blanc et d’y dessiner des diagrammes de boucles causales, afin que les architectes des systèmes et les pratiquants de l’approche systémique soient réunis en un seul endroit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|group%20cld%20modeling.jpg]]&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-20-fr.png|frame|none|alt=|caption systems thinking-20.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
Séance d’approche systémique. Réalisation d’un diagramme de boucle cause à plusieurs mains dans l’objectif d’avoir une conversation.&lt;br /&gt;
&lt;br /&gt;
== Recommended Readings ==&lt;br /&gt;
&lt;br /&gt;
== Lectures recommandées ==&lt;br /&gt;
&lt;br /&gt;
* W. Edwards Deming’s [http://www.amazon.com/Out-Crisis-W-Edwards-Deming-ebook/dp/B00653KTES/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601625&amp;amp;sr=8-1&amp;amp;keywords=out+of+the+crisis &#039;&#039;Out of the Crisis&#039;&#039;] is a master work by arguably the most well-known systems thinker and quality expert. It opens with the modest goal, “The aim of this book is transformation of the style of American management… It requires a whole new structure, from foundation upward.” Deming also advocates the &#039;&#039;System of Profound Knowledge&#039;&#039; in which managers (1) appreciate there is a &#039;&#039;system&#039;&#039; , (2) understand common-cause and special-cause variation (queueing theory is related to variation), (3) understand limitations of knowledge and reasoning mistakes, and (4) know credible psychology and social research results so that behavior- or motivation-related policies are &#039;&#039;not&#039;&#039; based on “common sense.” The core of the book centers around his famous &#039;&#039;14 Points for Management&#039;&#039; , including (for example), “&#039;&#039;Eliminate management by objective. Eliminate management by numbers, numerical goals. Substitute leadership&#039;&#039; .”&lt;br /&gt;
* [https://www.amazon.fr/Hors-crise-W-Edwards-Deming/dp/2717843930/ &#039;&#039;Hors de la Crise&#039;&#039;] de W. Edwards Deming est un ouvrage de référence par, sans conteste, le plus connu des penseurs systémiques et des experts sur la qualité. Cet ouvrage commence par un objectif modeste : « l’objectif de ce livre est la transformation du style du management américain … ce qui exige une toute nouvelle structure de fonds en combles. ». Deming prône un &#039;&#039;Système de connaissances approfondies&#039;&#039; dans lequel les managers (1) reconnaissent qu’il y a un &#039;&#039;système&#039;&#039;, (2) qu’ils sont en mesure de comprendre les facteurs les plus répandus et les facteurs spéciaux de variations au sein du système (la théorie des files d’attente est liée à ce phénomène de variation), (3) qu’ils sont en mesure de comprendre que les connaissances sont limitées et qu’il y a des erreurs de raisonnements, et (4) que la psychologie et les recherches en sciences sociales jouent des rôles tout à fait crédibles dans l’objectif de comprendre que les règles régissants les comportements ou en lien avec la motivation des individus ne soient pas basés sur le seul « bon sens ». Le cœur de l’ouvrage tourne autour des célèbres &#039;&#039;14 points pour le management&#039;&#039;, y compris par exemple « &#039;&#039;Éliminer le management par les objectifs. Éliminer le management par les nombres, par les objectifs par les nombres. Y substituer le leadership&#039;&#039;»&lt;br /&gt;
* Jay Forrester’s [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601681&amp;amp;sr=8-1&amp;amp;keywords=industrial+dynamics &#039;&#039;Industrial Dynamics&#039;&#039;] is the classic text on system dynamics—well written and insightful. Although written in the early 1960s, it is as relevant today as when published. It goes beyond cause-effect modeling to also model the flow and inventories of information, money, and material in systems. The book includes formal mathematical modeling but this is not obligatory to appreciate system dynamics.&lt;br /&gt;
* [https://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ &#039;&#039;Industrial Dynamics&#039;&#039;] de Jay Forrester est un classique du genre sur les dynamiques des systèmes - très bien écrit et très instructif. Même si cet ouvrage a été écrit au début des années 1960, il est toujours aussi pertinent aujourd’hui. Il va au-delà de la modélisation des causes à effets pour modéliser également le flux et les stocks d’informations, d’argent et de matériaux au sein d’un système. Le livre contient également une modélisation mathématique formelle de ces dynamiques, toutefois la lecture de cette dernière reste facultative quant à apprécier la qualité de l’ouvrage.&lt;br /&gt;
* Weinberg’s &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039; and &#039;&#039;An Introduction to General Systems Thinking&#039;&#039; are worthwhile. Written from the perspective of an experienced consultant in systems development.&lt;br /&gt;
* Les ouvrages [https://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039;] et [https://www.amazon.fr/Introduction-General-Systems-Thinking-Weinberg/dp/0932633498/ &#039;&#039;An Introduction to General Systems Thinking&#039;&#039;] de Gerald Weinberg sont intéressants. Il sont écrits du point de vue d’un consultant expérimenté en développement de systèmes.&lt;br /&gt;
* Senge’s [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601715&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline &#039;&#039;The Fifth Discipline&#039;&#039;] is a classic that advocates the need for leadership to apply systems thinking (it is the &#039;&#039;fifth&#039;&#039; discipline) and other key disciplines for a great, sustainable enterpise. The others include leaders with (1) personal mastery and (2) reflection on their beliefs and faulty reasoning, the (3) definition and communication of a meaningful shared vision, and (4) the ability of teams to learn. We recommend ignoring—at least during the first few years of practice—the ‘archetypes’ notion presented in the book. It was well meant as a learning aid but has been observed to distract and intimidate people from learning and applying basic system dynamics modeling. The ‘archetypes’ are not part of original system dynamics.&lt;br /&gt;
&lt;br /&gt;
[https://www.amazon.fr/cinqui%C3%A8me-discipline-Levier-organisations-apprenantes/dp/2212559372/ &#039;&#039;La cinquième discipline&#039;&#039;] est un autre classique du genre qui prône que l’encadrement d’une entreprise devrait appliquer l’approche systémique (autrement dit la &#039;&#039;cinquième&#039;&#039; discipline) ainsi que d’autres disciplines-clés toutes aussi importantes en vue d’obtenir une entreprise durable. Ces autres disciplines que les dirigeants devraient appliquer sont (1) une maîtrise personnelle des aspirations, (2) une réflexion sur leurs propres croyances et raisonnements erronés, (3) la définition et la communication d’une vision partagée ayant du sens, et (4) la capacité des équipes à apprendre. Nous vous recommandons d’ignorer - du moins dans un premier temps pendant vos premières années de pratiques - le concept d’archétypes présenté dans le livre. Ce concept avait pour but d’être une aide à l’apprentissage de la cinquième discipline mais nous avons observé qu’il était soit une source de distraction soit qu’il intimidait les lecteurs quant à leur apprentissage et à l’application de la modélisation des dynamiques des systèmes. Les ‘archetypes’ ne font pas partie à l’origine des dynamiques des systèmes.&lt;br /&gt;
&lt;br /&gt;
* [http://www.amazon.com/Fifth-Discipline-Fieldbook-Strategies-Organization-ebook/dp/B00JTCJEO8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601809&amp;amp;sr=8-1&amp;amp;keywords=The+Fifth+Discipline+Fieldbook &#039;&#039;The Fifth Discipline Fieldbook&#039;&#039;] is an in-depth resource, written from the viewpoint of many practitioners and consultants.&lt;br /&gt;
&lt;br /&gt;
*[https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ &#039;&#039;La 5ème discipline - le guide de l’organisation apprenante&#039;&#039;] est une source extrêmement riche sur l’approche systèmique écrite du point de vue des pratiquants de cette approche et de consultants.&lt;br /&gt;
&lt;br /&gt;
* The organizational-learning writings from Argyris, Putnam, McLain, and Schön. Important concepts include &#039;&#039;double-loop learning&#039;&#039; and &#039;&#039;high-advocacy/high-inquiry dialogue&#039;&#039;. Classic works include [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] and [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les écrits d’Argyris, Outnam, McLain et Schön sur les apprentissages organisationnels comme [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] et [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;] abordent des concepts importants tels que la &#039;&#039;double-boucle apprenante&#039;&#039; et le &#039;&#039;dialogue grand-plaidoyer/grand-réquisitoire&#039;&#039;.&lt;br /&gt;
* The publications and resources available through the [https://www.solonline.org/ &#039;&#039;Society for Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les publications et les ressources de la &#039;&#039;Society for Organizational Learning&#039;&#039;](https://www.solonline.org/).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===== Notes: =====&lt;br /&gt;
&lt;br /&gt;
# Senge wrote &#039;&#039;The Fifth Discipline&#039;&#039; , on systems thinking and learning organizations, named “one of the seminal management books of the last 75 years” by the &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94].&lt;br /&gt;
# Another reason: Believing more control is possible than actually is. Complexity science suggests fundamental limits on predicting and controlling semi-chaotic social systems [Stacey07]. This is a rather large can of worms that will remain unopened in this book.&lt;br /&gt;
# Macroeconomics, psychology, sociology, and biology are exceptions, among many others.&lt;br /&gt;
# ‘Basic’ does not mean trivial or easy to solve. For example, ‘motivation’ and ‘quality’ are basic but not easy issues.&lt;br /&gt;
# &#039;&#039;Feedback loops&#039;&#039; is occasionally used in this book in the colloquial sense of feedback, rather than this system dynamics sense.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;La cinquième discipline&#039;&#039; écrit par Senge sur l’approche systèmique et les organisations apprenantes a été nommé « l’un des livres les plus novateurs sur le management de ces 75 dernières années » par la &#039;&#039;Harvard Business Review.&#039;&#039; [Senge94]. &lt;br /&gt;
# Une autre raison : Croire que plus de contrôle est possible qu’il ne l’est actuellement. La science de la complexité montre qu’il existe des limites en terme de prédiction et de contrôle des systèmes sociaux semi-chaotiques [Stacey07]. C’est une énorme boîte de Pandore qui restera enfermée dans ce livre. &lt;br /&gt;
# Macro économie, psychologie, sociologie et biologie sont des exemples d’exceptions parmi d’autres &lt;br /&gt;
# ‘Basique’ ne signifie pas trivial ou facile à résoudre. Par exemple, les problématiques de ‘motivation’ et de ‘qualité’ sont des problématiques basiques mais elles ne sont pas faciles à résoudre. &lt;br /&gt;
# &#039;&#039;Les boucles de feedback&#039;&#039; sont parfois utilisées dans ce livre dans le sens littéral du terme, plutôt dans le sens des dynamiques des systèmes&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14226</id>
		<title>LeSS - Approche systémique</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14226"/>
		<updated>2020-10-27T22:05:15Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Nicolas Mereaux]]&lt;br /&gt;
[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br/&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/principles/systems-thinking.html]&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux&amp;lt;br/&amp;gt;&lt;br /&gt;
Relecteur : Fabrice Aimetti, Christophe Gesché&amp;lt;br/&amp;gt;&lt;br /&gt;
Date : 27/10/2018&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traduction :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[LeSS - Portail Principes]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Systems Thinking =&lt;br /&gt;
&lt;br /&gt;
= Approche systémique =&lt;br /&gt;
&lt;br /&gt;
I took a speed reading course and read “War and Peace” in twenty minutes. It involves Russia. —Woody Allen&lt;br /&gt;
&lt;br /&gt;
J’ai pris un cours de lecture rapide puis j’ai lu « Guerre et Paix » en vingt minutes. Cela parle de la Russie.&lt;br /&gt;
&lt;br /&gt;
“No matter what we do, the number of defects in our backlog remains about the same,” a manager told us; this for a 15 MSLOC C and C++ product with several hundred developers where we were working. What’s going on? Systems thinking may help. In small groups the forces at play are more quickly seen and informally understood, but in large product development—or any large system—it’s tough. Gerry Weinberg highlights two decisive factors in this situation:&lt;br /&gt;
&lt;br /&gt;
« Quoi que nous fassions, le nombre d’anomalie dans notre &#039;&#039;backlog&#039;&#039; reste identique. » nous a dit un jour un manager en évoquant un produit de près de 15 millions de lignes de code sur lequel plusieurs centaines de développeurs étaient en train de travailler. Que pouvait-il bien se passer ? L’approche systémique peut s’avérer utile dans ce cas comme dans d’autres. En petits groupes, les forces en présence peuvent rapidement être identifiées et comprises de manière informelle, mais dans le cadre du développement d’un gros produit ou de n’importe quel gros système, c’est difficile. Gerry Weinberg met en avant deux facteurs décisifs dans ce genre de situation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Weinberg-Brooks’ Law&#039;&#039;&#039;: More software projects have gone awry from management’s taking action based on &#039;&#039;&#039;&#039;&#039;incorrect system models&#039;&#039;&#039;&#039;&#039; than for all other causes combined.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causation Fallacy&#039;&#039;&#039;: Every effect has a cause… and we can tell which is which. [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Loi de Weinberg-Brooks&#039;&#039;&#039; : De plus en plus de projets informatiques sont partis de travers après que le management ait pris des décisions basées sur des &#039;&#039;&#039;modèles systémiques incorrects&#039;&#039;&#039; plus que pour toutes autres causes combinées.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Erreur de causalité&#039;&#039;&#039; : Chaque effet a une cause … et nous pouvons dire desquelles il s’agit. [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
These reflect the impact of our &#039;&#039;&#039;mental models&#039;&#039;&#039; on the system, a subject that will be revisited later in this section.&lt;br /&gt;
&lt;br /&gt;
Ces deux facteurs reflètent bien l’impact de nos &#039;&#039;&#039;modèles mentaux&#039;&#039;&#039; sur le système, un sujet que nous reverrons plus tard dans cette section.&lt;br /&gt;
&lt;br /&gt;
Problems stemming from mental models and assumptions are one issue. Another is that large-scale adoption of Scrum, lean thinking, and agile principles is not isolated to the development group. It bumps into product management, budgeting, beta-testing, launch, and governance and HR policies. Accordingly, in large-scale agile adoption it is useful to be able to get together with colleagues and &#039;&#039;effectively reason&#039;&#039; about the mental models, causal relations, feedback loops, and control mechanisms (or illusions of control) in a big system that is about to be seriously &#039;&#039;perturbed.&#039;&#039; Systems thinking is one of those reasoning tools.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résultant de nos modèles mentaux et de nos postulats sont un point à traiter. Un autre point est l’adoption à grande échelle de Scrum, de l’approche lean et des principes agiles en dehors du domaine du développement. Ce point est aussi présent dans la gestion de produit, les budgets, les tests, la commercialisation, la gouvernance et la politique RH. En conséquence, dans les adoptions agiles à grande échelle, il est utile de se réunir avec des collègues et de &#039;&#039;réfléchir en profondeur&#039;&#039; sur les modèles mentaux, les relations causales, les boucles de &#039;&#039;feedback&#039;&#039; et les mécanismes de contrôles (ou les illusions de contrôle) dans un gros système qui va être sérieusement &#039;&#039;pertubé&#039;&#039;. L’approche systémique est l’un de ces outils de réflexion.&lt;br /&gt;
&lt;br /&gt;
In 1958, the &#039;&#039;Harvard Business Review&#039;&#039; published [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”] a landmark paper by Jay Forrester, MIT Sloan School professor. This paper spurred the movement of systems thinking in business education, and the MIT Sloan School of Management became known for educating people in &#039;&#039;&#039;system dynamics&#039;&#039;&#039;. System dynamics is sometimes treated as a synonym for &#039;&#039;&#039;systems thinking&#039;&#039;&#039; , though the latter is a more general term.&lt;br /&gt;
&lt;br /&gt;
En 1958 la &#039;&#039;Harvard Business Review&#039;&#039; a publié un article de Jay Forrestor, professeur au MIT Sloan School, qui a fait date [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”]. Cet article a lancé le mouvement de l’approche systémique dans le domaine des formations en gestion d’entreprise et la MIT Sloan School of Management devint célèbre pour ses formations en &#039;&#039;&#039;dynamique des systèmes&#039;&#039;&#039;. Le terme de dynamique des systèmes est parfois utilisé comme synonyme d’&#039;&#039;&#039;approche systémique&#039;&#039;&#039;, même si ce dernier est un terme beaucoup plus général.&lt;br /&gt;
&lt;br /&gt;
MIT also attracted other system-dynamics-oriented researchers such as Peter Senge.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-1 1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le MIT a également attiré d’autres chercheurs intéressés par la dynamique systémique tel que Peter Senge[^1].&lt;br /&gt;
&lt;br /&gt;
Consistent with &#039;&#039;Weinberg-Brook’s Law&#039;&#039;, Forrester’s research showed that decision makers who were given dynamic models of a business system and asked to improve their output performance, &#039;&#039;usually made them run worse&#039;&#039; [http://www.amazon.com/The-Fifth-Discipline-Fieldbook-Organization/dp/0385472560/ref=sr_1_fkmr0_3?ie=UTF8&amp;amp;qid=1413528034&amp;amp;sr=8-3-fkmr0&amp;amp;keywords=The+Fifth+Discipline+%EF%BF%BCFieldbook [SKRRS94]]. The observation was that most people have weak judgement on how to fundamentally improve systems, usually applying incorrect “common sense” and quick-fix ‘solutions’ that do not create long-lasting systemic improvement.&lt;br /&gt;
&lt;br /&gt;
En corrélation avec la loi de &#039;&#039;Weinberg-Brook&#039;&#039;, Jay Wright Forrester a montré que les décideurs à qui il avait été donné des modèles dynamiques de systèmes opérationnels et à qui il avait été demandé d’améliorer la performance opérationnelle, &#039;&#039;n’avaient fait généralement qu’empirer les choses&#039;&#039; [https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ [SKRRS94]]. Il en est ressorti d’ailleurs que la plupart des personnes évaluaient mal la manière dont il faut améliorer les systèmes, et appliquaient généralement leur « bon sens », en mettant en place des solutions de contournement qui n’apportent aucune amélioration systémique à long terme.&lt;br /&gt;
&lt;br /&gt;
Why is the behavior of a large development group (a system) not understood or guided skillfully? The answer lies, in part, in the behavior of stochastic systems with queues and variability, as explored in the [https://less.works/less/principles/queueing_theory.html Queueing Theory] LeSS principle. And the same answer lies in &#039;&#039;control theory&#039;&#039;: Most systems of interest—such as a product development group—have complex positive and negative feedback loops and nonlinear behavior. The behavior of these systems defies our gut instinct. And then there is the minor issue of &#039;&#039;people&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pourquoi le comportement d’un groupe de développement de grande taille (autrement dit un système) n’est-il pas compris ou guidé de manière compétente ? La réponse réside, en partie, dans le comportement des systèmes stochastiques avec les files et les variabilités comme nous avons pu l’évoquer avec le principe LeSS de la [https://less.works/less/principles/queueing_theory.html théorie des files d’attentes]. Et c’est la même réponse qui est au cœur de la &#039;&#039;théorie du contrôle&#039;&#039; : la plupart des systèmes d’intérêt - tel qu’un groupe de développement de produit - ont des boucles de &#039;&#039;feedback&#039;&#039; positives et négatives ainsi qu’un comportement non linéaire. Le comportement de ces systèmes défient nos instincts. Et puis il y a la problématique mineure des &#039;&#039;gens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In summary, reasons for not being skillful in fathoming or guiding a big system include (but are not limited to):&lt;br /&gt;
&lt;br /&gt;
En résumé, les raisons expliquants l’incompétence à maîtriser ou à guider un gros systèmes sont (liste non exhaustive) :&lt;br /&gt;
&lt;br /&gt;
* lack of knowledge about the system dynamics, feedback loops, nonlinear systems behavior, and unintended consequences in workplace systems&lt;br /&gt;
* un manque de connaissance des dynamiques des systèmes, des boucles de &#039;&#039;feedback&#039;&#039;, du comportement non linéaire des systèmes, et des conséquences inattendues dans les systèmes sur le lieu de travail.&lt;br /&gt;
* not understanding root causes of problems (and how to find)&lt;br /&gt;
* une incompréhension des causes racines des problèmes (et de comment les trouver)&lt;br /&gt;
** &#039;&#039;causes,&#039;&#039; not cause; in systems thinking one sees that there are multiple, indirect, and dynamic causes to problems&lt;br /&gt;
** &#039;&#039;les causes&#039;&#039;, non la cause ; en approche systémique, nous savons que les causes des problèmes sont multiples, indirectes et dynamiques&lt;br /&gt;
* not knowing if or why quick-fix or local-department decisions degraded overall delivery performance.&lt;br /&gt;
* l’incapacité à savoir si ou pourquoi une solution de contournement ou une décision locale dégrade la performance globale opérationnelle.&lt;br /&gt;
&lt;br /&gt;
In short, not being systems thinkers.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-2 2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En bref, ne pas utiliser l’approche systémique[^2].&lt;br /&gt;
&lt;br /&gt;
These reasons are consequential at the intersection of management and large-scale adoption of lean and agile principles. The leadership team is part of the system being perturbed; if they do not apply systems thinking, they could &#039;&#039;really&#039;&#039; perturb it—and not in a good way!&lt;br /&gt;
&lt;br /&gt;
Ces raisons sont la conséquence de l’intersection du management et de l’adoption des principes lean et agile. L’équipe de direction fait partie du système qui est pertubé ; si elle n’applique pas l’approche systémique, elle pourrait &#039;&#039;vraiment&#039;&#039; le perturber - et pas de la bonne façon.&lt;br /&gt;
&lt;br /&gt;
As a summary of systems thinking insight, we like the [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 ‘laws’] described in [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413531002&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline The Fifth Discipline]:&lt;br /&gt;
&lt;br /&gt;
Les points-clés à retenir de l’approche systémique peuvent être résumé dans les [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 lois] décrites dans la [https://www.amazon.fr/cinqui%C3%A8me-discipline-organisations-apprenantes-dexemplaires-ebook/dp/B017WSYAHG Cinquième discipline]&lt;br /&gt;
&lt;br /&gt;
* Today’s problems come from yesterday’s ‘solutions.’&lt;br /&gt;
* The harder you push, the harder the system pushes back.&lt;br /&gt;
* Behavior will grow worse before it grows better.&lt;br /&gt;
* The easy way out usually leads back in.&lt;br /&gt;
* The cure can be worse than the disease.&lt;br /&gt;
* Faster is slower.&lt;br /&gt;
* Cause and effect are not closely related in time and space.&lt;br /&gt;
* Small changes can produce big results…but the areas of highest leverage are often the least obvious.&lt;br /&gt;
* You can have your cake and eat it too—but not all at once.&lt;br /&gt;
* Dividing an elephant in half does not produce two small elephants.&lt;br /&gt;
* There is no blame.&lt;br /&gt;
* Les problèmes d’aujourd’hui viennent des solutions d’hier&lt;br /&gt;
* Plus vous poussez, plus le système pousse en retour&lt;br /&gt;
* Le comportement empirera d’abord avant de s’améliorer&lt;br /&gt;
* La manière la plus facile de s’en sortir conduit souvent à faire quelques pas en arrière&lt;br /&gt;
* Le médicament peut être pire que la maladie&lt;br /&gt;
* Plus vite c’est plus lentement&lt;br /&gt;
* Les causes et les effets ne sont pas étroitement liés dans l’espace et le temps&lt;br /&gt;
* De petits changements peuvent produire de gros résultats … mais les zones où l’effet de levier est le plus important sont souvent les moins évidentes&lt;br /&gt;
* Vous pouvez avoir votre gâteau et le manger aussi - mais pas en une seule bouchée&lt;br /&gt;
* Couper un éléphant en deux ne produit pas deux petits éléphants&lt;br /&gt;
* Il n’y a aucun reproche à faire&lt;br /&gt;
&lt;br /&gt;
Toyota’s internal motto is [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html “Good &#039;&#039;&#039;thinking&#039;&#039;&#039;, good products.”] Systems thinking is a set of &#039;&#039;thinking&#039;&#039; tools to help…&lt;br /&gt;
&lt;br /&gt;
La devise de Toyota en interne est [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html « Une bonne &#039;&#039;&#039;réflexion&#039;&#039;&#039;, de bons produits »]. L’approche systémique est un jeu d’outils de réflexion pour aider …&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;see system dynamics&#039;&#039;&#039;—a development organization is a system of people and policies with subtle feedback loops and unintended consequences&lt;br /&gt;
* &#039;&#039;&#039;à voir les dynamiques des systèmes&#039;&#039;&#039; - une organisation de développement est un système de personnes et de règles avec de subtiles boucles de &#039;&#039;feedback&#039;&#039; et des conséquences inattendues&lt;br /&gt;
** we can learn to see and thus improve the system with &#039;&#039;&#039;causal loop diagrams&#039;&#039;&#039; created in a workshop&lt;br /&gt;
** nous pouvons apprendre à voir et ainsi à améliorer le système avec des &#039;&#039;&#039;diagrammes de boucles causales&#039;&#039;&#039; faits lors d’un atelier&lt;br /&gt;
* &#039;&#039;&#039;see mental models&#039;&#039;&#039;—one reason behind suboptimal decisions is mistaken assumptions and faulty reasoning&lt;br /&gt;
* &#039;&#039;&#039;à percevoir les modèles mentaux&#039;&#039;&#039; - parmi les raisons derrière des décisions sous-optimales se trouvent des hypothèses erronées et des raisonnements incorrects&lt;br /&gt;
** causal loop diagramming and Five Whys expose these&lt;br /&gt;
** les diagrammes de boucles causales et les cinq pourquoi permettent de révéler tout ça&lt;br /&gt;
* &#039;&#039;&#039;see local optimization&#039;&#039;&#039;—another source of suboptimal decisions is &#039;&#039;&#039;local optimization&#039;&#039;&#039; , making the ‘best’ decision from the viewpoint of a person or department, rather than &#039;&#039;&#039;global optimization&#039;&#039;&#039; for the lean systems-level goal of &#039;&#039;deliver value fast with high quality and high morale&#039;&#039; .&lt;br /&gt;
* &#039;&#039;&#039;à voir les optimisations locales&#039;&#039;&#039; - une autre source de décisions sous-optimales est &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit prendre la « meilleure » décision du point de vue d’une personne ou d’un département, au détriment d’une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039; qui est l’objectif au niveau système &#039;&#039;lean&#039;&#039; que de pouvoir &#039;&#039;livrer la plus grande valeur possible de très grande qualité avec un moral d’acier&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This introduction is organized around the following areas in systems thinking: Learning to see (1) &#039;&#039;system dynamics&#039;&#039; , (2) &#039;&#039;mental models&#039;&#039; , (3) &#039;&#039;root causes&#039;&#039; , and (4) &#039;&#039;local optimization&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Cette introduction à l’approche systémique est présenté autour des domaines suivants : Apprendre à voir (1) &#039;&#039;les dynamiques des systèmes&#039;&#039;, (2) &#039;&#039;les modèles mentaux&#039;&#039;, (3) &#039;&#039;les causes racines&#039;&#039;, et (4) &#039;&#039;l’optimisation locale&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Static versus Dynamic Complexity ===&lt;br /&gt;
&lt;br /&gt;
=== Complexité statique versus complexité dynamique ===&lt;br /&gt;
&lt;br /&gt;
Many of us, especially in engineering and finance, are educated to master &#039;&#039;&#039;complexity of static details&#039;&#039;&#039;—learning to analyze and manage information (requirements, financial analysis, …), decompose complex structures into simpler ones, and so forth. That is, complexity of a static, information, or structural nature.&lt;br /&gt;
&lt;br /&gt;
La plupart d’entre nous, notamment les ingénieurs et les financiers, ont été formés pour maîtriser la &#039;&#039;&#039;complexité de détails statiques&#039;&#039;&#039; - en apprenant à analyser et à gérer l’information (exigences, analyses financières, …), à décomposer des structures complexes en structures simples, et ainsi de suite. C’est-à-dire, la complexité d’une information qui est par nature structurellement statique.&lt;br /&gt;
&lt;br /&gt;
Why do big software systems tend to degrade, with more and more time spent on defects? What might happen if the USA invades Iraq? Seeing the dynamics behind these questions involves analysis of the &#039;&#039;&#039;complexity of dynamics&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Pourquoi les gros systèmes informatiques ont-ils tendance à se dégrader malgré de plus en plus de temps passé sur les anomalies ? Qu’est-ce qui pourrait bien se passer si les États-Unis d’Amérique envahissait l’Irak ? Voir les dynamiques derrière ces questions implique d’analyser la &#039;&#039;&#039;complexité des dynamiques&#039;&#039;&#039; en jeu.&lt;br /&gt;
&lt;br /&gt;
In contrast to static-details education, many of us receive no &#039;&#039;formal&#039;&#039; education in analyzing &#039;&#039;dynamics&#039;&#039; complexity&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-3 3]&amp;lt;/sup&amp;gt;, especially workplace dynamics. Perhaps there is a belief it is sufficient to rely on common sense in the workplace. Forrester demonstrated that “common sense” is just not so in complex systems, and showed it is possible to formally educate people to become better system dynamics thinkers in the workplace using &#039;&#039;dynamic system models&#039;&#039; visualized in &#039;&#039;flow diagrams&#039;&#039; [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
En contraste avec une formation sur les détails statiques que la plupart d’entre nous avons suivie, peu d’entre nous ont reçu de formation sur l’étude des systèmes dynamiques et complexes[^3] et notamment en milieu professionnel. Peut-être parce que nous avons la croyance qu’il est suffisant de s’appuyer sur le bon sens en milieu professionnel. Jay Wright Forrester a démontré que le « bon sens » n’est pas suffisant dans des systèmes complexes et qu’il est possible de former des personnes pour leur permettre de mieux appréhender les dynamiques des systèmes en milieu professionnel en utilisant notamment des &#039;&#039;diagrammes de flux&#039;&#039; [http://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
Flow diagrams encompass material, financial, and information flows, stocks (variables with a quantity, such as cash or number of defects), the impact of decisions and policies, and cause-effect relations. A popular simplification is the &#039;&#039;&#039;causal loop diagram&#039;&#039;&#039; that focuses on cause-effect relationships and feedback loops in a system [http://www.amazon.com/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. There are a variety of similar notations; they all show stocks (variables), causal links, and delay. In [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] this is called the &#039;&#039;diagram of effect&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de flux peuvent s’appliquer aussi bien aux flux matériels, financiers, d’informations, de stocks (n’importe quel type de stock quantitatif comme de l’argent ou des anomalies), aux conséquences des décisions et des politiques et des relations de causes à effet. Lorsque nous pensons aux diagrammes de flux, nous pensons souvent au seul diagramme de boucle causale dédié aux relations de cause à effets et aux boucles de rétroaction dans un système [http://www.amazon.fr/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. Il existe une grande variété d’autres diagrammes qui peuvent faire figurer les stocks (quels qu’ils soient), les liens de causalités, et les retards. Dans son ouvrage, [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] Gerald Weinberg appelle cela un &#039;&#039;diagramme d’effet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== The First Law of Diagramming: Model to Have a Conversation ===&lt;br /&gt;
&lt;br /&gt;
=== La première loi de la réalisation d’un diagramme : nous modélisons pour avoir une conversation ===&lt;br /&gt;
&lt;br /&gt;
A tool to learn to see system dynamics is a causal loop diagram, ideally sketched on a whiteboard in a LeSS Overall Retrospective with colleagues. Before going further, here is the &#039;&#039;First Law of Diagramming&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un outil très utile pour apprendre les dynamiques des systèmes est le diagramme de boucles causales - nous vous recommandons de l’utiliser sur un tableau blanc notamment lors des Rétrospectives Globales LeSS. Mais avant d’aller plus loin, voici la &#039;&#039;première loi de réalisation d’un diagramme&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;The primary value in diagrams is in the discussion while diagramming—we model to have a conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;La première valeur d’un diagramme c’est la discussion qui se déroule lors de la réalisation du diagramme - nous modélisons pour avoir une conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
When a group gets together to sketch a causal loop diagram on a whiteboard (See it is the the acts of discussing and thinking that are most important when diagramming, Valtech India.), the primary value is the conversation and shared understanding they arrive at while creating the model. Its visualization as an easy-to-see diagram &#039;&#039;is&#039;&#039; important to make concrete and unambiguous (on the whiteboard) the ideas—the mental models people have—because words alone can be fuzzy and misunderstood. But still, the diagram is secondary to what people take away: learning and a revised understanding through a discussion.&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un groupe se rassemble pour dessiner un diagramme de boucles causales sur un tableau blanc (« C’est l’acte de discuter et de réfléchir qui est le plus important lorsque nous dessinons », Valtech India.), la première valeur d’un diagramme c’est la conversation et la compréhension commune à laquelle les personnes arrivent lors de la création du modèle. Ce qu’il en résulte à savoir un diagramme facile à comprendre est important pour rendre les idées et les modèles mentaux concrets et non ambigües (sur le tableau blanc) parce que les mots seuls peuvent être imprécis et mal compris. Toutefois, le diagramme est secondaire par rapport avec ce que les gens repartent : ils ont appris quelque chose et ont revu leur compréhension du monde à travers une discussion.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|frame|none|alt=|caption group%20cld%20modeling.jpg]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Xgroup-cld-modeling.jpg|frameless|848px|Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Concrete modeling tip&#039;&#039; : We start by writing on sticky notes to define &#039;&#039;variables&#039;&#039; . A note might read “feature velocity” or “# defects.” We place these on a whiteboard. Then we sketch causal link lines between the sticky notes. There will be (or should be) lots of rewriting, erasing, and redrawing during the modeling session. The most meaningful outcome is &#039;&#039;understanding&#039;&#039; ; in addition, some participants will want to take a digital photo of the whiteboard sketch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Trucs et astuces de pro pour modéliser&#039;&#039; : Nous commençons par écrire sur des petits papiers repositionnables les noms des &#039;&#039;variables&#039;&#039;, par exemple « vélocité des &#039;&#039;features&#039;&#039; » ou « nombre d’anomalies ». Nous les plaçons ensuite sur le tableau blanc. Puis nous dessinons les liens de causalités entre les papiers . Il y aura (ou il devrait y avoir) beaucoup de réécriture, d’effaçage, de redessin lors de la session de modélisation. Le résultat le plus important d’une telle session est la &#039;&#039;compréhension&#039;&#039; - il se peut qu’à l’issue de cet atelier, certains participants voudront prendre une photo du dessin du tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Causal Loop Diagrams ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : les diagrammes de boucles causales ==&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams are used regularly in introductions to LeSS, to help see the dynamics of what is going on in large-scale development. It is useful to understand them for that reason alone. And more useful to you, we recommend you do these together with colleagues at a whiteboard. Model to have a conversation. When? Probably during a LeSS Overall Retrospective.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales sont souvent utilisés en introduction à LeSS pour aider à voir les dynamiques de ce qu’il se passe dans du développement à grande échelle. Il est donc utile de comprendre ce type de diagrammes pour cette seule et unique raison. Et cela s’avèrera encore plus utile pour vous, si vous le faites avec vos collègues devant un tableau blanc. Vous modélisez pour avoir une conversation. Quand ? Plus probablement lors d’une rétrospective globale LeSS.&lt;br /&gt;
&lt;br /&gt;
The practical aspect of this tip is more important than may first be appreciated. It is vague and low-impact to suggest “be a systems thinker.” But if you and four colleagues get into the habit of standing together at a large whiteboard, sketching causal loop diagrams together, then there is a concrete and potentially high-impact practice that connects “&#039;&#039;be&#039;&#039; a systems thinker” with “&#039;&#039;do&#039;&#039; systems thinking.”&lt;br /&gt;
&lt;br /&gt;
L’aspect pratique de cet exercice est bien plus important que ce qu’il peut paraître au premier abord. Notre conseil d’« être un pratiquant systémique » peut vous sembler vague et sans grand impact. Mais si vous et quatre de vos collègues prenez l’habitude de vous réunir devant un grand tableau blanc, en dessinant des diagrammes de boucles causales ensemble, alors vous arriverez à faire la connexion entre « &#039;&#039;être&#039;&#039; un pratiquant systémique » avec « &#039;&#039;faire&#039;&#039; de l’approche systémique ».&lt;br /&gt;
&lt;br /&gt;
The following examples seem sterile when presented in a book. But imagine you were at a whiteboard with other people and the diagrams were being sketched during a lively conversation. That’s the way we suggest ‘doing’ systems thinking.&lt;br /&gt;
&lt;br /&gt;
Les exemples suivants peuvent paraître stériles car présentés dans un livre. Mais imaginez-vous à côté d’un tableau blanc avec d’autres personnes dessinant ensemble des diagrammes au cours d’une conversation animée. C’est de cette manière-là que nous suggérons de ‘ faire ’ de l’approche systémique.&lt;br /&gt;
&lt;br /&gt;
====== Notation and Examples ======&lt;br /&gt;
&lt;br /&gt;
====== Notation et exemples ======&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams contain many elements; the following common useful subset is explored through a scenario.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales contiennent beaucoup d’éléments ; les éléments suivants sont les plus communément utilisés et sont vus en détail tout au long du scénario qui va suivre&lt;br /&gt;
&lt;br /&gt;
* variables&lt;br /&gt;
* causal links&lt;br /&gt;
* opposite effects&lt;br /&gt;
* constraints&lt;br /&gt;
* goals&lt;br /&gt;
* reactions; quick-fix reactions&lt;br /&gt;
* interaction effects&lt;br /&gt;
* extreme effects&lt;br /&gt;
* delays&lt;br /&gt;
* positive feedback loops&lt;br /&gt;
* variables&lt;br /&gt;
* liens de causalité&lt;br /&gt;
* effets opposés&lt;br /&gt;
* contraintes&lt;br /&gt;
* objectifs&lt;br /&gt;
* réactions ; réactions solutions de contournement&lt;br /&gt;
* effets d’interaction&lt;br /&gt;
* effets extrêmes&lt;br /&gt;
* retards&lt;br /&gt;
* boucles de &#039;&#039;feedback&#039;&#039; positives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following simplified scenario is for a particular organization. It is not a generalization.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le scénario qui suit est un scénario simplifié pour une organisation spécifique. Il ne s’agit pas d’une généralisation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variables&#039;&#039;&#039;—Causal loop diagrams include &#039;&#039;variables&#039;&#039; (or stocks) such as the &#039;&#039;velocity (rate of delivery) of software features&#039;&#039; and &#039;&#039;number of defects&#039;&#039; . Variables have a measurable quantity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les variables&#039;&#039;&#039; - Les diagrammes de boucles causales comportent des &#039;&#039;variables&#039;&#039; (ou des stocks) telle que la &#039;&#039;vélocité (taux de livraison) des features&#039;&#039; et le &#039;&#039;nombre d’anomalies&#039;&#039;. Les variables ont une quantité mesurable.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-4.png.pagespeed.ic.WpO9GKmuZP.webp|frame|none|alt=|caption systems thinking-4.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-4-fr.png|frameless|848px|1er schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causal links&#039;&#039;&#039;—An element can have an effect on another, such as if feature velocity increases, then the number of defects increase; that is, more new code, more defects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les liens de causalité&#039;&#039;&#039; - Un élément peut avoir un effet sur un autre, comme par exemple si la vélocité des &#039;&#039;features&#039;&#039; augmente alors le nombre d’anomalies augmente ; autrement dit, plus de code, plus d’anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-5.png.pagespeed.ic.oPRro2SqND.webp|frame|none|alt=|caption systems thinking-5.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-5-fr.png|frameless|848px|2ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Now it is time to bump into &#039;&#039;Weinberg-Brook’s Law&#039;&#039; and the &#039;&#039;Causation Fallacy&#039;&#039; . It is easy to sketch a diagram; it is something else to model with insight. For example, consider the relationship between the &#039;&#039;number of developers&#039;&#039; and &#039;&#039;feature velocity.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il est temps désormais de se jeter à corps perdu dans la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; et dans la &#039;&#039;causalité fallacieuse&#039;&#039;. C’est facile de dessiner un diagramme, ça l’est moins que de modéliser en faisant preuve de clairvoyance comme par exemple, la relation entre le &#039;&#039;nombre de développeurs&#039;&#039; et la &#039;&#039;vélocité des features&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The nature of any cause-effect relationship is actually not obvious, though it is common for people to jump to conclusions such as more developers means better velocity. Adding people late in development may &#039;&#039;reduce&#039;&#039; velocity (a sub-element of “Brooks’ Law” [Brooks95]). Or, &#039;&#039;more&#039;&#039; bad programmers could really slow you down. An argument can be made that &#039;&#039;removing&#039;&#039; terrible developers can &#039;&#039;improve&#039;&#039; velocity.&lt;br /&gt;
&lt;br /&gt;
Toute relation de cause à effets est par nature obscure, même si les gens ont l’habitude de sauter sur la première conclusion venue comme par exemple plus de développeurs égale plus de vélocité. Ajouter des personnes tard au cours du développement peut &#039;&#039;réduire&#039;&#039; la vélocité (il s’agit d’une composante de la « loi de Brooks » [Brooks95]). Ou, &#039;&#039;davantage&#039;&#039; de mauvais développeurs pourrait vraiment vous ralentir. Il pourrait être objecté qu’&#039;&#039;enlever&#039;&#039; des développeurs exécrables peut permettre &#039;&#039;d’améliorer&#039;&#039; la vélocité.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-6.png.pagespeed.ic.6XIYl7Vm3_.webp|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-6-fr.png|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-6-fr.png|frameless|848px|3ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Opposite effects&#039;&#039;&#039;—A causal link effect may be the same or opposite direction; if A goes up then B goes up, or vice versa. Opposite effect is shown with an ‘O’ on the line. Suppose defects going up puts a drag on the system, lowering the velocity of new features because people spend more time fixing or working around bugs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets opposés&#039;&#039;&#039; - L’effet d’un lien de causalité peut aller dans la même direction ou dans la direction opposée. Si A monte alors B monte ou vice versa. L’effet opposé se souligne à l’aide d’un ‘0’ sur la ligne. Supposons que les anomalies ralentissent grandement le système, réduisant la vélocité des nouvelles &#039;&#039;features&#039;&#039; parce que les gens passent plus de temps à corriger ou à trouver des solutions de contournement aux anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-7.png.pagespeed.ic.DPGMJyX2Qf.webp|frame|none|alt=|caption systems thinking-7.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-7-fr.png|frameless|848px|4ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Constraints&#039;&#039;&#039;—Unless you can find people to work for free, there is a constraint on the number of developers, based upon cash supply.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contraintes&#039;&#039;&#039; - À moins que vous ne trouviez des personnes prêtent à travailler gratuitement, il y a une contrainte sur le nombre de développeurs basé sur le budget disponible.&lt;br /&gt;
&lt;br /&gt;
Constraints are &#039;&#039;not&#039;&#039; causal links. As cash supply goes up, it is not the case that the number of developers goes up.&lt;br /&gt;
&lt;br /&gt;
Les contraintes ne sont &#039;&#039;pas&#039;&#039; des liens de causalité. Lorsque la montant du budget disponible augmente, ce n’est pas le cas du nombre de développeurs/&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-8.png.pagespeed.ic.gbgAIK-IsZ.webp|frame|none|alt=|caption systems thinking-8.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-8-fr.png|frameless|848px|5ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goals and Reactions&#039;&#039;&#039;–People, departments, and systems have goals, such as &#039;&#039;higher feature velocity&#039;&#039; . Goals often generate pressure for people to react (or act), with the intent of achieving the goal. But since there is &#039;&#039;Causation Fallacy&#039;&#039; and &#039;&#039;Weinberg-Brooks’ Law&#039;&#039; to contend with, people should be cautious about assuming what actions will help. Now a goal and pressure for reaction is shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buts et réactions&#039;&#039;&#039; - Les personnes, les départements et les systèmes ont des buts, comme par exemple avoir une &#039;&#039;vélocité des features plus élevée&#039;&#039;. Les buts occasionnent souvent de la pression pour que les gens réagissent (ou agissent) dans l’intention de leur faire atteindre ce but. Mais étant donné qu’il y a la &#039;&#039;causalité fallacieuse&#039;&#039; et la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; à laquelle il faut faire face, les gens devraient être prudents quant aux actions pertinentes à entreprendre. Voici un exemple de diagramme modélisant cela :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-9.png.pagespeed.ic.yVcHbh4_-i.webp|frame|none|alt=|caption systems thinking-9.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-9-fr.png|frameless|848px|6ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Not only does a goal with a &#039;&#039;reward&#039;&#039; create pressure to act, but also it creates pressure to &#039;&#039;appear&#039;&#039; to be acting and achieving, due to the &#039;&#039;&#039;measurement dysfunction&#039;&#039;&#039; generated by rewards. And the measurement dysfunction can be proportional to the perceived value of the reward because people are being motivated to get a reward, not to improve the system [http://www.amazon.com/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Notice how rewards can actually degrade system performance. Visually, the system dynamics may be…&lt;br /&gt;
&lt;br /&gt;
Non seulement un but à atteindre avec une &#039;&#039;récompense&#039;&#039; au bout engendre une pression à agir, mais cela créé aussi une pression à &#039;&#039;faire semblant&#039;&#039; d’agir et à atteindre le but — les récompenses provoquent un &#039;&#039;&#039;dysfonctionnement des indicateurs&#039;&#039;&#039;. Le dysfonctionnement des indicateurs peut être proportionnel à la valeur perçue de la récompense parce que les personnes sont motivées pour avoir la récompense, non pour améliorer le système [http://www.amazon.fr/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Remarquez bien comment et de quelle manière les récompenses peuvent dégrader la performance du système. De manière visuelle, les dynamiques d’un tel système pourrait être …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-10.png.pagespeed.ic.39CLFp-g_9.webp|frame|none|alt=|caption systems thinking-10.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-10-fr.png|frameless|848px|7ème schéma]]&lt;br /&gt;
&lt;br /&gt;
It is quite interesting that all these dynamics have been added by introduction of reward, and yet there is no necessary connection between the top part of this model and the bottom.&lt;br /&gt;
&lt;br /&gt;
Il est assez intéressant de voir que toutes ces dynamiques ont été ajouté par l’introduction d’une récompense et qu’il n’y pas de connexion entre le haut et le bas de cette modélisation.&lt;br /&gt;
&lt;br /&gt;
There is no guarantee that feature velocity has improved—or even been worked on.&lt;br /&gt;
&lt;br /&gt;
Il n’y a aucune garantie que la vélocité des features s’améliore ou même que l’on y travaille.&lt;br /&gt;
&lt;br /&gt;
Removing the reward system is a root-cause solution to the dysfunction. Another (lesser) surface countermeasure is the lean-thinking &#039;&#039;Go See&#039;&#039; (go see physically at the place of real work) principle and management behavior:&lt;br /&gt;
&lt;br /&gt;
Enlever le système de récompense est une solution à la cause racine de ce dysfonctionnement. Une autre contremesure de surface est le principe et le comportement managériale &#039;&#039;Aller voir&#039;&#039; (aller voir physiquement sur le lieu où le travail s’effectue) de l’approche lean.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-11.png.pagespeed.ic.NU8SjnJkUY.webp|frame|none|alt=|caption systems thinking-11.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-11-fr.png|frameless|848px|8ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick-fix reactions&#039;&#039;&#039;—One difficult and slow solution toward the goal of higher velocity is to hire great developers, to increase coaching and education of existing staff, and to remove terrible workers. The alternative is called a &#039;&#039;quick fix&#039;&#039; , a reaction that is hoped to achieve the goal quickly and with less effort. Sometimes a quick fix works well both in the short and long term, really strengthening the system. Sometimes not…hence, “faster is slower.” For example, people may &#039;&#039;believe&#039;&#039; that increasing the number of developers increases the feature velocity. And they may thereby hope that hiring more developers will most quickly and easily solve the velocity problem. ‘QF’ indicates the quick fix:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solutions de contournement&#039;&#039;&#039; - Une solution payante à long terme pour atteindre une vélocité plus grande, qui n’est pas sans difficulté, consiste à : recruter de développeurs très qualifiés, faire davantage d’accompagnements et de formations, et à se séparer des moins bons éléments. L’alternative est ce que l’on appelle une &#039;&#039;solution de contournement&#039;&#039;, c’est ce que l’on met en place dans l’espoir d’atteindre l’objectif en moins de temps et avec moins d’effort. Parfois, une solution de contournement se révèle payante aussi bien dans le court terme que dans le long terme, renforçant par la-même le système. D’autres fois cela ne fonctionne pas … d’où l’expression « aller plus vite c’est aller plus lentement ». Par exemple, les gens peuvent &#039;&#039;croire&#039;&#039; qu’augmenter le nombre de développeurs permet d’augmenter la vélocité des features. Et ils peuvent par conséquent être amenés à espérer qu’en recrutant davantage de développeurs cela permettra de résoudre plus vite et plus facilement le problème de vélocité. La mention ‘SC’ sur le diagramme ci-dessous indique une solution de contournement.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-12.png.pagespeed.ic.x8IJWKprUx.webp|frame|none|alt=|caption systems thinking-12.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-12-fr.png|frameless|848px|9ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interaction effects&#039;&#039;&#039;—There is the constraint of cash supply on hiring. One hard and slow solution is to get more cash. A quicker fix is to hire &#039;&#039;much&#039;&#039; cheaper developers. In this case, the level of cash supply now has an &#039;&#039;interaction effect&#039;&#039; with other causal links. Low cash tends to strengthen the hire rate of much cheaper developers when there is pressure to increase hire rates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets d’interaction&#039;&#039;&#039; - La capacité à embaucher est contraint à la capacité budgétaire. Une solution de longue haleine non sans difficulté est d’obtenir davantage de budget. Une solution de contournement possible est de recruter un &#039;&#039;grand&#039;&#039; nombre de développeurs bon marché. Dans ce cas, le niveau du budget a un &#039;&#039;effet d’interaction&#039;&#039; avec les autres boucles causales. Un budget peu élevé aura tendance à renforcer le taux de développeurs bon marché si la pression pour recruter augmente.&lt;br /&gt;
&lt;br /&gt;
One could simply draw an (opposite) causal link directly from &#039;&#039;cash supply&#039;&#039; to &#039;&#039;hire rate of very cheap developers&#039;&#039; , but that merely says that less cash leads to more hiring of extremely cheap developers. That is not quite what we want to say; rather, we want to show the interaction effect—that effect A influences &#039;&#039;effect&#039;&#039; B. This is done by showing a causal link entering another causal link. For example, from &#039;&#039;cash supply&#039;&#039; to the quick-fix line going into &#039;&#039;hire rate of very cheap developers&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
Nous pourrions dessiner simplement un lien de causalité (opposé) de &#039;&#039;rentrée budgétaire&#039;&#039; à &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;, mais cela voudrait simplement dire qu’avoir un budget moindre aurait pour conséquence de recruter davantage de développeurs bon marché. Mais ce n’est pas tout à fait ce que nous voulons dire ; ce que voulons montrer en fait, c’est l’effet d’interaction - c’est-à-dire qu’un effet A influence un &#039;&#039;effet&#039;&#039; B. Cela se fait en montrant un lien de causalité heurtant un autre lien de causalité, par exemple en traçant une ligne de &#039;&#039;rentrée budgétaire&#039;&#039; vers la ligne représentant la solution de contournement qui va vers &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-13.png.pagespeed.ic.LvAE8ewRFJ.webp|frame|none|alt=|caption systems thinking-13.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-13-fr.png|frameless|848px|10ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extreme effects&#039;&#039;&#039;—We have worked with some very inexpensive developers with excellent skill and some very expensive developers that are terrible, but on average, you get what you pay for—when you hire from a large pool of very cheap labor, the average skill level is lower. In the model we want to show that the impact of hiring very cheap labor on the &#039;&#039;number of low-skilled developers&#039;&#039; is a significantly greater effect than average.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets extrêmes&#039;&#039;&#039; - Il nous est arrivé de travailler avec d’excellents développeurs très bon marché et avec d’autres hors de prix très nuls, mais en moyenne, vous obtenez à hauteur de ce que vous payez - lorsque vous recrutez au moins disant, le niveau moyen en terme de compétences sera plus faible. Dans le diagramme ci-dessous, nous avons voulu montrer que l’impact du recrutement de personnes bon marché en rapport avec le &#039;&#039;nombre de développeurs peu qualifiés&#039;&#039; à un impact sensiblement plus grand que la moyenne.&lt;br /&gt;
&lt;br /&gt;
To show an &#039;&#039;extreme effect&#039;&#039; in the model, use a thick line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer un &#039;&#039;effet extrême&#039;&#039; sur un modèle, faites un trait épais comme vous pouvez voir ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-14.png.pagespeed.ic.JYkqz8Qe24.webp|frame|none|alt=|caption systems thinking-14.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-14-fr.png|frameless|848px|11ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delays&#039;&#039;&#039;—One problem in hiring in software development is the &#039;&#039;fallacy of mild programmer variance&#039;&#039; —the mistaken belief that programmer variance (in terms of productivity, code quality, etc.) is relatively small. However, programmer variance studies suggest an average of four times faster in the top versus bottom quartile [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. Rather significant. Also, the COCOMO model—based on large and longitudinal studies—shows that the capability of the development personnel is by far the most important factor for productivity [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. And, on average, very weak programmers create poor-quality code (poor design) and more defects, creating another drag on the system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retards&#039;&#039;&#039; Un problème courant au niveau du recrutement dans un projet de développement logiciel concerne &#039;&#039;l’erreur au niveau de la variance d’un développeur moyen&#039;&#039; - autrement dit la croyance fausse que la variance d’un développeur à un autre (en terme de productivité, de qualité de code, etc.) est relativement faible. Toutefois, les études de la variance au sujet des développeurs montrent un rapport de un à 4 entre le 1er quartile et le dernier [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. C’est plutôt quelque chose de significatif. De même des études - en long et en large - du modèle COCOMO montrent que la capacité du développement personnel est le facteur de loin le plus important quant à la productivité [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. Et, en moyenne, il s’avère que les développeurs peu qualifiés font du code de mauvaise qualité (mauvaise conception) et de plus d’anomalies, ceci rajoute un autre frein au système.&lt;br /&gt;
&lt;br /&gt;
But the impacts of these effects are not immediately obvious. For example, it takes a relatively long time after hiring a large pool of weak programmers before the impacts of more and more bad code/design start to be felt. Similarly, the average &#039;&#039;decrease&#039;&#039; in feature velocity (because of the powerful impact of programmer variance) will not show up immediately.&lt;br /&gt;
&lt;br /&gt;
Mais l’impact de ces effets ne sont pas visibles immédiatement. Par exemple, cela peut prendre un certain temps après un recrutement massif de développeurs peu qualifiés avant que les impacts négatifs ne se fassent sentir au niveau de la qualité du code ou de la conception. De manière similaire, la &#039;&#039;baisse&#039;&#039; moyenne de la vélocité des features (en raison de l’impact important de la variance des développeurs évoqué plus haut) ne se verra pas immédiatement.&lt;br /&gt;
&lt;br /&gt;
To show these &#039;&#039;delayed effects&#039;&#039; in the model, use a double-line through the effect line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer ces &#039;&#039;effets à retardement&#039;&#039; dans le modèle, faites une double-ligne en travers de la ligne d’effet.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-15.png.pagespeed.ic.0fwliLJm6G.webp|frame|none|alt=|caption systems thinking-15.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-15-fr.png|frameless|848px|12ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Delay has an intriguing influence on the &#039;&#039;educational&#039;&#039; or corrective power in a system. If an impact or unintended consequence is long delayed, one does not feel the effect (pain or gain) and so does not clearly see how A influenced B, or more subtly how &#039;&#039;A influenced B influenced A&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Le retard a une influence intéressante sur le pouvoir &#039;&#039;pédagogique&#039;&#039; ou correctif sur un système. Si un impact ou une conséquence inattendue est retardé suffisamment longtemps, personne n’en voit ni l’effet (qu’il soit bénéfique ou néfaste) ni sur la façon dont A influence B ou plus subtilement comment &#039;&#039;A a influencé B qui a influencé A&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Therefore, one does not learn from or correct mistakes—in policy, management actions, tools, and so forth. Likewise, gradual improvement through the lean thinking practice of &#039;&#039;kaizen&#039;&#039; can take a long time; patience and insight are needed to see if and how things improve.&lt;br /&gt;
&lt;br /&gt;
Par conséquent, personne n’apprend de ses erreurs ni n’est en capacité de les corriger - que ce soit en terme de stratégie, d’actions d’encadrement, d’outils ou de quoi que ce soit. De la même manière, l’amélioration graduelle à travers l’application d’une démarche lean &#039;&#039;kaizen&#039;&#039;, peut prendre un certain temps ; de la patience et de la perspicacité sont nécessaires pour voir si et comment les choses s’améliorent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Positive feedback loops&#039;&#039;&#039;—Negative or positive feedback loops&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-5 5]&amp;lt;/sup&amp;gt; and delays are where things start to get more subtle in a system—and in understanding a system. For example, how does one become a better programmer? In part, by mentoring from great programmers and seeing lots of examples of great code. But an office with a lot of low-skill developers does not generate a lot of great code examples, nor does it attract or retain the small pool of great programmers who could act as mentors. They would rather work somewhere else.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Boucles de feedback positives&#039;&#039;&#039; - Les boucles de feedback négatives ou positives [^5] et les retards sont le point de départ pour une approche plus subtile d’un système - et de sa compréhension. Par exemple, de quelle manière une personne peut-elle devenir un meilleur développeur ? En partie, en bénéficiant du mentorat de très bons développeurs et en jetant un œil sur du très bon code. Mais il est impossible de trouver du bon code dans un endroit remplit de développeurs médiocres, il est impossible également d’y attirer ou de retenir le petit groupe de très bon développeurs qui pourraient prendre le rôle de mentors. Ils préfèrent largement aller travailler ailleurs.&lt;br /&gt;
&lt;br /&gt;
Now the development group starts to enter a self-reinforcing downward spiral—a set of &#039;&#039;positive feedback loops&#039;&#039; . Fortunately, the downward trend is constrained by the supply of cash.&lt;br /&gt;
&lt;br /&gt;
Ce groupe de développeurs médiocres rentrent dans un cercle vicieux en raison d’un ensemble de &#039;&#039;boucles de feedback positives&#039;&#039;. Fort heureusement, ce cercle vicieux est assujeti aux contraintes du budget.&lt;br /&gt;
&lt;br /&gt;
More great programmers—who could craft great code and mentor others—leave. So there is less and less quality code to look at and to learn from. The percentage of weak programmers grows even larger and feature velocity drops further. Code becomes more messy, awkward, and duplication-riddled, so the capacity to swiftly implement features declines. Since feature velocity is dropping further, there is more pressure to hire yet more very cheap programmers. All this leads to multiple positive reinforcement loops in the system, for example:&lt;br /&gt;
&lt;br /&gt;
Malheureusement de plus en plus des très bons développeurs - ceux en capacité d’élaborer du très bon code et de faire du mentorat auprès des autres développeurs - partent. Par conséquent, il y a de moins en moins de code de qualité à regarder et à partir duquel il est possible d’en tirer des enseignements. Le pourcentage de développeurs médiocres augmente de plus en plus et la vélocité au niveau des features continue à chuter. Le code devient de plus en plus brouillon, difficile, avec pleins de bouts de code dupliqués à gauche et à droite, le tout de telle manière que la capacité d’implémenter des features décline. Étant donné que la vélocité des features continue de chuter, il y a davantage de pression pour recruter des développeurs très bon marché. Tout cela conduit à de multiples boucles de renforcement positives dans le système comme l’illustre l’exemple ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-16.png.pagespeed.ic.ONFuUmJHSE.webp|frame|none|alt=|caption systems thinking-16.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-16-fr.png|frameless|848px|13ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip&#039;&#039; : You can find positive feedback loops by finding cycles with an &#039;&#039;even number&#039;&#039; of ‘Opposite’ effect relationships. There are several examples in the model above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Astuce&#039;&#039; : Vous pouvez trouver des boucles de feedback positives en cherchant des cycles ayant un &#039;&#039;nombre pair&#039;&#039; de relations. Vous en trouverez plusieurs exemples ci-dessus.&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
The example scenario is only that—an example. A causal loop diagram can visualize rich dynamics in a workplace system. These are best created by a group at a whiteboard.&lt;br /&gt;
&lt;br /&gt;
Le scénario donné à titre d’exemple est uniquement cela - un exemple. Une diagramme de boucle causale permet de visualiser la richesse de la dynamique dans le système dans un milieu professionnel. La meilleure manière de modéliser un tel système est de le faire en groupe face à un tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing Mental Models ==&lt;br /&gt;
&lt;br /&gt;
== Voir les modèles mentaux ==&lt;br /&gt;
&lt;br /&gt;
The previous causal loop diagrams reflect people’s mental models of causation, which may be wrong. It is interesting to note that people’s models of causation are influenced by the timeliness (delay) and quality of feedback in the system.&lt;br /&gt;
&lt;br /&gt;
Les précédents diagrammes de boucles causales reflètent les modèles mentaux de causalité des individus … qui peuvent s’avérer faux. Il est intéressant de remarquer que les modèles de causalité des individus sont influencés par la ponctualité (ou les retards) et la qualité des feedbacks dans le système.&lt;br /&gt;
&lt;br /&gt;
The implication of “mental models” is to improve our meta-cognitive skill to see and question our own assumptions and chains of reasoning. Are we making faulty leaps of logic? It also implies when working with others to discuss (inquiring rather than abusing) the mental models of our colleagues.&lt;br /&gt;
&lt;br /&gt;
Les « modèles mentaux » nous permettent d’améliorer nos compétences de méta-cognition pour voir et questionner nos propres postulats et l’enchaînement de nos raisonnements. Brûlons-nous des étapes de manière erronée ? Cette question implique aussi lorsque nous sommes en train de travailler avec des collègues de discuter avec eux (en s’enquérant plutôt qu’en reprochant) de leurs modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Seeing&#039;&#039; these mental models is step one; &#039;&#039;changing&#039;&#039; them is the even harder part of step two. That art is beyond the scope of this introduction, though a successful LeSS adoption must involve changes in mindset and insight among many groups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Voir&#039;&#039; les modèles mentaux n’est que la première étape ; les &#039;&#039;changer&#039;&#039; constitue une seconde partie bien plus difficile. Cet art est bien au-delà du sujet de cette introduction, même si une adoption réussie de LeSS implique des changements en terme d’état d’esprit et de prise de conscience au sein de très nombreuses équipes.&lt;br /&gt;
&lt;br /&gt;
A tip to better &#039;&#039;see&#039;&#039; the mental models (beliefs, chains of inference, …) playing out in the system dynamics is to ask the following question during a modeling workshop and then sketch the answers. “Let’s talk about the assumptions behind this model. What do we &#039;&#039;believe&#039;&#039; or assume in terms of facts and effects that led us here?”&lt;br /&gt;
&lt;br /&gt;
Une astuce pour mieux &#039;&#039;voir&#039;&#039; les modèles mentaux (croyances, échelle d’inférence, …) en jeu au niveau des dynamiques des systèmes est de poser les questions suivantes lors d’un atelier de modélisation puis de tracer les éléments de réponse au tableau blanc. « Parlons donc des hypothèses derrière ce modèle. Que &#039;&#039;croyons&#039;&#039;-nous ou tenons pour acquis en terme de faits et d’effets qui nous ont conduits ici ? »&lt;br /&gt;
&lt;br /&gt;
Answers are sketched on the whiteboard model, for example:&lt;br /&gt;
&lt;br /&gt;
Les éléments de réponse sont dessinés sur le tableau blanc. En voici un exemple :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-17.png.pagespeed.ic.5UIqBnJfK1.webp|frame|none|alt=|caption systems thinking-17.png]]&lt;br /&gt;
Visualizing the assumptions in our heads… our mental models.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-17-fr.png|frameless|848px|14ème schéma]]&lt;br /&gt;
&#039;&#039;Visualiser les postulats présents dans nos têtes … nos modèles mentaux.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Example: The “Faster is Slower” Dynamic ===&lt;br /&gt;
&lt;br /&gt;
=== Exemple : La dynamique « Aller plus vite c’est aller plus lentement » ===&lt;br /&gt;
&lt;br /&gt;
With the vocabulary of quick fixes, delays, positive feedback loops, and mental models, it is fascinating to see that there can be a short-term apparent improvement in a variable as the result of a quick fix, but a &#039;&#039;delayed degradation&#039;&#039; of the very same variable—the “faster is slower” dynamic. This is a recurrent dynamic in the workplace and a cause of weakness. So it is worth another illustration.&lt;br /&gt;
&lt;br /&gt;
Dorénavant, avec notre vocabulaire enrichi des termes de solutions de contournement, de boucles de feedback positives et de modèles mentaux, il est fascinant de voir qu’il peut y avoir un semblant d’amélioration à court terme sur une variable donnée, mais que cela entraîne en même temps une &#039;&#039;dégradation à retardement&#039;&#039; de cette même variable - d’où la dynamique « Aller plus vite c’est aller plus lentement ». Il s’agit d’une dynamique récurrente et d’une cause de vulnérabilité à terme. Voici un nouvel exemple illustrant cela :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The story of Microsoft Word and the&#039;&#039; &#039;&#039;&#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039;&#039;&#039; : A classic example of the short-term ‘improving’ but long-term degrading dynamic is the story of the first release of Microsoft Word for Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. It was released &#039;&#039;years&#039;&#039; later than desired. Why? &#039;&#039;Because managers tried to follow the original schedule and pushed developers to meet it&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Histoire de Microsoft Word et de&#039;&#039; &#039;&#039;&#039;&#039;&#039;la boîte à outils secrète du développeur&#039;&#039;&#039;&#039;&#039; : Un exemple typique d’une ‘amélioration’ à court terme mais d’une dynamique de dégradation à long terme est le récit de la première livraison de Microsoft Word sur Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. Le logiciel a été livré avec des &#039;&#039;années&#039;&#039; de retard par rapport à la date prévue. Pourquoi ? &#039;&#039;Parce que les managers ont essayé à tout prix de suivre le calendrier de départ et ont fait pression sur les développeurs pour le respecter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The story illustrates why &#039;&#039;wishful thinking&#039;&#039; is identified as one of the wastes in lean thinking. In this case the wishful thinking of insisting on (apparently) following a schedule, which implies the misconception or wishful thinking that development estimates are not estimates but are commitments—a common myth that propels degradation of a system.&lt;br /&gt;
&lt;br /&gt;
Cette histoire illustre pourquoi cet espoir illusoire de respecter une date souhaitée est bien identifié comme une source de gâchis dans l’approche lean. Dans le cas présent l’espoir illusoire consiste à insister (du moins apparemment) à suivre le calendrier, ce qui implique une idée fausse ou illusoire que les estimations ne sont pas de simples estimations mais des promesses - un mythe classique qui pousse à la dégradation d’un système.&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 The next model] illustrates a &#039;&#039;summary&#039;&#039; of the dynamics of what happened when the managers pushed people to evidently keep to the original schedule, and why this quick-fix reaction to slow progress appeared to make things faster in the short term but actually even &#039;&#039;slower&#039;&#039; in the long term. See the dynamic of schedule pressure and the secret toolbox. intentionally omits some deeper dynamics that are expanded and shown in See deeper dynamics of schedule pressure and the secret toolbox..&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 Le modèle suivant] illustre un &#039;&#039;résumé&#039;&#039; des dynamiques à l’œuvre lorsque des managers poussent leurs équipes à respecter à tout prix les calendriers prévisionnels, et pourquoi cette solution de contournement qui freine pourtant l’avancement des travaux semblent les faire aller plus vite à court terme mais en réalité &#039;&#039;plus lentement&#039;&#039; à long terme. Par rapport à ce qui est décrit précédemment dans la dynamique de la pression du calendrier et la boîte à outils secrète, certaines dynamiques ont été omises intentionnellement sur ce schéma et sont visibles sur le schéma dynamiques avancées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-18.png.pagespeed.ic.A7OSuu755I.webp|frame|none|alt=|caption systems thinking-18.png]]&lt;br /&gt;
The dynamic of schedule pressure and the secret toolbox.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-18-fr.png|frameless|848px|15ème schéma]]&lt;br /&gt;
&#039;&#039;Dynamique de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As a quick fix, the Microsoft managers exhorted, bribed (with potential rewards), and threatened the Word developers to keep to the original schedule. Consequently, the developers predictably pulled out their &#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039; —the many practices related to hacking out dirty code (no tests, no reviews, ignore known defects, copy-paste programming, poor design, …) to apparently deliver a feature faster. You see, developers also have &#039;&#039;quick-fix&#039;&#039; reactions for their problems.&lt;br /&gt;
&lt;br /&gt;
En solution de contournement, les managers de Microsoft ont exhorté, ont corrompu (à l’aide de primes potentielles), et ont menacé les développeurs de Word pour leur faire respecter le calendrier prévisionnel. En conséquence, les développeurs ont, de manière tout à fait prévisible, sorti leur &#039;&#039;&#039;boîte à outils secrète de développeurs&#039;&#039;&#039; - autrement dit tout un arsenal de pratiques pour pisser du code pourri (aucuns tests, aucunes revues, ignorance des anomalies connues, développement par copier-coller, mauvaise conception, …) pour développer visiblement plus vite. Vous voyez bien, les développeurs ont aussi des solutions de contournement pour régler leurs problèmes.&lt;br /&gt;
&lt;br /&gt;
The tactics seemed to have worked like magic. As the managers pressured the developers, ‘features’ were delivered quicker as people used the secret toolbox, which reinforced the belief that pressuring developers helps. But this apparent acceleration actually had a delayed effect to make things slower, which is explored next. Since management did not quickly see the delayed effect of the secret toolbox, and because they believed managers should not be frequently looking in detail at the source code or themselves be master programmers, they did not learn from this dynamic.&lt;br /&gt;
&lt;br /&gt;
Vu de l’extérieur, ces tactiques ont fonctionné à merveille. Au fur et à mesure que les managers mettaient la pression sur les développeurs, les ‘features’ étaient développées de plus en plus vite grâce à l’utilisation de la boîte à outils secrète, ce qui a renforcé la croyance en quoi mettre la pression sur les développeurs était quelque chose d’utile. Mais cette apparente accélération a eu en fait un effet à retardement qui a rendu les choses plus lentes (c’est ce que nous allons voir par la suite). Étant donné que le management n’a pas été assez rapide à voir l’effet à retardement de la boîte à outils, et parce que les managers pensent qu’ils n’ont pas besoin d’aller regarder fréquemment en détails le code source ou qu’ils n’ont pas besoin d’être eux-mêmes des développeurs très expérimentés, ils n’ont rien appris de cette dynamique.&lt;br /&gt;
&lt;br /&gt;
A closer exploration of the system dynamics shows why things went slower in the long term and why the first Word for Windows release was years later than desired, illustrated in this model…&lt;br /&gt;
&lt;br /&gt;
Le schéma ci-dessous illustre l’examen approfondie des dynamiques des systèmes montrant pourquoi les choses sont allées plus lentement à long terme et pourquoi le tout premier Word pour Windows a été livré des années en retard par rapport à la date souhaitée …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-19.png.pagespeed.ic.D24dvGHzfu.webp|systems thinking-19.png]]&lt;br /&gt;
Some deeper dynamics of schedule pressure and the secret toolbox.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-19-fr.png|frameless|848px|16ème schéma]]&lt;br /&gt;
&#039;&#039;Dynamiques avancées de la pression sur le calendrier et de la boîte à outils secrètes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Naturally, lots of dirty code eventually slowed things down. More subtly, developers would &#039;&#039;ignore&#039;&#039; the bug list of ever-increasing open defects to—instead—generate new features. This led to a long delay between the creation of a defect and its correction. It turns out that this significantly increases variability and time to fix a defect because of the compounding negative effect of a long-lived bug (for example, due to workarounds and coupling) and because developers have long forgotten the detailed context of code related to the defect and therefore need to slowly rediscover that context—with more and more dirty confusing code surrounding them.&lt;br /&gt;
&lt;br /&gt;
Naturellement, avoir une grande quantité de code de mauvaise qualité ralentie les choses. De manière beaucoup plus subtile, les développeurs ont &#039;&#039;ignoré&#039;&#039; la liste croissante d’anomalies pour privilégier la production de nouvelles features. Cela a eu pour conséquence d’avoir un délai important entre la déclaration d’une anomalie et sa correction. Il s’avère que cela a fait augmenter de manière significative la variabilité et le temps nécessaire pour corriger une anomalie en raison des effets cumulatifs négatifs liée à la nature même d’une vieille anomalie (par exemple avec la mise en place des solutions de contournement et des couplages existants entre les fonctionnalités), de l’oubli du contexte détaillé par les développeurs en relation avec l’anomalie, ces derniers mettant par conséquent plus de temps à le redécouvrir, de l’accumulation continue de code de mauvaise qualité dans le même temps.&lt;br /&gt;
&lt;br /&gt;
The astute reader may also notice the several positive feedback loops that reinforce the degradation cycle; this is one reason the product was years later than intended.&lt;br /&gt;
&lt;br /&gt;
Le lecteur avisé remarquera également plusieurs boucles causales positives renforçant le cycle de dégradation ; il s’agit de l’une des raisons expliquant le retard pris sur plusieurs années pour livrer le produit.&lt;br /&gt;
&lt;br /&gt;
Solution? The lean thinking &#039;&#039;Stop and Fix&#039;&#039; and &#039;&#039;Go See&#039;&#039; principles. &#039;&#039;First&#039;&#039; , rather than trying to go faster when there are problems, manager-teachers encourage people to go &#039;&#039;slower&#039;&#039; and help them learn to see system dynamics and root causes, and to fix these—to improve the &#039;&#039;system&#039;&#039; of development. By going slower, Toyota—the masters of lean thinking—has become one of the fastest companies around. &#039;&#039;Second&#039;&#039; , for managers to &#039;&#039;go see at the real place of work&#039;&#039; to learn what is going on. The “real place” in software development is the code, which suggests that first-level managers are master programmers who are frequently evaluating the code.&lt;br /&gt;
&lt;br /&gt;
Une solution ? L’approche lean avec les principes &#039;&#039;Arrêter et corriger&#039;&#039; et &#039;&#039;Aller voir&#039;&#039;. &#039;&#039;Premièrement&#039;&#039;, plutôt que d’essayer d’aller plus vite lorsqu’il y a des problèmes, des managers-formateurs encouragent les gens à aller plus &#039;&#039;lentement&#039;&#039; et à les inciter à apprendre les dynamiques des systèmes, les causes racines et à les corriger pour améliorer le &#039;&#039;système&#039;&#039; du développement. En allant plus lentement, Toyota - les maîtres de l’approche lean - est devenue l’une des entreprises les rapides du monde. _Deuxièmement, les managers doivent &#039;&#039;aller voir ce qui se passe sur le vrai lieu de travail&#039;&#039; pour apprendre ce qu’il se passe. Le « vrai lieu » dans le développement logiciel c’est le code, ce qui implique que les managers de proximité sont des développeurs expérimentés qui évalueront le code fréquemment.&lt;br /&gt;
&lt;br /&gt;
Microsoft people did not reflect on the situation until after release. When they did finally hold a retrospective, it led to a &#039;&#039;zero-defects&#039;&#039; policy, meaning that the first priority was to fix known bugs in the code under development—to drive down to zero the open-defects list before writing more new-feature code.&lt;br /&gt;
&lt;br /&gt;
Les personnes de chez Microsoft n’ont pas réfléchi sur la situation que bien après la livraison. Lorsqu’ils ont fini par faire une rétrospective, cela a amené à une politique du &#039;&#039;zéro défaut&#039;&#039;, cela signifie que la première priorité était de corriger les anomalies connues dans le code en cours de développement afin d’aller vers du zéro anomalie ouverte dans la liste des anomalies avant d’écrire du code pour une nouvelle feature.&lt;br /&gt;
&lt;br /&gt;
== Seeing (and Hearing) Local Optimization ==&lt;br /&gt;
&lt;br /&gt;
== Voir (et entendre) l’optimisation locale ==&lt;br /&gt;
&lt;br /&gt;
“Everyone is doing their best yet overall systems throughput is degrading. How can that be?” This is the paradox of &#039;&#039;&#039;local optimization&#039;&#039;&#039; —when a person or departmental decision maker optimizes for the local view or self-interest. The party making the decision frequently &#039;&#039;believes they are making the best decision&#039;&#039; , but because ‘best’ is a local optimization, in fact it sub-optimizes overall system throughput. This is a result of “silo mentality,” misunderstanding, fear, limited information, delayed feedback, ignorance, careerism, avarice, and other common &#039;&#039;organizational learning disorders&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
« Chacun fait de son mieux, mais malgré tout le flux de production du système se dégrade. Comment cela est-il possible ? ». Il s’agit du paradoxe de &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039; - autrement dit c’est lorsqu’une personne à titre individuel ou un responsable de département prend une décision d’un point de vue local ou dans son propre intérêt. Les personnes prenant ce type de décision &#039;&#039;croient fréquemment qu’ils prennent la meilleure décision&#039;&#039;, mais parce que ‘meilleure’ est ici synonyme d’optimisation locale, cela a pour résultat une sous-optimisation globale du flux du système. Ceci est le résultat d’une « mentalité de silo », d’incompréhension, de peur, de restrictions d’informations, de feedbacks à retardement, d’ignorance, de carriérisme, d’avarice et de bien d’autres &#039;&#039;dysfonctionnements d’apprentissages organisationnels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A small product group of 30 people does not have the time or money to engage in much nonsense or waste. But large companies, with large product groups, centralized process and tool groups, a centralized “project management office,” and so forth, seem to have raised local optimization and waste to an art form. Government bureaucracies are the quintessential example, of course. As such, when you serve as a guide in large-scale agile adoption, &#039;&#039;seeing&#039;&#039; (or &#039;&#039;hearing&#039;&#039; ) and dealing with local optimization is singularly vital.&lt;br /&gt;
&lt;br /&gt;
Une petite équipe produit de 30 personnes n’a ni temps ni l’argent pour s’engager dans ce genre de non-sens ou de gâchis. Mais les grandes entreprises avec de grands groupes produit, des processus centralisés et des groupes outils, un « bureau de gestion de projet » centralisé, et ainsi de suite, semblent avoir élevé l’optimisation locale et le gâchis à une forme d’art. Les bureaucraties gouvernementales en sont bien sûr la quintessence. En conséquence, lorsque vous servez de guide dans une adoption agile à grande échelle, &#039;&#039;voir&#039;&#039; (ou &#039;&#039;entendre&#039;&#039;) et s’occuper de l’optimisation locale est tout simplement quelque chose de vital.&lt;br /&gt;
&lt;br /&gt;
For example, the legal and corporate security departments put in place a policy that seems terribly important from their perspective. In the aim of preventing loss of intellectual property (IP), the legal department decrees “no one shall put any information on the walls.” Or, in response to cost-cutting pressure, the facilities management says, “It is important to ensure our walls are not dirty or damaged.” And thus they shut down a practice in lean thinking, visual management (which is usually done on walls), and they inhibit a well-known innovation practice, group whiteboard work. The lawyers may succeed in reducing loss of IP (actually, that is questionable), and the facilities people will succeed in keeping the walls clean—at the cost of inhibiting the product development group from innovating and collaborating. Finally, the company falls behind with less and less IP even worth protecting because tools for innovation and delivering fast have been disallowed, but the lawyers have successfully fulfilled their mandate from the executive team to “ensure our IP is protected.” And the &#039;&#039;furniture police&#039;&#039; have clear walls. &#039;&#039;They have done their best&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Par exemple, les départements juridiques et sécurité mettent en place des politiques qui leurs semblent très importantes de leurs points de vue. Dans l’objectif de prévenir la perte de propriété intellectuelle, le département juridique peut décréter « il est interdit d’afficher tout type d’information sur les murs. ». Or, le département des immeubles soumis de son côté, à une pression de politique de réductions de coûts peut surenchérir en disant : « Il est important de s’assurer que nos murs ne soient ni sales ni abîmés ». Et ainsi s’arrête le management visuel qui est l’une des pratiques de l’approche lean (le management visuel se faisant habituellement sur les murs), et ils inhibent également une pratique d’innovation bien connue à savoir le travail de groupe devant un tableau blanc. Les juristes réussiront peut être à réduire la perte de propriété intellectuelle (ce qui en réalité devrait poser question), et les gens des immeubles réussiront à garder leurs murs propres - mais au prix d’inhiber le groupe de développement produit dans sa capacité d’innover et de collaborer. Finalement, l’entreprise se laissera distancer par la concurrence avec de moins en moins de propriété intellectuelle valant la peine d’être défendue parce que les outils permettant l’innovation et de livrer rapidement ont été bannis, mais les juristes auront rempli leur mandat vis-à-vis de la direction de « s’assurer que la propriété intellectuelle est protégée ». Et la police de la logistique aura nettoyé les murs. &#039;&#039;Ils ont fait de leur mieux&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The following is a real e-mail quote from the &#039;&#039;FURNITURE POLICE&#039;&#039; in one organization that dissallowed visual management on the walls. Can you identify the local optimizations and mental models driving this?&lt;br /&gt;
&lt;br /&gt;
Ce qui suit est extrait d’un vrai message électronique de la &#039;&#039;POLICE DE LA LOGISTIQUE&#039;&#039; dans une organisation qui a banni le management visuel sur les murs. Pouvez-vous identifier les optimisations locales et les modèles mentaux qui sont derrière tout ça ?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;Individual work cubic partition can be personalized. But things obvious higher than the partition or harming the office environment’s harmony are restricted.&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;_Les [https://fr.wikipedia.org/wiki/Bureau_%C3%A0_cloisons bureaux à cloisons] peuvent être personnalisés. Mais tout ce qui visible au-dessus de la cloison ou qui perturbe l’harmonie de l’environnement de bureau est interdite.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
We also see local optimization in centralized groups that make software tool choices for others. The common mindset is to choose a tool that is best at reducing some supposed cost (curiously, these groups seldom recommend free open source tools) or best at doing something complicated or best for the work of one specialized worker role (even though &#039;&#039;everybody&#039;&#039; has to use the tool), rather than maximizing the global goal of faster system throughput of value to customers.&lt;br /&gt;
&lt;br /&gt;
Nous constatons aussi des optimisations locales dans les groupes centralisés dont le rôle est de choisir les logiciels pour les autres personnes de l’entreprise. La croyance la plus répandue que cette démarche est qu’il s’agit de ce qu’il y a de mieux pour réduire les coûts d’achats (curieusement ces mêmes groupes recommandent rarement les logiciels libres gratuits) ou ce qu’il y a de mieux pour accomplir une tâche compliquée ou ce qu’il y a de mieux pour l’accomplissement du travail d’un seul type de travailleur (même si &#039;&#039;tout le monde&#039;&#039; est censé devoir utiliser l’outil), plutôt que de maximiser l’objectif de l’entreprise qui est d’avoir un système de flux de production de la valeur plus rapide pour les clients.&lt;br /&gt;
&lt;br /&gt;
In large-scale adoption of Scrum or agile principles, most of the “Yes, but …” issues that are raised are examples of local optimization, such as, “&#039;&#039;Yes, but…what about management reporting&#039;&#039;?” or more generally, “&#039;&#039;Yes, but…what about &amp;lt;special case=&amp;quot;&amp;quot;&amp;gt;&#039;&#039;?” Then, policies and practices are twisted around, serving the goal of reporting or some other secondary aim rather than the primary goal of optimizing for fast value throughput. Sometimes we see &#039;&#039;local optimization for the extreme or rare case&#039;&#039; . For example, a person responsible for making a centralized tool choice for the enterprise presents a scenario for a complex or rare case of use, and then chooses the tool that fits that, sub-optimizing for a 5 percent case instead of optimizing for ease and speed for the 95 percent case.&amp;lt;/special&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans les adoptions de Scrum ou des principes agiles à grande échelle, la plupart des problématiques de type « Oui, mais … » qui sont soulevées sont des exemples de sous-optimisations, comme par exemple « &#039;&#039;Oui, mais … qu’en est-il des comptes-rendus auprès du management&#039;&#039; ? » ou encore de manière plus générale « * Oui, mais … qu’en est-il de … * ? ». Alors, les principes et les pratiques sont dévoyés, pour servir soit l’objectif de rendre compte soit n’importe quel autre objectif secondaire plutôt que suivre l’objectif d’optimiser le flux de valeur produite. De temps en temps, nous voyons des &#039;&#039;&#039;optimisations locales dans certains cas rares ou extrêmes&#039;&#039;&#039;. Par exemple, une entreprise doit choisir un outil centralisé répondant à un certain nombre de cas d’utilisations possibles dont un cas extrêmement rare ou complexe, la personne, en charge de faire ce choix, choisit un outil correspondant à un cas unique d’utilisation, sous-optimisant ainsi l’ensemble du système pour un cas représentant uniquement 5% des cas d’utilisation au lieu de l’optimiser pour la majorité des 95% des autres cas d’utilisations.&lt;br /&gt;
&lt;br /&gt;
Other local optimizations are due to ignorance of new ways of working. This is especially common in large-scale product groups. For example, we once helped a large networking product group in Europe adopt Scrum and the practice of &#039;&#039;continuous integration&#039;&#039; (CI) combined with a CI system that continually integrated, built, and automatically tested the product. After some time, an outside traditional manager inspected what was going on, and recommended the integration practices should be changed—because there was no written integration plan for how a human integration manager should manually integrate all the software, and of course, there was no integration manager. They wanted to ‘optimize’ around the work of an integration manager that was no longer needed. They could not see that their entire old-fashioned model of work had been eliminated with CI. This story repeats in all the departments of a large established product: local optimization around the &#039;&#039;existing&#039;&#039; ways of work, such as manual test, a separate architecture department, component teams, and so on. A coach working to introduce large-scale Scrum at the enterprise level has a &#039;&#039;mountain&#039;&#039; of similar local optimization thinking to deal with.&lt;br /&gt;
&lt;br /&gt;
D’autres optimisations locales sont dues, quant à elles, à l’ignorance des nouvelles manières de travailler. C’est quelque chose de très répandue et tout spécialement dans les groupes produit à grande échelle. Par exemple, un jour nous avons aidé un groupe produit distribué à travers l’Europe à adopter d’une part Scrum et d’autre part la pratique de &#039;&#039;l’intégration continue&#039;&#039; (CI) le tout sous la forme d’un système d’intégration continue dédié intégrant, compilant, testant automatiquement de manière continue le produit. Après quelques temps, un manager, que l’on pourrait qualifier de traditionnel, extérieur au groupe est venu inspecter ce qu’il se passait. Celui-ci a recommandé que les pratiques d’intégration devraient être changées en raison de l’absence de schéma d’intégration global permettant à un responsable d’intégration de faire manuellement l’intégration de l’ensemble du logiciel ; une absence de schéma pour la bonne raison qu’il n’y avait plus besoin de responsable d’intégration au sein de l’organisation. Il voulait ‘optimiser’ le travail d’un responsable d’intégration qui n’existait plus. Il était dans l’impossibilité de voir que la totalité de l’ancienne manière de faire les choses avait disparu avec l’intégration continue. Cette histoire se répéta dans l’ensemble des départements du groupe produit : il y a avait des optimisations locales partout autour des façons de faire existantes, tels que les tests manuels, le département d’architecture séparé des équipes, les équipes composants, etc. N’importe quel coach dont la tâche consistait à introduire Scrum à grande échelle au niveau de l’organisation avait une &#039;&#039;montagne&#039;&#039; d’optimisations locales à penser à gérer.&lt;br /&gt;
&lt;br /&gt;
In lean thinking and agile methods, the focus is on global systems goals: Deliver value fast with high quality and morale—&#039;&#039;&#039;global optimization&#039;&#039;&#039; . Try to consider decisions in light of this goal. To develop an “optimize the whole” culture, challenge all decisions and policies with the question:&lt;br /&gt;
&lt;br /&gt;
Dans l’approche lean et dans les méthodes agiles, l’accent est mis sur les objectifs du système dans sa globalité : livrer de la valeur de grande qualité au plus vite tout en gardant le moral des équipes au plus haut - autrement dit une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039;. Essayer de reconsidérer vos décisions à la lumière de cet objectif. Pour développer une culture de « l’optimisation du tout », remettez donc en cause toutes les décisions et les règles avec la question suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Does this decision or policy focus on delivering value to the external customer fast, or does it focus on the interests of a department, person, internal policy/practice, or rare case?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;** Est-ce que cette décision ou cette règle se focalise-t-elle sur livrer de la valeur au client externe au plus vite, ou se focalise-t-elle sur les intérêts d’un département, d’une personne, d’une pratique/règle interne, ou d’un cas rarissime ?**&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
In LeSS, the Product Owner is responsible for choosing high-value goals that &#039;&#039;&#039;could lead to potentially shippable product (at the end of the Sprint) and that maximize the desired impacts and that delight the customer, while maintaining a sustainable pace and high engineering quality&#039;&#039;&#039;. That explicit goal is meant to orient the system toward global rather than local optimization.&lt;br /&gt;
&lt;br /&gt;
Dans LeSS, le Product Owner est responsable pour choisir ces objectifs à haute valeur qui &#039;&#039;&#039;pourrait mener à un produit potentiellement livrable (à la fin du Sprint) maximisant les impacts souhaités et réjouissant le client tout en maintenant un rythme soutenable et une haute qualité d’ingénierie&#039;&#039;&#039;. Cet objectif explicite est destiné à orienter le système vers son optimisation globale plutôt que vers une optimisation qui ne serait que locale.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In addition to becoming a systems thinker yourself, encourage others to learn more about this topic. We suggest you to try getting together at a whiteboard with colleagues to sketch a causal loop diagram, so that &#039;&#039;being&#039;&#039; systems thinkers and &#039;&#039;doing&#039;&#039; systems thinking are connected at the workplace.&lt;br /&gt;
&lt;br /&gt;
En plus de devenir un pratiquant de l’approche systémique vous-même, encouragez donc les autres à en apprendre plus sur ce sujet. Nous vous suggérons d’essayer de rassembler quelques-uns de vos collègues autour d’un tableau blanc et d’y dessiner des diagrammes de boucles causales, afin que les architectes des systèmes et les pratiquants de l’approche systémique soient réunis en un seul endroit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|group%20cld%20modeling.jpg]]&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-20-fr.png|frame|none|alt=|caption systems thinking-20.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
Séance d’approche systémique. Réalisation d’un diagramme de boucle cause à plusieurs mains dans l’objectif d’avoir une conversation.&lt;br /&gt;
&lt;br /&gt;
== Recommended Readings ==&lt;br /&gt;
&lt;br /&gt;
== Lectures recommandées ==&lt;br /&gt;
&lt;br /&gt;
* W. Edwards Deming’s [http://www.amazon.com/Out-Crisis-W-Edwards-Deming-ebook/dp/B00653KTES/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601625&amp;amp;sr=8-1&amp;amp;keywords=out+of+the+crisis &#039;&#039;Out of the Crisis&#039;&#039;] is a master work by arguably the most well-known systems thinker and quality expert. It opens with the modest goal, “The aim of this book is transformation of the style of American management… It requires a whole new structure, from foundation upward.” Deming also advocates the &#039;&#039;System of Profound Knowledge&#039;&#039; in which managers (1) appreciate there is a &#039;&#039;system&#039;&#039; , (2) understand common-cause and special-cause variation (queueing theory is related to variation), (3) understand limitations of knowledge and reasoning mistakes, and (4) know credible psychology and social research results so that behavior- or motivation-related policies are &#039;&#039;not&#039;&#039; based on “common sense.” The core of the book centers around his famous &#039;&#039;14 Points for Management&#039;&#039; , including (for example), “&#039;&#039;Eliminate management by objective. Eliminate management by numbers, numerical goals. Substitute leadership&#039;&#039; .”&lt;br /&gt;
* [https://www.amazon.fr/Hors-crise-W-Edwards-Deming/dp/2717843930/ &#039;&#039;Hors de la Crise&#039;&#039;] de W. Edwards Deming est un ouvrage de référence par, sans conteste, le plus connu des penseurs systémiques et des experts sur la qualité. Cet ouvrage commence par un objectif modeste : « l’objectif de ce livre est la transformation du style du management américain … ce qui exige une toute nouvelle structure de fonds en combles. ». Deming prône un &#039;&#039;Système de connaissances approfondies&#039;&#039; dans lequel les managers (1) reconnaissent qu’il y a un &#039;&#039;système&#039;&#039;, (2) qu’ils sont en mesure de comprendre les facteurs les plus répandus et les facteurs spéciaux de variations au sein du système (la théorie des files d’attente est liée à ce phénomène de variation), (3) qu’ils sont en mesure de comprendre que les connaissances sont limitées et qu’il y a des erreurs de raisonnements, et (4) que la psychologie et les recherches en sciences sociales jouent des rôles tout à fait crédibles dans l’objectif de comprendre que les règles régissants les comportements ou en lien avec la motivation des individus ne soient pas basés sur le seul « bon sens ». Le cœur de l’ouvrage tourne autour des célèbres &#039;&#039;14 points pour le management&#039;&#039;, y compris par exemple « &#039;&#039;Éliminer le management par les objectifs. Éliminer le management par les nombres, par les objectifs par les nombres. Y substituer le leadership&#039;&#039;»&lt;br /&gt;
* Jay Forrester’s [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601681&amp;amp;sr=8-1&amp;amp;keywords=industrial+dynamics &#039;&#039;Industrial Dynamics&#039;&#039;] is the classic text on system dynamics—well written and insightful. Although written in the early 1960s, it is as relevant today as when published. It goes beyond cause-effect modeling to also model the flow and inventories of information, money, and material in systems. The book includes formal mathematical modeling but this is not obligatory to appreciate system dynamics.&lt;br /&gt;
* [https://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ &#039;&#039;Industrial Dynamics&#039;&#039;] de Jay Forrester est un classique du genre sur les dynamiques des systèmes - très bien écrit et très instructif. Même si cet ouvrage a été écrit au début des années 1960, il est toujours aussi pertinent aujourd’hui. Il va au-delà de la modélisation des causes à effets pour modéliser également le flux et les stocks d’informations, d’argent et de matériaux au sein d’un système. Le livre contient également une modélisation mathématique formelle de ces dynamiques, toutefois la lecture de cette dernière reste facultative quant à apprécier la qualité de l’ouvrage.&lt;br /&gt;
* Weinberg’s &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039; and &#039;&#039;An Introduction to General Systems Thinking&#039;&#039; are worthwhile. Written from the perspective of an experienced consultant in systems development.&lt;br /&gt;
* Les ouvrages [https://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039;] et [https://www.amazon.fr/Introduction-General-Systems-Thinking-Weinberg/dp/0932633498/ &#039;&#039;An Introduction to General Systems Thinking&#039;&#039;] de Gerald Weinberg sont intéressants. Il sont écrits du point de vue d’un consultant expérimenté en développement de systèmes.&lt;br /&gt;
* Senge’s [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601715&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline &#039;&#039;The Fifth Discipline&#039;&#039;] is a classic that advocates the need for leadership to apply systems thinking (it is the &#039;&#039;fifth&#039;&#039; discipline) and other key disciplines for a great, sustainable enterpise. The others include leaders with (1) personal mastery and (2) reflection on their beliefs and faulty reasoning, the (3) definition and communication of a meaningful shared vision, and (4) the ability of teams to learn. We recommend ignoring—at least during the first few years of practice—the ‘archetypes’ notion presented in the book. It was well meant as a learning aid but has been observed to distract and intimidate people from learning and applying basic system dynamics modeling. The ‘archetypes’ are not part of original system dynamics.&lt;br /&gt;
&lt;br /&gt;
[https://www.amazon.fr/cinqui%C3%A8me-discipline-Levier-organisations-apprenantes/dp/2212559372/ &#039;&#039;La cinquième discipline&#039;&#039;] est un autre classique du genre qui prône que l’encadrement d’une entreprise devrait appliquer l’approche systémique (autrement dit la &#039;&#039;cinquième&#039;&#039; discipline) ainsi que d’autres disciplines-clés toutes aussi importantes en vue d’obtenir une entreprise durable. Ces autres disciplines que les dirigeants devraient appliquer sont (1) une maîtrise personnelle des aspirations, (2) une réflexion sur leurs propres croyances et raisonnements erronés, (3) la définition et la communication d’une vision partagée ayant du sens, et (4) la capacité des équipes à apprendre. Nous vous recommandons d’ignorer - du moins dans un premier temps pendant vos premières années de pratiques - le concept d’archétypes présenté dans le livre. Ce concept avait pour but d’être une aide à l’apprentissage de la cinquième discipline mais nous avons observé qu’il était soit une source de distraction soit qu’il intimidait les lecteurs quant à leur apprentissage et à l’application de la modélisation des dynamiques des systèmes. Les ‘archetypes’ ne font pas partie à l’origine des dynamiques des systèmes.&lt;br /&gt;
&lt;br /&gt;
* [http://www.amazon.com/Fifth-Discipline-Fieldbook-Strategies-Organization-ebook/dp/B00JTCJEO8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601809&amp;amp;sr=8-1&amp;amp;keywords=The+Fifth+Discipline+Fieldbook &#039;&#039;The Fifth Discipline Fieldbook&#039;&#039;] is an in-depth resource, written from the viewpoint of many practitioners and consultants.&lt;br /&gt;
&lt;br /&gt;
*[https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ &#039;&#039;La 5ème discipline - le guide de l’organisation apprenante&#039;&#039;] est une source extrêmement riche sur l’approche systèmique écrite du point de vue des pratiquants de cette approche et de consultants.&lt;br /&gt;
&lt;br /&gt;
* The organizational-learning writings from Argyris, Putnam, McLain, and Schön. Important concepts include &#039;&#039;double-loop learning&#039;&#039; and &#039;&#039;high-advocacy/high-inquiry dialogue&#039;&#039;. Classic works include [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] and [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les écrits d’Argyris, Outnam, McLain et Schön sur les apprentissages organisationnels comme [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] et [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;] abordent des concepts importants tels que la &#039;&#039;double-boucle apprenante&#039;&#039; et le &#039;&#039;dialogue grand-plaidoyer/grand-réquisitoire&#039;&#039;.&lt;br /&gt;
* The publications and resources available through the [https://www.solonline.org/ &#039;&#039;Society for Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les publications et les ressources de la &#039;&#039;Society for Organizational Learning&#039;&#039;](https://www.solonline.org/).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===== Notes: =====&lt;br /&gt;
&lt;br /&gt;
# Senge wrote &#039;&#039;The Fifth Discipline&#039;&#039; , on systems thinking and learning organizations, named “one of the seminal management books of the last 75 years” by the &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94].&lt;br /&gt;
# Another reason: Believing more control is possible than actually is. Complexity science suggests fundamental limits on predicting and controlling semi-chaotic social systems [Stacey07]. This is a rather large can of worms that will remain unopened in this book.&lt;br /&gt;
# Macroeconomics, psychology, sociology, and biology are exceptions, among many others.&lt;br /&gt;
# ‘Basic’ does not mean trivial or easy to solve. For example, ‘motivation’ and ‘quality’ are basic but not easy issues.&lt;br /&gt;
# &#039;&#039;Feedback loops&#039;&#039; is occasionally used in this book in the colloquial sense of feedback, rather than this system dynamics sense.&lt;br /&gt;
&lt;br /&gt;
[^1] &#039;&#039;La cinquième discipline&#039;&#039; écrit par Senge sur l’approche systèmique et les organisations apprenantes a été nommé « l’un des livres les plus novateurs sur le management de ces 75 dernières années » par la &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94]. [^2]: Une autre raison : Croire que plus de contrôle est possible qu’il ne l’est actuellement. La science de la complexité montre qu’il existe des limites en terme de prédiction et de contrôle des systèmes sociaux semi-chaotiques [Stacey07]. C’est une énorme boîte de Pandore qui restera enfermée dans ce livre. [^3]: Macro économie, psychologie, sociologie et biologie sont des exemples d’exceptions parmi d’autres [^4]: ‘Basique’ ne signifie pas trivial ou facile à résoudre. Par exemple, les problématiques de ‘motivation’ et de ‘qualité’ sont des problématiques basiques mais elles ne sont pas faciles à résoudre. [^5]: &#039;&#039;Les boucles de feedback&#039;&#039; sont parfois utilisées dans ce livre dans le sens littéral du terme, plutôt dans le sens des dynamiques des systèmes&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14225</id>
		<title>LeSS - Approche systémique</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14225"/>
		<updated>2020-10-27T21:29:30Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Systems Thinking =&lt;br /&gt;
&lt;br /&gt;
= Approche systémique =&lt;br /&gt;
&lt;br /&gt;
I took a speed reading course and read “War and Peace” in twenty minutes. It involves Russia. —Woody Allen&lt;br /&gt;
&lt;br /&gt;
J’ai pris un cours de lecture rapide puis j’ai lu « Guerre et Paix » en vingt minutes. Cela parle de la Russie.&lt;br /&gt;
&lt;br /&gt;
“No matter what we do, the number of defects in our backlog remains about the same,” a manager told us; this for a 15 MSLOC C and C++ product with several hundred developers where we were working. What’s going on? Systems thinking may help. In small groups the forces at play are more quickly seen and informally understood, but in large product development—or any large system—it’s tough. Gerry Weinberg highlights two decisive factors in this situation:&lt;br /&gt;
&lt;br /&gt;
« Quoi que nous fassions, le nombre d’anomalie dans notre &#039;&#039;backlog&#039;&#039; reste identique. » nous a dit un jour un manager en évoquant un produit de près de 15 millions de lignes de code sur lequel plusieurs centaines de développeurs étaient en train de travailler. Que pouvait-il bien se passer ? L’approche systémique peut s’avérer utile dans ce cas comme dans d’autres. En petits groupes, les forces en présence peuvent rapidement être identifiées et comprises de manière informelle, mais dans le cadre du développement d’un gros produit ou de n’importe quel gros système, c’est difficile. Gerry Weinberg met en avant deux facteurs décisifs dans ce genre de situation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Weinberg-Brooks’ Law&#039;&#039;&#039;: More software projects have gone awry from management’s taking action based on &#039;&#039;&#039;&#039;&#039;incorrect system models&#039;&#039;&#039;&#039;&#039; than for all other causes combined.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causation Fallacy&#039;&#039;&#039;: Every effect has a cause… and we can tell which is which. [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Loi de Weinberg-Brooks&#039;&#039;&#039; : De plus en plus de projets informatiques sont partis de travers après que le management ait pris des décisions basées sur des &#039;&#039;&#039;modèles systémiques incorrects&#039;&#039;&#039; plus que pour toutes autres causes combinées.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Erreur de causalité&#039;&#039;&#039; : Chaque effet a une cause … et nous pouvons dire desquelles il s’agit. [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
These reflect the impact of our &#039;&#039;&#039;mental models&#039;&#039;&#039; on the system, a subject that will be revisited later in this section.&lt;br /&gt;
&lt;br /&gt;
Ces deux facteurs reflètent bien l’impact de nos &#039;&#039;&#039;modèles mentaux&#039;&#039;&#039; sur le système, un sujet que nous reverrons plus tard dans cette section.&lt;br /&gt;
&lt;br /&gt;
Problems stemming from mental models and assumptions are one issue. Another is that large-scale adoption of Scrum, lean thinking, and agile principles is not isolated to the development group. It bumps into product management, budgeting, beta-testing, launch, and governance and HR policies. Accordingly, in large-scale agile adoption it is useful to be able to get together with colleagues and &#039;&#039;effectively reason&#039;&#039; about the mental models, causal relations, feedback loops, and control mechanisms (or illusions of control) in a big system that is about to be seriously &#039;&#039;perturbed.&#039;&#039; Systems thinking is one of those reasoning tools.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résultant de nos modèles mentaux et de nos postulats sont un point à traiter. Un autre point est l’adoption à grande échelle de Scrum, de l’approche lean et des principes agiles en dehors du domaine du développement. Ce point est aussi présent dans la gestion de produit, les budgets, les tests, la commercialisation, la gouvernance et la politique RH. En conséquence, dans les adoptions agiles à grande échelle, il est utile de se réunir avec des collègues et de &#039;&#039;réfléchir en profondeur&#039;&#039; sur les modèles mentaux, les relations causales, les boucles de &#039;&#039;feedback&#039;&#039; et les mécanismes de contrôles (ou les illusions de contrôle) dans un gros système qui va être sérieusement &#039;&#039;pertubé&#039;&#039;. L’approche systémique est l’un de ces outils de réflexion.&lt;br /&gt;
&lt;br /&gt;
In 1958, the &#039;&#039;Harvard Business Review&#039;&#039; published [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”] a landmark paper by Jay Forrester, MIT Sloan School professor. This paper spurred the movement of systems thinking in business education, and the MIT Sloan School of Management became known for educating people in &#039;&#039;&#039;system dynamics&#039;&#039;&#039;. System dynamics is sometimes treated as a synonym for &#039;&#039;&#039;systems thinking&#039;&#039;&#039; , though the latter is a more general term.&lt;br /&gt;
&lt;br /&gt;
En 1958 la &#039;&#039;Harvard Business Review&#039;&#039; a publié un article de Jay Forrestor, professeur au MIT Sloan School, qui a fait date [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”]. Cet article a lancé le mouvement de l’approche systémique dans le domaine des formations en gestion d’entreprise et la MIT Sloan School of Management devint célèbre pour ses formations en &#039;&#039;&#039;dynamique des systèmes&#039;&#039;&#039;. Le terme de dynamique des systèmes est parfois utilisé comme synonyme d’&#039;&#039;&#039;approche systémique&#039;&#039;&#039;, même si ce dernier est un terme beaucoup plus général.&lt;br /&gt;
&lt;br /&gt;
MIT also attracted other system-dynamics-oriented researchers such as Peter Senge.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-1 1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le MIT a également attiré d’autres chercheurs intéressés par la dynamique systémique tel que Peter Senge[^1].&lt;br /&gt;
&lt;br /&gt;
Consistent with &#039;&#039;Weinberg-Brook’s Law&#039;&#039;, Forrester’s research showed that decision makers who were given dynamic models of a business system and asked to improve their output performance, &#039;&#039;usually made them run worse&#039;&#039; [http://www.amazon.com/The-Fifth-Discipline-Fieldbook-Organization/dp/0385472560/ref=sr_1_fkmr0_3?ie=UTF8&amp;amp;qid=1413528034&amp;amp;sr=8-3-fkmr0&amp;amp;keywords=The+Fifth+Discipline+%EF%BF%BCFieldbook [SKRRS94]]. The observation was that most people have weak judgement on how to fundamentally improve systems, usually applying incorrect “common sense” and quick-fix ‘solutions’ that do not create long-lasting systemic improvement.&lt;br /&gt;
&lt;br /&gt;
En corrélation avec la loi de &#039;&#039;Weinberg-Brook&#039;&#039;, Jay Wright Forrester a montré que les décideurs à qui il avait été donné des modèles dynamiques de systèmes opérationnels et à qui il avait été demandé d’améliorer la performance opérationnelle, &#039;&#039;n’avaient fait généralement qu’empirer les choses&#039;&#039; [https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ [SKRRS94]]. Il en est ressorti d’ailleurs que la plupart des personnes évaluaient mal la manière dont il faut améliorer les systèmes, et appliquaient généralement leur « bon sens », en mettant en place des solutions de contournement qui n’apportent aucune amélioration systémique à long terme.&lt;br /&gt;
&lt;br /&gt;
Why is the behavior of a large development group (a system) not understood or guided skillfully? The answer lies, in part, in the behavior of stochastic systems with queues and variability, as explored in the [https://less.works/less/principles/queueing_theory.html Queueing Theory] LeSS principle. And the same answer lies in &#039;&#039;control theory&#039;&#039;: Most systems of interest—such as a product development group—have complex positive and negative feedback loops and nonlinear behavior. The behavior of these systems defies our gut instinct. And then there is the minor issue of &#039;&#039;people&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pourquoi le comportement d’un groupe de développement de grande taille (autrement dit un système) n’est-il pas compris ou guidé de manière compétente ? La réponse réside, en partie, dans le comportement des systèmes stochastiques avec les files et les variabilités comme nous avons pu l’évoquer avec le principe LeSS de la [http://www.les-traducteurs-agiles.org/2017/01/29/less-theorie-des-files-d-attente.html théorie des files d’attentes]. Et c’est la même réponse qui est au cœur de la &#039;&#039;théorie du contrôle&#039;&#039; : la plupart des systèmes d’intérêt - tel qu’un groupe de développement de produit - ont des boucles de &#039;&#039;feedback&#039;&#039; positives et négatives ainsi qu’un comportement non linéaire. Le comportement de ces systèmes défient nos instincts. Et puis il y a la problématique mineure des &#039;&#039;gens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In summary, reasons for not being skillful in fathoming or guiding a big system include (but are not limited to):&lt;br /&gt;
&lt;br /&gt;
En résumé, les raisons expliquants l’incompétence à maîtriser ou à guider un gros systèmes sont (liste non exhaustive) :&lt;br /&gt;
&lt;br /&gt;
* lack of knowledge about the system dynamics, feedback loops, nonlinear systems behavior, and unintended consequences in workplace systems&lt;br /&gt;
* un manque de connaissance des dynamiques des systèmes, des boucles de &#039;&#039;feedback&#039;&#039;, du comportement non linéaire des systèmes, et des conséquences inattendues dans les systèmes sur le lieu de travail.&lt;br /&gt;
* not understanding root causes of problems (and how to find)&lt;br /&gt;
* une incompréhension des causes racines des problèmes (et de comment les trouver)&lt;br /&gt;
** &#039;&#039;causes,&#039;&#039; not cause; in systems thinking one sees that there are multiple, indirect, and dynamic causes to problems&lt;br /&gt;
** &#039;&#039;les causes&#039;&#039;, non la cause ; en approche systémique, nous savons que les causes des problèmes sont multiples, indirectes et dynamiques&lt;br /&gt;
* not knowing if or why quick-fix or local-department decisions degraded overall delivery performance.&lt;br /&gt;
* l’incapacité à savoir si ou pourquoi une solution de contournement ou une décision locale dégrade la performance globale opérationnelle.&lt;br /&gt;
&lt;br /&gt;
In short, not being systems thinkers.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-2 2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En bref, ne pas utiliser l’approche systémique[^2].&lt;br /&gt;
&lt;br /&gt;
These reasons are consequential at the intersection of management and large-scale adoption of lean and agile principles. The leadership team is part of the system being perturbed; if they do not apply systems thinking, they could &#039;&#039;really&#039;&#039; perturb it—and not in a good way!&lt;br /&gt;
&lt;br /&gt;
Ces raisons sont la conséquence de l’intersection du management et de l’adoption des principes lean et agile. L’équipe de direction fait partie du système qui est pertubé ; si elle n’applique pas l’approche systémique, elle pourrait &#039;&#039;vraiment&#039;&#039; le perturber - et pas de la bonne façon.&lt;br /&gt;
&lt;br /&gt;
As a summary of systems thinking insight, we like the [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 ‘laws’] described in [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413531002&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline The Fifth Discipline]:&lt;br /&gt;
&lt;br /&gt;
Les points-clés à retenir de l’approche systémique peuvent être résumé dans les [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 lois] décrites dans la [https://www.amazon.fr/cinqui%C3%A8me-discipline-organisations-apprenantes-dexemplaires-ebook/dp/B017WSYAHG Cinquième discipline]&lt;br /&gt;
&lt;br /&gt;
* Today’s problems come from yesterday’s ‘solutions.’&lt;br /&gt;
* The harder you push, the harder the system pushes back.&lt;br /&gt;
* Behavior will grow worse before it grows better.&lt;br /&gt;
* The easy way out usually leads back in.&lt;br /&gt;
* The cure can be worse than the disease.&lt;br /&gt;
* Faster is slower.&lt;br /&gt;
* Cause and effect are not closely related in time and space.&lt;br /&gt;
* Small changes can produce big results…but the areas of highest leverage are often the least obvious.&lt;br /&gt;
* You can have your cake and eat it too—but not all at once.&lt;br /&gt;
* Dividing an elephant in half does not produce two small elephants.&lt;br /&gt;
* There is no blame.&lt;br /&gt;
* Les problèmes d’aujourd’hui viennent des solutions d’hier&lt;br /&gt;
* Plus vous poussez, plus le système pousse en retour&lt;br /&gt;
* Le comportement empirera d’abord avant de s’améliorer&lt;br /&gt;
* La manière la plus facile de s’en sortir conduit souvent à faire quelques pas en arrière&lt;br /&gt;
* Le médicament peut être pire que la maladie&lt;br /&gt;
* Plus vite c’est plus lentement&lt;br /&gt;
* Les causes et les effets ne sont pas étroitement liés dans l’espace et le temps&lt;br /&gt;
* De petits changements peuvent produire de gros résultats … mais les zones où l’effet de levier est le plus important sont souvent les moins évidentes&lt;br /&gt;
* Vous pouvez avoir votre gâteau et le manger aussi - mais pas en une seule bouchée&lt;br /&gt;
* Couper un éléphant en deux ne produit pas deux petits éléphants&lt;br /&gt;
* Il n’y a aucun reproche à faire&lt;br /&gt;
&lt;br /&gt;
Toyota’s internal motto is [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html “Good &#039;&#039;&#039;thinking&#039;&#039;&#039;, good products.”] Systems thinking is a set of &#039;&#039;thinking&#039;&#039; tools to help…&lt;br /&gt;
&lt;br /&gt;
La devise de Toyota en interne est [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html « Une bonne &#039;&#039;&#039;réflexion&#039;&#039;&#039;, de bons produits »]. L’approche systémique est un jeu d’outils de réflexion pour aider …&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;see system dynamics&#039;&#039;&#039;—a development organization is a system of people and policies with subtle feedback loops and unintended consequences&lt;br /&gt;
* &#039;&#039;&#039;à voir les dynamiques des systèmes&#039;&#039;&#039; - une organisation de développement est un système de personnes et de règles avec de subtiles boucles de &#039;&#039;feedback&#039;&#039; et des conséquences inattendues&lt;br /&gt;
** we can learn to see and thus improve the system with &#039;&#039;&#039;causal loop diagrams&#039;&#039;&#039; created in a workshop&lt;br /&gt;
** nous pouvons apprendre à voir et ainsi à améliorer le système avec des &#039;&#039;&#039;diagrammes de boucles causales&#039;&#039;&#039; faits lors d’un atelier&lt;br /&gt;
* &#039;&#039;&#039;see mental models&#039;&#039;&#039;—one reason behind suboptimal decisions is mistaken assumptions and faulty reasoning&lt;br /&gt;
* &#039;&#039;&#039;à percevoir les modèles mentaux&#039;&#039;&#039; - parmi les raisons derrière des décisions sous-optimales se trouvent des hypothèses erronées et des raisonnements incorrects&lt;br /&gt;
** causal loop diagramming and Five Whys expose these&lt;br /&gt;
** les diagrammes de boucles causales et les cinq pourquoi permettent de révéler tout ça&lt;br /&gt;
* &#039;&#039;&#039;see local optimization&#039;&#039;&#039;—another source of suboptimal decisions is &#039;&#039;&#039;local optimization&#039;&#039;&#039; , making the ‘best’ decision from the viewpoint of a person or department, rather than &#039;&#039;&#039;global optimization&#039;&#039;&#039; for the lean systems-level goal of &#039;&#039;deliver value fast with high quality and high morale&#039;&#039; .&lt;br /&gt;
* &#039;&#039;&#039;à voir les optimisations locales&#039;&#039;&#039; - une autre source de décisions sous-optimales est &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit prendre la « meilleure » décision du point de vue d’une personne ou d’un département, au détriment d’une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039; qui est l’objectif au niveau système &#039;&#039;lean&#039;&#039; que de pouvoir &#039;&#039;livrer la plus grande valeur possible de très grande qualité avec un moral d’acier&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This introduction is organized around the following areas in systems thinking: Learning to see (1) &#039;&#039;system dynamics&#039;&#039; , (2) &#039;&#039;mental models&#039;&#039; , (3) &#039;&#039;root causes&#039;&#039; , and (4) &#039;&#039;local optimization&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Cette introduction à l’approche systémique est présenté autour des domaines suivants : Apprendre à voir (1) &#039;&#039;les dynamiques des systèmes&#039;&#039;, (2) &#039;&#039;les modèles mentaux&#039;&#039;, (3) &#039;&#039;les causes racines&#039;&#039;, et (4) &#039;&#039;l’optimisation locale&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Static versus Dynamic Complexity ===&lt;br /&gt;
&lt;br /&gt;
=== Complexité statique versus complexité dynamique ===&lt;br /&gt;
&lt;br /&gt;
Many of us, especially in engineering and finance, are educated to master &#039;&#039;&#039;complexity of static details&#039;&#039;&#039;—learning to analyze and manage information (requirements, financial analysis, …), decompose complex structures into simpler ones, and so forth. That is, complexity of a static, information, or structural nature.&lt;br /&gt;
&lt;br /&gt;
La plupart d’entre nous, notamment les ingénieurs et les financiers, ont été formés pour maîtriser la &#039;&#039;&#039;complexité de détails statiques&#039;&#039;&#039; - en apprenant à analyser et à gérer l’information (exigences, analyses financières, …), à décomposer des structures complexes en structures simples, et ainsi de suite. C’est-à-dire, la complexité d’une information qui est par nature structurellement statique.&lt;br /&gt;
&lt;br /&gt;
Why do big software systems tend to degrade, with more and more time spent on defects? What might happen if the USA invades Iraq? Seeing the dynamics behind these questions involves analysis of the &#039;&#039;&#039;complexity of dynamics&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Pourquoi les gros systèmes informatiques ont-ils tendance à se dégrader malgré de plus en plus de temps passé sur les anomalies ? Qu’est-ce qui pourrait bien se passer si les États-Unis d’Amérique envahissait l’Irak ? Voir les dynamiques derrière ces questions implique d’analyser la &#039;&#039;&#039;complexité des dynamiques&#039;&#039;&#039; en jeu.&lt;br /&gt;
&lt;br /&gt;
In contrast to static-details education, many of us receive no &#039;&#039;formal&#039;&#039; education in analyzing &#039;&#039;dynamics&#039;&#039; complexity&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-3 3]&amp;lt;/sup&amp;gt;, especially workplace dynamics. Perhaps there is a belief it is sufficient to rely on common sense in the workplace. Forrester demonstrated that “common sense” is just not so in complex systems, and showed it is possible to formally educate people to become better system dynamics thinkers in the workplace using &#039;&#039;dynamic system models&#039;&#039; visualized in &#039;&#039;flow diagrams&#039;&#039; [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
En contraste avec une formation sur les détails statiques que la plupart d’entre nous avons suivie, peu d’entre nous ont reçu de formation sur l’étude des systèmes dynamiques et complexes[^3] et notamment en milieu professionnel. Peut-être parce que nous avons la croyance qu’il est suffisant de s’appuyer sur le bon sens en milieu professionnel. Jay Wright Forrester a démontré que le « bon sens » n’est pas suffisant dans des systèmes complexes et qu’il est possible de former des personnes pour leur permettre de mieux appréhender les dynamiques des systèmes en milieu professionnel en utilisant notamment des &#039;&#039;diagrammes de flux&#039;&#039; [http://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
Flow diagrams encompass material, financial, and information flows, stocks (variables with a quantity, such as cash or number of defects), the impact of decisions and policies, and cause-effect relations. A popular simplification is the &#039;&#039;&#039;causal loop diagram&#039;&#039;&#039; that focuses on cause-effect relationships and feedback loops in a system [http://www.amazon.com/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. There are a variety of similar notations; they all show stocks (variables), causal links, and delay. In [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] this is called the &#039;&#039;diagram of effect&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de flux peuvent s’appliquer aussi bien aux flux matériels, financiers, d’informations, de stocks (n’importe quel type de stock quantitatif comme de l’argent ou des anomalies), aux conséquences des décisions et des politiques et des relations de causes à effet. Lorsque nous pensons aux diagrammes de flux, nous pensons souvent au seul diagramme de boucle causale dédié aux relations de cause à effets et aux boucles de rétroaction dans un système [http://www.amazon.fr/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. Il existe une grande variété d’autres diagrammes qui peuvent faire figurer les stocks (quels qu’ils soient), les liens de causalités, et les retards. Dans son ouvrage, [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] Gerald Weinberg appelle cela un &#039;&#039;diagramme d’effet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== The First Law of Diagramming: Model to Have a Conversation ===&lt;br /&gt;
&lt;br /&gt;
=== La première loi de la réalisation d’un diagramme : nous modélisons pour avoir une conversation ===&lt;br /&gt;
&lt;br /&gt;
A tool to learn to see system dynamics is a causal loop diagram, ideally sketched on a whiteboard in a LeSS Overall Retrospective with colleagues. Before going further, here is the &#039;&#039;First Law of Diagramming&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un outil très utile pour apprendre les dynamiques des systèmes est le diagramme de boucles causales - nous vous recommandons de l’utiliser sur un tableau blanc notamment lors des Rétrospectives Globales LeSS. Mais avant d’aller plus loin, voici la &#039;&#039;première loi de réalisation d’un diagramme&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;The primary value in diagrams is in the discussion while diagramming—we model to have a conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;La première valeur d’un diagramme c’est la discussion qui se déroule lors de la réalisation du diagramme - nous modélisons pour avoir une conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
When a group gets together to sketch a causal loop diagram on a whiteboard (See it is the the acts of discussing and thinking that are most important when diagramming, Valtech India.), the primary value is the conversation and shared understanding they arrive at while creating the model. Its visualization as an easy-to-see diagram &#039;&#039;is&#039;&#039; important to make concrete and unambiguous (on the whiteboard) the ideas—the mental models people have—because words alone can be fuzzy and misunderstood. But still, the diagram is secondary to what people take away: learning and a revised understanding through a discussion.&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un groupe se rassemble pour dessiner un diagramme de boucles causales sur un tableau blanc (« C’est l’acte de discuter et de réfléchir qui est le plus important lorsque nous dessinons », Valtech India.), la première valeur d’un diagramme c’est la conversation et la compréhension commune à laquelle les personnes arrivent lors de la création du modèle. Ce qu’il en résulte à savoir un diagramme facile à comprendre est important pour rendre les idées et les modèles mentaux concrets et non ambigües (sur le tableau blanc) parce que les mots seuls peuvent être imprécis et mal compris. Toutefois, le diagramme est secondaire par rapport avec ce que les gens repartent : ils ont appris quelque chose et ont revu leur compréhension du monde à travers une discussion.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|frame|none|alt=|caption group%20cld%20modeling.jpg]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Xgroup-cld-modeling.jpg|frameless|848px|Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Concrete modeling tip&#039;&#039; : We start by writing on sticky notes to define &#039;&#039;variables&#039;&#039; . A note might read “feature velocity” or “# defects.” We place these on a whiteboard. Then we sketch causal link lines between the sticky notes. There will be (or should be) lots of rewriting, erasing, and redrawing during the modeling session. The most meaningful outcome is &#039;&#039;understanding&#039;&#039; ; in addition, some participants will want to take a digital photo of the whiteboard sketch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Trucs et astuces de pro pour modéliser&#039;&#039; : Nous commençons par écrire sur des petits papiers repositionnables les noms des &#039;&#039;variables&#039;&#039;, par exemple « vélocité des &#039;&#039;features&#039;&#039; » ou « nombre d’anomalies ». Nous les plaçons ensuite sur le tableau blanc. Puis nous dessinons les liens de causalités entre les papiers . Il y aura (ou il devrait y avoir) beaucoup de réécriture, d’effaçage, de redessin lors de la session de modélisation. Le résultat le plus important d’une telle session est la &#039;&#039;compréhension&#039;&#039; - il se peut qu’à l’issue de cet atelier, certains participants voudront prendre une photo du dessin du tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Causal Loop Diagrams ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : les diagrammes de boucles causales ==&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams are used regularly in introductions to LeSS, to help see the dynamics of what is going on in large-scale development. It is useful to understand them for that reason alone. And more useful to you, we recommend you do these together with colleagues at a whiteboard. Model to have a conversation. When? Probably during a LeSS Overall Retrospective.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales sont souvent utilisés en introduction à LeSS pour aider à voir les dynamiques de ce qu’il se passe dans du développement à grande échelle. Il est donc utile de comprendre ce type de diagrammes pour cette seule et unique raison. Et cela s’avèrera encore plus utile pour vous, si vous le faites avec vos collègues devant un tableau blanc. Vous modélisez pour avoir une conversation. Quand ? Plus probablement lors d’une rétrospective globale LeSS.&lt;br /&gt;
&lt;br /&gt;
The practical aspect of this tip is more important than may first be appreciated. It is vague and low-impact to suggest “be a systems thinker.” But if you and four colleagues get into the habit of standing together at a large whiteboard, sketching causal loop diagrams together, then there is a concrete and potentially high-impact practice that connects “&#039;&#039;be&#039;&#039; a systems thinker” with “&#039;&#039;do&#039;&#039; systems thinking.”&lt;br /&gt;
&lt;br /&gt;
L’aspect pratique de cet exercice est bien plus important que ce qu’il peut paraître au premier abord. Notre conseil d’« être un pratiquant systémique » peut vous sembler vague et sans grand impact. Mais si vous et quatre de vos collègues prenez l’habitude de vous réunir devant un grand tableau blanc, en dessinant des diagrammes de boucles causales ensemble, alors vous arriverez à faire la connexion entre « &#039;&#039;être&#039;&#039; un pratiquant systémique » avec « &#039;&#039;faire&#039;&#039; de l’approche systémique ».&lt;br /&gt;
&lt;br /&gt;
The following examples seem sterile when presented in a book. But imagine you were at a whiteboard with other people and the diagrams were being sketched during a lively conversation. That’s the way we suggest ‘doing’ systems thinking.&lt;br /&gt;
&lt;br /&gt;
Les exemples suivants peuvent paraître stériles car présentés dans un livre. Mais imaginez-vous à côté d’un tableau blanc avec d’autres personnes dessinant ensemble des diagrammes au cours d’une conversation animée. C’est de cette manière-là que nous suggérons de ‘ faire ’ de l’approche systémique.&lt;br /&gt;
&lt;br /&gt;
====== Notation and Examples ======&lt;br /&gt;
&lt;br /&gt;
====== Notation et exemples ======&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams contain many elements; the following common useful subset is explored through a scenario.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales contiennent beaucoup d’éléments ; les éléments suivants sont les plus communément utilisés et sont vus en détail tout au long du scénario qui va suivre&lt;br /&gt;
&lt;br /&gt;
* variables&lt;br /&gt;
* causal links&lt;br /&gt;
* opposite effects&lt;br /&gt;
* constraints&lt;br /&gt;
* goals&lt;br /&gt;
* reactions; quick-fix reactions&lt;br /&gt;
* interaction effects&lt;br /&gt;
* extreme effects&lt;br /&gt;
* delays&lt;br /&gt;
* positive feedback loops&lt;br /&gt;
* variables&lt;br /&gt;
* liens de causalité&lt;br /&gt;
* effets opposés&lt;br /&gt;
* contraintes&lt;br /&gt;
* objectifs&lt;br /&gt;
* réactions ; réactions solutions de contournement&lt;br /&gt;
* effets d’interaction&lt;br /&gt;
* effets extrêmes&lt;br /&gt;
* retards&lt;br /&gt;
* boucles de &#039;&#039;feedback&#039;&#039; positives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following simplified scenario is for a particular organization. It is not a generalization.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le scénario qui suit est un scénario simplifié pour une organisation spécifique. Il ne s’agit pas d’une généralisation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variables&#039;&#039;&#039;—Causal loop diagrams include &#039;&#039;variables&#039;&#039; (or stocks) such as the &#039;&#039;velocity (rate of delivery) of software features&#039;&#039; and &#039;&#039;number of defects&#039;&#039; . Variables have a measurable quantity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les variables&#039;&#039;&#039; - Les diagrammes de boucles causales comportent des &#039;&#039;variables&#039;&#039; (ou des stocks) telle que la &#039;&#039;vélocité (taux de livraison) des features&#039;&#039; et le &#039;&#039;nombre d’anomalies&#039;&#039;. Les variables ont une quantité mesurable.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-4.png.pagespeed.ic.WpO9GKmuZP.webp|frame|none|alt=|caption systems thinking-4.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-4-fr.png|frameless|848px|1er schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causal links&#039;&#039;&#039;—An element can have an effect on another, such as if feature velocity increases, then the number of defects increase; that is, more new code, more defects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les liens de causalité&#039;&#039;&#039; - Un élément peut avoir un effet sur un autre, comme par exemple si la vélocité des &#039;&#039;features&#039;&#039; augmente alors le nombre d’anomalies augmente ; autrement dit, plus de code, plus d’anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-5.png.pagespeed.ic.oPRro2SqND.webp|frame|none|alt=|caption systems thinking-5.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-5-fr.png|frameless|848px|2ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Now it is time to bump into &#039;&#039;Weinberg-Brook’s Law&#039;&#039; and the &#039;&#039;Causation Fallacy&#039;&#039; . It is easy to sketch a diagram; it is something else to model with insight. For example, consider the relationship between the &#039;&#039;number of developers&#039;&#039; and &#039;&#039;feature velocity.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il est temps désormais de se jeter à corps perdu dans la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; et dans la &#039;&#039;causalité fallacieuse&#039;&#039;. C’est facile de dessiner un diagramme, ça l’est moins que de modéliser en faisant preuve de clairvoyance comme par exemple, la relation entre le &#039;&#039;nombre de développeurs&#039;&#039; et la &#039;&#039;vélocité des features&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The nature of any cause-effect relationship is actually not obvious, though it is common for people to jump to conclusions such as more developers means better velocity. Adding people late in development may &#039;&#039;reduce&#039;&#039; velocity (a sub-element of “Brooks’ Law” [Brooks95]). Or, &#039;&#039;more&#039;&#039; bad programmers could really slow you down. An argument can be made that &#039;&#039;removing&#039;&#039; terrible developers can &#039;&#039;improve&#039;&#039; velocity.&lt;br /&gt;
&lt;br /&gt;
Toute relation de cause à effets est par nature obscure, même si les gens ont l’habitude de sauter sur la première conclusion venue comme par exemple plus de développeurs égale plus de vélocité. Ajouter des personnes tard au cours du développement peut &#039;&#039;réduire&#039;&#039; la vélocité (il s’agit d’une composante de la « loi de Brooks » [Brooks95]). Ou, &#039;&#039;davantage&#039;&#039; de mauvais développeurs pourrait vraiment vous ralentir. Il pourrait être objecté qu’&#039;&#039;enlever&#039;&#039; des développeurs exécrables peut permettre &#039;&#039;d’améliorer&#039;&#039; la vélocité.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-6.png.pagespeed.ic.6XIYl7Vm3_.webp|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-6-fr.png|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-6-fr.png|frameless|848px|3ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Opposite effects&#039;&#039;&#039;—A causal link effect may be the same or opposite direction; if A goes up then B goes up, or vice versa. Opposite effect is shown with an ‘O’ on the line. Suppose defects going up puts a drag on the system, lowering the velocity of new features because people spend more time fixing or working around bugs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets opposés&#039;&#039;&#039; - L’effet d’un lien de causalité peut aller dans la même direction ou dans la direction opposée. Si A monte alors B monte ou vice versa. L’effet opposé se souligne à l’aide d’un ‘0’ sur la ligne. Supposons que les anomalies ralentissent grandement le système, réduisant la vélocité des nouvelles &#039;&#039;features&#039;&#039; parce que les gens passent plus de temps à corriger ou à trouver des solutions de contournement aux anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-7.png.pagespeed.ic.DPGMJyX2Qf.webp|frame|none|alt=|caption systems thinking-7.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-7-fr.png|frameless|848px|4ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Constraints&#039;&#039;&#039;—Unless you can find people to work for free, there is a constraint on the number of developers, based upon cash supply.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contraintes&#039;&#039;&#039; - À moins que vous ne trouviez des personnes prêtent à travailler gratuitement, il y a une contrainte sur le nombre de développeurs basé sur le budget disponible.&lt;br /&gt;
&lt;br /&gt;
Constraints are &#039;&#039;not&#039;&#039; causal links. As cash supply goes up, it is not the case that the number of developers goes up.&lt;br /&gt;
&lt;br /&gt;
Les contraintes ne sont &#039;&#039;pas&#039;&#039; des liens de causalité. Lorsque la montant du budget disponible augmente, ce n’est pas le cas du nombre de développeurs/&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-8.png.pagespeed.ic.gbgAIK-IsZ.webp|frame|none|alt=|caption systems thinking-8.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-8-fr.png|frameless|848px|5ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goals and Reactions&#039;&#039;&#039;–People, departments, and systems have goals, such as &#039;&#039;higher feature velocity&#039;&#039; . Goals often generate pressure for people to react (or act), with the intent of achieving the goal. But since there is &#039;&#039;Causation Fallacy&#039;&#039; and &#039;&#039;Weinberg-Brooks’ Law&#039;&#039; to contend with, people should be cautious about assuming what actions will help. Now a goal and pressure for reaction is shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buts et réactions&#039;&#039;&#039; - Les personnes, les départements et les systèmes ont des buts, comme par exemple avoir une &#039;&#039;vélocité des features plus élevée&#039;&#039;. Les buts occasionnent souvent de la pression pour que les gens réagissent (ou agissent) dans l’intention de leur faire atteindre ce but. Mais étant donné qu’il y a la &#039;&#039;causalité fallacieuse&#039;&#039; et la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; à laquelle il faut faire face, les gens devraient être prudents quant aux actions pertinentes à entreprendre. Voici un exemple de diagramme modélisant cela :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-9.png.pagespeed.ic.yVcHbh4_-i.webp|frame|none|alt=|caption systems thinking-9.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-9-fr.png|frameless|848px|6ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Not only does a goal with a &#039;&#039;reward&#039;&#039; create pressure to act, but also it creates pressure to &#039;&#039;appear&#039;&#039; to be acting and achieving, due to the &#039;&#039;&#039;measurement dysfunction&#039;&#039;&#039; generated by rewards. And the measurement dysfunction can be proportional to the perceived value of the reward because people are being motivated to get a reward, not to improve the system [http://www.amazon.com/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Notice how rewards can actually degrade system performance. Visually, the system dynamics may be…&lt;br /&gt;
&lt;br /&gt;
Non seulement un but à atteindre avec une &#039;&#039;récompense&#039;&#039; au bout engendre une pression à agir, mais cela créé aussi une pression à &#039;&#039;faire semblant&#039;&#039; d’agir et à atteindre le but — les récompenses provoquent un &#039;&#039;&#039;dysfonctionnement des indicateurs&#039;&#039;&#039;. Le dysfonctionnement des indicateurs peut être proportionnel à la valeur perçue de la récompense parce que les personnes sont motivées pour avoir la récompense, non pour améliorer le système [http://www.amazon.fr/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Remarquez bien comment et de quelle manière les récompenses peuvent dégrader la performance du système. De manière visuelle, les dynamiques d’un tel système pourrait être …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-10.png.pagespeed.ic.39CLFp-g_9.webp|frame|none|alt=|caption systems thinking-10.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-10-fr.png|frameless|848px|7ème schéma]]&lt;br /&gt;
&lt;br /&gt;
It is quite interesting that all these dynamics have been added by introduction of reward, and yet there is no necessary connection between the top part of this model and the bottom.&lt;br /&gt;
&lt;br /&gt;
Il est assez intéressant de voir que toutes ces dynamiques ont été ajouté par l’introduction d’une récompense et qu’il n’y pas de connexion entre le haut et le bas de cette modélisation.&lt;br /&gt;
&lt;br /&gt;
There is no guarantee that feature velocity has improved—or even been worked on.&lt;br /&gt;
&lt;br /&gt;
Il n’y a aucune garantie que la vélocité des features s’améliore ou même que l’on y travaille.&lt;br /&gt;
&lt;br /&gt;
Removing the reward system is a root-cause solution to the dysfunction. Another (lesser) surface countermeasure is the lean-thinking &#039;&#039;Go See&#039;&#039; (go see physically at the place of real work) principle and management behavior:&lt;br /&gt;
&lt;br /&gt;
Enlever le système de récompense est une solution à la cause racine de ce dysfonctionnement. Une autre contremesure de surface est le principe et le comportement managériale &#039;&#039;Aller voir&#039;&#039; (aller voir physiquement sur le lieu où le travail s’effectue) de l’approche lean.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-11.png.pagespeed.ic.NU8SjnJkUY.webp|frame|none|alt=|caption systems thinking-11.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-11-fr.png|frameless|848px|8ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick-fix reactions&#039;&#039;&#039;—One difficult and slow solution toward the goal of higher velocity is to hire great developers, to increase coaching and education of existing staff, and to remove terrible workers. The alternative is called a &#039;&#039;quick fix&#039;&#039; , a reaction that is hoped to achieve the goal quickly and with less effort. Sometimes a quick fix works well both in the short and long term, really strengthening the system. Sometimes not…hence, “faster is slower.” For example, people may &#039;&#039;believe&#039;&#039; that increasing the number of developers increases the feature velocity. And they may thereby hope that hiring more developers will most quickly and easily solve the velocity problem. ‘QF’ indicates the quick fix:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solutions de contournement&#039;&#039;&#039; - Une solution payante à long terme pour atteindre une vélocité plus grande, qui n’est pas sans difficulté, consiste à : recruter de développeurs très qualifiés, faire davantage d’accompagnements et de formations, et à se séparer des moins bons éléments. L’alternative est ce que l’on appelle une &#039;&#039;solution de contournement&#039;&#039;, c’est ce que l’on met en place dans l’espoir d’atteindre l’objectif en moins de temps et avec moins d’effort. Parfois, une solution de contournement se révèle payante aussi bien dans le court terme que dans le long terme, renforçant par la-même le système. D’autres fois cela ne fonctionne pas … d’où l’expression « aller plus vite c’est aller plus lentement ». Par exemple, les gens peuvent &#039;&#039;croire&#039;&#039; qu’augmenter le nombre de développeurs permet d’augmenter la vélocité des features. Et ils peuvent par conséquent être amenés à espérer qu’en recrutant davantage de développeurs cela permettra de résoudre plus vite et plus facilement le problème de vélocité. La mention ‘SC’ sur le diagramme ci-dessous indique une solution de contournement.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-12.png.pagespeed.ic.x8IJWKprUx.webp|frame|none|alt=|caption systems thinking-12.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-12-fr.png|frameless|848px|9ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interaction effects&#039;&#039;&#039;—There is the constraint of cash supply on hiring. One hard and slow solution is to get more cash. A quicker fix is to hire &#039;&#039;much&#039;&#039; cheaper developers. In this case, the level of cash supply now has an &#039;&#039;interaction effect&#039;&#039; with other causal links. Low cash tends to strengthen the hire rate of much cheaper developers when there is pressure to increase hire rates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets d’interaction&#039;&#039;&#039; - La capacité à embaucher est contraint à la capacité budgétaire. Une solution de longue haleine non sans difficulté est d’obtenir davantage de budget. Une solution de contournement possible est de recruter un &#039;&#039;grand&#039;&#039; nombre de développeurs bon marché. Dans ce cas, le niveau du budget a un &#039;&#039;effet d’interaction&#039;&#039; avec les autres boucles causales. Un budget peu élevé aura tendance à renforcer le taux de développeurs bon marché si la pression pour recruter augmente.&lt;br /&gt;
&lt;br /&gt;
One could simply draw an (opposite) causal link directly from &#039;&#039;cash supply&#039;&#039; to &#039;&#039;hire rate of very cheap developers&#039;&#039; , but that merely says that less cash leads to more hiring of extremely cheap developers. That is not quite what we want to say; rather, we want to show the interaction effect—that effect A influences &#039;&#039;effect&#039;&#039; B. This is done by showing a causal link entering another causal link. For example, from &#039;&#039;cash supply&#039;&#039; to the quick-fix line going into &#039;&#039;hire rate of very cheap developers&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
Nous pourrions dessiner simplement un lien de causalité (opposé) de &#039;&#039;rentrée budgétaire&#039;&#039; à &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;, mais cela voudrait simplement dire qu’avoir un budget moindre aurait pour conséquence de recruter davantage de développeurs bon marché. Mais ce n’est pas tout à fait ce que nous voulons dire ; ce que voulons montrer en fait, c’est l’effet d’interaction - c’est-à-dire qu’un effet A influence un &#039;&#039;effet&#039;&#039; B. Cela se fait en montrant un lien de causalité heurtant un autre lien de causalité, par exemple en traçant une ligne de &#039;&#039;rentrée budgétaire&#039;&#039; vers la ligne représentant la solution de contournement qui va vers &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-13.png.pagespeed.ic.LvAE8ewRFJ.webp|frame|none|alt=|caption systems thinking-13.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-13-fr.png|frameless|848px|10ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extreme effects&#039;&#039;&#039;—We have worked with some very inexpensive developers with excellent skill and some very expensive developers that are terrible, but on average, you get what you pay for—when you hire from a large pool of very cheap labor, the average skill level is lower. In the model we want to show that the impact of hiring very cheap labor on the &#039;&#039;number of low-skilled developers&#039;&#039; is a significantly greater effect than average.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets extrêmes&#039;&#039;&#039; - Il nous est arrivé de travailler avec d’excellents développeurs très bon marché et avec d’autres hors de prix très nuls, mais en moyenne, vous obtenez à hauteur de ce que vous payez - lorsque vous recrutez au moins disant, le niveau moyen en terme de compétences sera plus faible. Dans le diagramme ci-dessous, nous avons voulu montrer que l’impact du recrutement de personnes bon marché en rapport avec le &#039;&#039;nombre de développeurs peu qualifiés&#039;&#039; à un impact sensiblement plus grand que la moyenne.&lt;br /&gt;
&lt;br /&gt;
To show an &#039;&#039;extreme effect&#039;&#039; in the model, use a thick line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer un &#039;&#039;effet extrême&#039;&#039; sur un modèle, faites un trait épais comme vous pouvez voir ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-14.png.pagespeed.ic.JYkqz8Qe24.webp|frame|none|alt=|caption systems thinking-14.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-14-fr.png|frameless|848px|11ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delays&#039;&#039;&#039;—One problem in hiring in software development is the &#039;&#039;fallacy of mild programmer variance&#039;&#039; —the mistaken belief that programmer variance (in terms of productivity, code quality, etc.) is relatively small. However, programmer variance studies suggest an average of four times faster in the top versus bottom quartile [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. Rather significant. Also, the COCOMO model—based on large and longitudinal studies—shows that the capability of the development personnel is by far the most important factor for productivity [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. And, on average, very weak programmers create poor-quality code (poor design) and more defects, creating another drag on the system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retards&#039;&#039;&#039; Un problème courant au niveau du recrutement dans un projet de développement logiciel concerne &#039;&#039;l’erreur au niveau de la variance d’un développeur moyen&#039;&#039; - autrement dit la croyance fausse que la variance d’un développeur à un autre (en terme de productivité, de qualité de code, etc.) est relativement faible. Toutefois, les études de la variance au sujet des développeurs montrent un rapport de un à 4 entre le 1er quartile et le dernier [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. C’est plutôt quelque chose de significatif. De même des études - en long et en large - du modèle COCOMO montrent que la capacité du développement personnel est le facteur de loin le plus important quant à la productivité [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. Et, en moyenne, il s’avère que les développeurs peu qualifiés font du code de mauvaise qualité (mauvaise conception) et de plus d’anomalies, ceci rajoute un autre frein au système.&lt;br /&gt;
&lt;br /&gt;
But the impacts of these effects are not immediately obvious. For example, it takes a relatively long time after hiring a large pool of weak programmers before the impacts of more and more bad code/design start to be felt. Similarly, the average &#039;&#039;decrease&#039;&#039; in feature velocity (because of the powerful impact of programmer variance) will not show up immediately.&lt;br /&gt;
&lt;br /&gt;
Mais l’impact de ces effets ne sont pas visibles immédiatement. Par exemple, cela peut prendre un certain temps après un recrutement massif de développeurs peu qualifiés avant que les impacts négatifs ne se fassent sentir au niveau de la qualité du code ou de la conception. De manière similaire, la &#039;&#039;baisse&#039;&#039; moyenne de la vélocité des features (en raison de l’impact important de la variance des développeurs évoqué plus haut) ne se verra pas immédiatement.&lt;br /&gt;
&lt;br /&gt;
To show these &#039;&#039;delayed effects&#039;&#039; in the model, use a double-line through the effect line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer ces &#039;&#039;effets à retardement&#039;&#039; dans le modèle, faites une double-ligne en travers de la ligne d’effet.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-15.png.pagespeed.ic.0fwliLJm6G.webp|frame|none|alt=|caption systems thinking-15.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-15-fr.png|frameless|848px|12ème schéma]]&lt;br /&gt;
&lt;br /&gt;
Delay has an intriguing influence on the &#039;&#039;educational&#039;&#039; or corrective power in a system. If an impact or unintended consequence is long delayed, one does not feel the effect (pain or gain) and so does not clearly see how A influenced B, or more subtly how &#039;&#039;A influenced B influenced A&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Le retard a une influence intéressante sur le pouvoir &#039;&#039;pédagogique&#039;&#039; ou correctif sur un système. Si un impact ou une conséquence inattendue est retardé suffisamment longtemps, personne n’en voit ni l’effet (qu’il soit bénéfique ou néfaste) ni sur la façon dont A influence B ou plus subtilement comment &#039;&#039;A a influencé B qui a influencé A&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Therefore, one does not learn from or correct mistakes—in policy, management actions, tools, and so forth. Likewise, gradual improvement through the lean thinking practice of &#039;&#039;kaizen&#039;&#039; can take a long time; patience and insight are needed to see if and how things improve.&lt;br /&gt;
&lt;br /&gt;
Par conséquent, personne n’apprend de ses erreurs ni n’est en capacité de les corriger - que ce soit en terme de stratégie, d’actions d’encadrement, d’outils ou de quoi que ce soit. De la même manière, l’amélioration graduelle à travers l’application d’une démarche lean &#039;&#039;kaizen&#039;&#039;, peut prendre un certain temps ; de la patience et de la perspicacité sont nécessaires pour voir si et comment les choses s’améliorent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Positive feedback loops&#039;&#039;&#039;—Negative or positive feedback loops&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-5 5]&amp;lt;/sup&amp;gt; and delays are where things start to get more subtle in a system—and in understanding a system. For example, how does one become a better programmer? In part, by mentoring from great programmers and seeing lots of examples of great code. But an office with a lot of low-skill developers does not generate a lot of great code examples, nor does it attract or retain the small pool of great programmers who could act as mentors. They would rather work somewhere else.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Boucles de feedback positives&#039;&#039;&#039; - Les boucles de feedback négatives ou positives [^5] et les retards sont le point de départ pour une approche plus subtile d’un système - et de sa compréhension. Par exemple, de quelle manière une personne peut-elle devenir un meilleur développeur ? En partie, en bénéficiant du mentorat de très bons développeurs et en jetant un œil sur du très bon code. Mais il est impossible de trouver du bon code dans un endroit remplit de développeurs médiocres, il est impossible également d’y attirer ou de retenir le petit groupe de très bon développeurs qui pourraient prendre le rôle de mentors. Ils préfèrent largement aller travailler ailleurs.&lt;br /&gt;
&lt;br /&gt;
Now the development group starts to enter a self-reinforcing downward spiral—a set of &#039;&#039;positive feedback loops&#039;&#039; . Fortunately, the downward trend is constrained by the supply of cash.&lt;br /&gt;
&lt;br /&gt;
Ce groupe de développeurs médiocres rentrent dans un cercle vicieux en raison d’un ensemble de &#039;&#039;boucles de feedback positives&#039;&#039;. Fort heureusement, ce cercle vicieux est assujeti aux contraintes du budget.&lt;br /&gt;
&lt;br /&gt;
More great programmers—who could craft great code and mentor others—leave. So there is less and less quality code to look at and to learn from. The percentage of weak programmers grows even larger and feature velocity drops further. Code becomes more messy, awkward, and duplication-riddled, so the capacity to swiftly implement features declines. Since feature velocity is dropping further, there is more pressure to hire yet more very cheap programmers. All this leads to multiple positive reinforcement loops in the system, for example:&lt;br /&gt;
&lt;br /&gt;
Malheureusement de plus en plus des très bons développeurs - ceux en capacité d’élaborer du très bon code et de faire du mentorat auprès des autres développeurs - partent. Par conséquent, il y a de moins en moins de code de qualité à regarder et à partir duquel il est possible d’en tirer des enseignements. Le pourcentage de développeurs médiocres augmente de plus en plus et la vélocité au niveau des features continue à chuter. Le code devient de plus en plus brouillon, difficile, avec pleins de bouts de code dupliqués à gauche et à droite, le tout de telle manière que la capacité d’implémenter des features décline. Étant donné que la vélocité des features continue de chuter, il y a davantage de pression pour recruter des développeurs très bon marché. Tout cela conduit à de multiples boucles de renforcement positives dans le système comme l’illustre l’exemple ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-16.png.pagespeed.ic.ONFuUmJHSE.webp|frame|none|alt=|caption systems thinking-16.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-16-fr.png|frameless|848px|13ème schéma]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip&#039;&#039; : You can find positive feedback loops by finding cycles with an &#039;&#039;even number&#039;&#039; of ‘Opposite’ effect relationships. There are several examples in the model above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Astuce&#039;&#039; : Vous pouvez trouver des boucles de feedback positives en cherchant des cycles ayant un &#039;&#039;nombre pair&#039;&#039; de relations. Vous en trouverez plusieurs exemples ci-dessus.&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
The example scenario is only that—an example. A causal loop diagram can visualize rich dynamics in a workplace system. These are best created by a group at a whiteboard.&lt;br /&gt;
&lt;br /&gt;
Le scénario donné à titre d’exemple est uniquement cela - un exemple. Une diagramme de boucle causale permet de visualiser la richesse de la dynamique dans le système dans un milieu professionnel. La meilleure manière de modéliser un tel système est de le faire en groupe face à un tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing Mental Models ==&lt;br /&gt;
&lt;br /&gt;
== Voir les modèles mentaux ==&lt;br /&gt;
&lt;br /&gt;
The previous causal loop diagrams reflect people’s mental models of causation, which may be wrong. It is interesting to note that people’s models of causation are influenced by the timeliness (delay) and quality of feedback in the system.&lt;br /&gt;
&lt;br /&gt;
Les précédents diagrammes de boucles causales reflètent les modèles mentaux de causalité des individus … qui peuvent s’avérer faux. Il est intéressant de remarquer que les modèles de causalité des individus sont influencés par la ponctualité (ou les retards) et la qualité des feedbacks dans le système.&lt;br /&gt;
&lt;br /&gt;
The implication of “mental models” is to improve our meta-cognitive skill to see and question our own assumptions and chains of reasoning. Are we making faulty leaps of logic? It also implies when working with others to discuss (inquiring rather than abusing) the mental models of our colleagues.&lt;br /&gt;
&lt;br /&gt;
Les « modèles mentaux » nous permettent d’améliorer nos compétences de méta-cognition pour voir et questionner nos propres postulats et l’enchaînement de nos raisonnements. Brûlons-nous des étapes de manière erronée ? Cette question implique aussi lorsque nous sommes en train de travailler avec des collègues de discuter avec eux (en s’enquérant plutôt qu’en reprochant) de leurs modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Seeing&#039;&#039; these mental models is step one; &#039;&#039;changing&#039;&#039; them is the even harder part of step two. That art is beyond the scope of this introduction, though a successful LeSS adoption must involve changes in mindset and insight among many groups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Voir&#039;&#039; les modèles mentaux n’est que la première étape ; les &#039;&#039;changer&#039;&#039; constitue une seconde partie bien plus difficile. Cet art est bien au-delà du sujet de cette introduction, même si une adoption réussie de LeSS implique des changements en terme d’état d’esprit et de prise de conscience au sein de très nombreuses équipes.&lt;br /&gt;
&lt;br /&gt;
A tip to better &#039;&#039;see&#039;&#039; the mental models (beliefs, chains of inference, …) playing out in the system dynamics is to ask the following question during a modeling workshop and then sketch the answers. “Let’s talk about the assumptions behind this model. What do we &#039;&#039;believe&#039;&#039; or assume in terms of facts and effects that led us here?”&lt;br /&gt;
&lt;br /&gt;
Une astuce pour mieux &#039;&#039;voir&#039;&#039; les modèles mentaux (croyances, échelle d’inférence, …) en jeu au niveau des dynamiques des systèmes est de poser les questions suivantes lors d’un atelier de modélisation puis de tracer les éléments de réponse au tableau blanc. « Parlons donc des hypothèses derrière ce modèle. Que &#039;&#039;croyons&#039;&#039;-nous ou tenons pour acquis en terme de faits et d’effets qui nous ont conduits ici ? »&lt;br /&gt;
&lt;br /&gt;
Answers are sketched on the whiteboard model, for example:&lt;br /&gt;
&lt;br /&gt;
Les éléments de réponse sont dessinés sur le tableau blanc. En voici un exemple :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-17.png.pagespeed.ic.5UIqBnJfK1.webp|frame|none|alt=|caption systems thinking-17.png]]&lt;br /&gt;
Visualizing the assumptions in our heads… our mental models.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-17-fr.png|frameless|848px|14ème schéma]]&lt;br /&gt;
&#039;&#039;Visualiser les postulats présents dans nos têtes … nos modèles mentaux.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Example: The “Faster is Slower” Dynamic ===&lt;br /&gt;
&lt;br /&gt;
=== Exemple : La dynamique « Aller plus vite c’est aller plus lentement » ===&lt;br /&gt;
&lt;br /&gt;
With the vocabulary of quick fixes, delays, positive feedback loops, and mental models, it is fascinating to see that there can be a short-term apparent improvement in a variable as the result of a quick fix, but a &#039;&#039;delayed degradation&#039;&#039; of the very same variable—the “faster is slower” dynamic. This is a recurrent dynamic in the workplace and a cause of weakness. So it is worth another illustration.&lt;br /&gt;
&lt;br /&gt;
Dorénavant, avec notre vocabulaire enrichi des termes de solutions de contournement, de boucles de feedback positives et de modèles mentaux, il est fascinant de voir qu’il peut y avoir un semblant d’amélioration à court terme sur une variable donnée, mais que cela entraîne en même temps une &#039;&#039;dégradation à retardement&#039;&#039; de cette même variable - d’où la dynamique « Aller plus vite c’est aller plus lentement ». Il s’agit d’une dynamique récurrente et d’une cause de vulnérabilité à terme. Voici un nouvel exemple illustrant cela :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The story of Microsoft Word and the&#039;&#039; &#039;&#039;&#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039;&#039;&#039; : A classic example of the short-term ‘improving’ but long-term degrading dynamic is the story of the first release of Microsoft Word for Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. It was released &#039;&#039;years&#039;&#039; later than desired. Why? &#039;&#039;Because managers tried to follow the original schedule and pushed developers to meet it&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Histoire de Microsoft Word et de&#039;&#039; &#039;&#039;&#039;&#039;&#039;la boîte à outils secrète du développeur&#039;&#039;&#039;&#039;&#039; : Un exemple typique d’une ‘amélioration’ à court terme mais d’une dynamique de dégradation à long terme est le récit de la première livraison de Microsoft Word sur Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. Le logiciel a été livré avec des &#039;&#039;années&#039;&#039; de retard par rapport à la date prévue. Pourquoi ? &#039;&#039;Parce que les managers ont essayé à tout prix de suivre le calendrier de départ et ont fait pression sur les développeurs pour le respecter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The story illustrates why &#039;&#039;wishful thinking&#039;&#039; is identified as one of the wastes in lean thinking. In this case the wishful thinking of insisting on (apparently) following a schedule, which implies the misconception or wishful thinking that development estimates are not estimates but are commitments—a common myth that propels degradation of a system.&lt;br /&gt;
&lt;br /&gt;
Cette histoire illustre pourquoi cet espoir illusoire de respecter une date souhaitée est bien identifié comme une source de gâchis dans l’approche lean. Dans le cas présent l’espoir illusoire consiste à insister (du moins apparemment) à suivre le calendrier, ce qui implique une idée fausse ou illusoire que les estimations ne sont pas de simples estimations mais des promesses - un mythe classique qui pousse à la dégradation d’un système.&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 The next model] illustrates a &#039;&#039;summary&#039;&#039; of the dynamics of what happened when the managers pushed people to evidently keep to the original schedule, and why this quick-fix reaction to slow progress appeared to make things faster in the short term but actually even &#039;&#039;slower&#039;&#039; in the long term. See the dynamic of schedule pressure and the secret toolbox. intentionally omits some deeper dynamics that are expanded and shown in See deeper dynamics of schedule pressure and the secret toolbox..&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 Le modèle suivant] illustre un &#039;&#039;résumé&#039;&#039; des dynamiques à l’œuvre lorsque des managers poussent leurs équipes à respecter à tout prix les calendriers prévisionnels, et pourquoi cette solution de contournement qui freine pourtant l’avancement des travaux semblent les faire aller plus vite à court terme mais en réalité &#039;&#039;plus lentement&#039;&#039; à long terme. Par rapport à ce qui est décrit précédemment dans la dynamique de la pression du calendrier et la boîte à outils secrète, certaines dynamiques ont été omises intentionnellement sur ce schéma et sont visibles sur le schéma dynamiques avancées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-18.png.pagespeed.ic.A7OSuu755I.webp|frame|none|alt=|caption systems thinking-18.png]]&lt;br /&gt;
The dynamic of schedule pressure and the secret toolbox.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-18-fr.png|frameless|848px|15ème schéma]]&lt;br /&gt;
&#039;&#039;Dynamique de la pression sur le calendrier et de la boîte à outils secrète.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As a quick fix, the Microsoft managers exhorted, bribed (with potential rewards), and threatened the Word developers to keep to the original schedule. Consequently, the developers predictably pulled out their &#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039; —the many practices related to hacking out dirty code (no tests, no reviews, ignore known defects, copy-paste programming, poor design, …) to apparently deliver a feature faster. You see, developers also have &#039;&#039;quick-fix&#039;&#039; reactions for their problems.&lt;br /&gt;
&lt;br /&gt;
En solution de contournement, les managers de Microsoft ont exhorté, ont corrompu (à l’aide de primes potentielles), et ont menacé les développeurs de Word pour leur faire respecter le calendrier prévisionnel. En conséquence, les développeurs ont, de manière tout à fait prévisible, sorti leur &#039;&#039;&#039;boîte à outils secrète de développeurs&#039;&#039;&#039; - autrement dit tout un arsenal de pratiques pour pisser du code pourri (aucuns tests, aucunes revues, ignorance des anomalies connues, développement par copier-coller, mauvaise conception, …) pour développer visiblement plus vite. Vous voyez bien, les développeurs ont aussi des solutions de contournement pour régler leurs problèmes.&lt;br /&gt;
&lt;br /&gt;
The tactics seemed to have worked like magic. As the managers pressured the developers, ‘features’ were delivered quicker as people used the secret toolbox, which reinforced the belief that pressuring developers helps. But this apparent acceleration actually had a delayed effect to make things slower, which is explored next. Since management did not quickly see the delayed effect of the secret toolbox, and because they believed managers should not be frequently looking in detail at the source code or themselves be master programmers, they did not learn from this dynamic.&lt;br /&gt;
&lt;br /&gt;
Vu de l’extérieur, ces tactiques ont fonctionné à merveille. Au fur et à mesure que les managers mettaient la pression sur les développeurs, les ‘features’ étaient développées de plus en plus vite grâce à l’utilisation de la boîte à outils secrète, ce qui a renforcé la croyance en quoi mettre la pression sur les développeurs était quelque chose d’utile. Mais cette apparente accélération a eu en fait un effet à retardement qui a rendu les choses plus lentes (c’est ce que nous allons voir par la suite). Étant donné que le management n’a pas été assez rapide à voir l’effet à retardement de la boîte à outils, et parce que les managers pensent qu’ils n’ont pas besoin d’aller regarder fréquemment en détails le code source ou qu’ils n’ont pas besoin d’être eux-mêmes des développeurs très expérimentés, ils n’ont rien appris de cette dynamique.&lt;br /&gt;
&lt;br /&gt;
A closer exploration of the system dynamics shows why things went slower in the long term and why the first Word for Windows release was years later than desired, illustrated in this model…&lt;br /&gt;
&lt;br /&gt;
Le schéma ci-dessous illustre l’examen approfondie des dynamiques des systèmes montrant pourquoi les choses sont allées plus lentement à long terme et pourquoi le tout premier Word pour Windows a été livré des années en retard par rapport à la date souhaitée …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-19.png.pagespeed.ic.D24dvGHzfu.webp|systems thinking-19.png]]&lt;br /&gt;
Some deeper dynamics of schedule pressure and the secret toolbox.&lt;br /&gt;
&lt;br /&gt;
[[File:Xsystems-thinking-19-fr.png|frameless|848px|16ème schéma]]&lt;br /&gt;
&#039;&#039;Dynamiques avancées de la pression sur le calendrier et de la boîte à outils secrètes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Naturally, lots of dirty code eventually slowed things down. More subtly, developers would &#039;&#039;ignore&#039;&#039; the bug list of ever-increasing open defects to—instead—generate new features. This led to a long delay between the creation of a defect and its correction. It turns out that this significantly increases variability and time to fix a defect because of the compounding negative effect of a long-lived bug (for example, due to workarounds and coupling) and because developers have long forgotten the detailed context of code related to the defect and therefore need to slowly rediscover that context—with more and more dirty confusing code surrounding them.&lt;br /&gt;
&lt;br /&gt;
Naturellement, avoir une grande quantité de code de mauvaise qualité ralentie les choses. De manière beaucoup plus subtile, les développeurs ont &#039;&#039;ignoré&#039;&#039; la liste croissante d’anomalies pour privilégier la production de nouvelles features. Cela a eu pour conséquence d’avoir un délai important entre la déclaration d’une anomalie et sa correction. Il s’avère que cela a fait augmenter de manière significative la variabilité et le temps nécessaire pour corriger une anomalie en raison des effets cumulatifs négatifs liée à la nature même d’une vieille anomalie (par exemple avec la mise en place des solutions de contournement et des couplages existants entre les fonctionnalités), de l’oubli du contexte détaillé par les développeurs en relation avec l’anomalie, ces derniers mettant par conséquent plus de temps à le redécouvrir, de l’accumulation continue de code de mauvaise qualité dans le même temps.&lt;br /&gt;
&lt;br /&gt;
The astute reader may also notice the several positive feedback loops that reinforce the degradation cycle; this is one reason the product was years later than intended.&lt;br /&gt;
&lt;br /&gt;
Le lecteur avisé remarquera également plusieurs boucles causales positives renforçant le cycle de dégradation ; il s’agit de l’une des raisons expliquant le retard pris sur plusieurs années pour livrer le produit.&lt;br /&gt;
&lt;br /&gt;
Solution? The lean thinking &#039;&#039;Stop and Fix&#039;&#039; and &#039;&#039;Go See&#039;&#039; principles. &#039;&#039;First&#039;&#039; , rather than trying to go faster when there are problems, manager-teachers encourage people to go &#039;&#039;slower&#039;&#039; and help them learn to see system dynamics and root causes, and to fix these—to improve the &#039;&#039;system&#039;&#039; of development. By going slower, Toyota—the masters of lean thinking—has become one of the fastest companies around. &#039;&#039;Second&#039;&#039; , for managers to &#039;&#039;go see at the real place of work&#039;&#039; to learn what is going on. The “real place” in software development is the code, which suggests that first-level managers are master programmers who are frequently evaluating the code.&lt;br /&gt;
&lt;br /&gt;
Une solution ? L’approche lean avec les principes &#039;&#039;Arrêter et corriger&#039;&#039; et &#039;&#039;Aller voir&#039;&#039;. &#039;&#039;Premièrement&#039;&#039;, plutôt que d’essayer d’aller plus vite lorsqu’il y a des problèmes, des managers-formateurs encouragent les gens à aller plus &#039;&#039;lentement&#039;&#039; et à les inciter à apprendre les dynamiques des systèmes, les causes racines et à les corriger pour améliorer le &#039;&#039;système&#039;&#039; du développement. En allant plus lentement, Toyota - les maîtres de l’approche lean - est devenue l’une des entreprises les rapides du monde. _Deuxièmement, les managers doivent &#039;&#039;aller voir ce qui se passe sur le vrai lieu de travail&#039;&#039; pour apprendre ce qu’il se passe. Le « vrai lieu » dans le développement logiciel c’est le code, ce qui implique que les managers de proximité sont des développeurs expérimentés qui évalueront le code fréquemment.&lt;br /&gt;
&lt;br /&gt;
Microsoft people did not reflect on the situation until after release. When they did finally hold a retrospective, it led to a &#039;&#039;zero-defects&#039;&#039; policy, meaning that the first priority was to fix known bugs in the code under development—to drive down to zero the open-defects list before writing more new-feature code.&lt;br /&gt;
&lt;br /&gt;
Les personnes de chez Microsoft n’ont pas réfléchi sur la situation que bien après la livraison. Lorsqu’ils ont fini par faire une rétrospective, cela a amené à une politique du &#039;&#039;zéro défaut&#039;&#039;, cela signifie que la première priorité était de corriger les anomalies connues dans le code en cours de développement afin d’aller vers du zéro anomalie ouverte dans la liste des anomalies avant d’écrire du code pour une nouvelle feature.&lt;br /&gt;
&lt;br /&gt;
== Seeing (and Hearing) Local Optimization ==&lt;br /&gt;
&lt;br /&gt;
== Voir (et entendre) l’optimisation locale ==&lt;br /&gt;
&lt;br /&gt;
“Everyone is doing their best yet overall systems throughput is degrading. How can that be?” This is the paradox of &#039;&#039;&#039;local optimization&#039;&#039;&#039; —when a person or departmental decision maker optimizes for the local view or self-interest. The party making the decision frequently &#039;&#039;believes they are making the best decision&#039;&#039; , but because ‘best’ is a local optimization, in fact it sub-optimizes overall system throughput. This is a result of “silo mentality,” misunderstanding, fear, limited information, delayed feedback, ignorance, careerism, avarice, and other common &#039;&#039;organizational learning disorders&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
« Chacun fait de son mieux, mais malgré tout le flux de production du système se dégrade. Comment cela est-il possible ? ». Il s’agit du paradoxe de &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039; - autrement dit c’est lorsqu’une personne à titre individuel ou un responsable de département prend une décision d’un point de vue local ou dans son propre intérêt. Les personnes prenant ce type de décision &#039;&#039;croient fréquemment qu’ils prennent la meilleure décision&#039;&#039;, mais parce que ‘meilleure’ est ici synonyme d’optimisation locale, cela a pour résultat une sous-optimisation globale du flux du système. Ceci est le résultat d’une « mentalité de silo », d’incompréhension, de peur, de restrictions d’informations, de feedbacks à retardement, d’ignorance, de carriérisme, d’avarice et de bien d’autres &#039;&#039;dysfonctionnements d’apprentissages organisationnels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A small product group of 30 people does not have the time or money to engage in much nonsense or waste. But large companies, with large product groups, centralized process and tool groups, a centralized “project management office,” and so forth, seem to have raised local optimization and waste to an art form. Government bureaucracies are the quintessential example, of course. As such, when you serve as a guide in large-scale agile adoption, &#039;&#039;seeing&#039;&#039; (or &#039;&#039;hearing&#039;&#039; ) and dealing with local optimization is singularly vital.&lt;br /&gt;
&lt;br /&gt;
Une petite équipe produit de 30 personnes n’a ni temps ni l’argent pour s’engager dans ce genre de non-sens ou de gâchis. Mais les grandes entreprises avec de grands groupes produit, des processus centralisés et des groupes outils, un « bureau de gestion de projet » centralisé, et ainsi de suite, semblent avoir élevé l’optimisation locale et le gâchis à une forme d’art. Les bureaucraties gouvernementales en sont bien sûr la quintessence. En conséquence, lorsque vous servez de guide dans une adoption agile à grande échelle, &#039;&#039;voir&#039;&#039; (ou &#039;&#039;entendre&#039;&#039;) et s’occuper de l’optimisation locale est tout simplement quelque chose de vital.&lt;br /&gt;
&lt;br /&gt;
For example, the legal and corporate security departments put in place a policy that seems terribly important from their perspective. In the aim of preventing loss of intellectual property (IP), the legal department decrees “no one shall put any information on the walls.” Or, in response to cost-cutting pressure, the facilities management says, “It is important to ensure our walls are not dirty or damaged.” And thus they shut down a practice in lean thinking, visual management (which is usually done on walls), and they inhibit a well-known innovation practice, group whiteboard work. The lawyers may succeed in reducing loss of IP (actually, that is questionable), and the facilities people will succeed in keeping the walls clean—at the cost of inhibiting the product development group from innovating and collaborating. Finally, the company falls behind with less and less IP even worth protecting because tools for innovation and delivering fast have been disallowed, but the lawyers have successfully fulfilled their mandate from the executive team to “ensure our IP is protected.” And the &#039;&#039;furniture police&#039;&#039; have clear walls. &#039;&#039;They have done their best&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Par exemple, les départements juridiques et sécurité mettent en place des politiques qui leurs semblent très importantes de leurs points de vue. Dans l’objectif de prévenir la perte de propriété intellectuelle, le département juridique peut décréter « il est interdit d’afficher tout type d’information sur les murs. ». Or, le département des immeubles soumis de son côté, à une pression de politique de réductions de coûts peut surenchérir en disant : « Il est important de s’assurer que nos murs ne soient ni sales ni abîmés ». Et ainsi s’arrête le management visuel qui est l’une des pratiques de l’approche lean (le management visuel se faisant habituellement sur les murs), et ils inhibent également une pratique d’innovation bien connue à savoir le travail de groupe devant un tableau blanc. Les juristes réussiront peut être à réduire la perte de propriété intellectuelle (ce qui en réalité devrait poser question), et les gens des immeubles réussiront à garder leurs murs propres - mais au prix d’inhiber le groupe de développement produit dans sa capacité d’innover et de collaborer. Finalement, l’entreprise se laissera distancer par la concurrence avec de moins en moins de propriété intellectuelle valant la peine d’être défendue parce que les outils permettant l’innovation et de livrer rapidement ont été bannis, mais les juristes auront rempli leur mandat vis-à-vis de la direction de « s’assurer que la propriété intellectuelle est protégée ». Et la police de la logistique aura nettoyé les murs. &#039;&#039;Ils ont fait de leur mieux&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The following is a real e-mail quote from the &#039;&#039;FURNITURE POLICE&#039;&#039; in one organization that dissallowed visual management on the walls. Can you identify the local optimizations and mental models driving this?&lt;br /&gt;
&lt;br /&gt;
Ce qui suit est extrait d’un vrai message électronique de la &#039;&#039;POLICE DE LA LOGISTIQUE&#039;&#039; dans une organisation qui a banni le management visuel sur les murs. Pouvez-vous identifier les optimisations locales et les modèles mentaux qui sont derrière tout ça ?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;Individual work cubic partition can be personalized. But things obvious higher than the partition or harming the office environment’s harmony are restricted.&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;_Les [https://fr.wikipedia.org/wiki/Bureau_%C3%A0_cloisons bureaux à cloisons] peuvent être personnalisés. Mais tout ce qui visible au-dessus de la cloison ou qui perturbe l’harmonie de l’environnement de bureau est interdite.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
We also see local optimization in centralized groups that make software tool choices for others. The common mindset is to choose a tool that is best at reducing some supposed cost (curiously, these groups seldom recommend free open source tools) or best at doing something complicated or best for the work of one specialized worker role (even though &#039;&#039;everybody&#039;&#039; has to use the tool), rather than maximizing the global goal of faster system throughput of value to customers.&lt;br /&gt;
&lt;br /&gt;
Nous constatons aussi des optimisations locales dans les groupes centralisés dont le rôle est de choisir les logiciels pour les autres personnes de l’entreprise. La croyance la plus répandue que cette démarche est qu’il s’agit de ce qu’il y a de mieux pour réduire les coûts d’achats (curieusement ces mêmes groupes recommandent rarement les logiciels libres gratuits) ou ce qu’il y a de mieux pour accomplir une tâche compliquée ou ce qu’il y a de mieux pour l’accomplissement du travail d’un seul type de travailleur (même si &#039;&#039;tout le monde&#039;&#039; est censé devoir utiliser l’outil), plutôt que de maximiser l’objectif de l’entreprise qui est d’avoir un système de flux de production de la valeur plus rapide pour les clients.&lt;br /&gt;
&lt;br /&gt;
In large-scale adoption of Scrum or agile principles, most of the “Yes, but …” issues that are raised are examples of local optimization, such as, “&#039;&#039;Yes, but…what about management reporting&#039;&#039;?” or more generally, “&#039;&#039;Yes, but…what about &amp;lt;special case=&amp;quot;&amp;quot;&amp;gt;&#039;&#039;?” Then, policies and practices are twisted around, serving the goal of reporting or some other secondary aim rather than the primary goal of optimizing for fast value throughput. Sometimes we see &#039;&#039;local optimization for the extreme or rare case&#039;&#039; . For example, a person responsible for making a centralized tool choice for the enterprise presents a scenario for a complex or rare case of use, and then chooses the tool that fits that, sub-optimizing for a 5 percent case instead of optimizing for ease and speed for the 95 percent case.&amp;lt;/special&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans les adoptions de Scrum ou des principes agiles à grande échelle, la plupart des problématiques de type « Oui, mais … » qui sont soulevées sont des exemples de sous-optimisations, comme par exemple « &#039;&#039;Oui, mais … qu’en est-il des comptes-rendus auprès du management&#039;&#039; ? » ou encore de manière plus générale « * Oui, mais … qu’en est-il de … * ? ». Alors, les principes et les pratiques sont dévoyés, pour servir soit l’objectif de rendre compte soit n’importe quel autre objectif secondaire plutôt que suivre l’objectif d’optimiser le flux de valeur produite. De temps en temps, nous voyons des &#039;&#039;&#039;optimisations locales dans certains cas rares ou extrêmes&#039;&#039;&#039;. Par exemple, une entreprise doit choisir un outil centralisé répondant à un certain nombre de cas d’utilisations possibles dont un cas extrêmement rare ou complexe, la personne, en charge de faire ce choix, choisit un outil correspondant à un cas unique d’utilisation, sous-optimisant ainsi l’ensemble du système pour un cas représentant uniquement 5% des cas d’utilisation au lieu de l’optimiser pour la majorité des 95% des autres cas d’utilisations.&lt;br /&gt;
&lt;br /&gt;
Other local optimizations are due to ignorance of new ways of working. This is especially common in large-scale product groups. For example, we once helped a large networking product group in Europe adopt Scrum and the practice of &#039;&#039;continuous integration&#039;&#039; (CI) combined with a CI system that continually integrated, built, and automatically tested the product. After some time, an outside traditional manager inspected what was going on, and recommended the integration practices should be changed—because there was no written integration plan for how a human integration manager should manually integrate all the software, and of course, there was no integration manager. They wanted to ‘optimize’ around the work of an integration manager that was no longer needed. They could not see that their entire old-fashioned model of work had been eliminated with CI. This story repeats in all the departments of a large established product: local optimization around the &#039;&#039;existing&#039;&#039; ways of work, such as manual test, a separate architecture department, component teams, and so on. A coach working to introduce large-scale Scrum at the enterprise level has a &#039;&#039;mountain&#039;&#039; of similar local optimization thinking to deal with.&lt;br /&gt;
&lt;br /&gt;
D’autres optimisations locales sont dues, quant à elles, à l’ignorance des nouvelles manières de travailler. C’est quelque chose de très répandue et tout spécialement dans les groupes produit à grande échelle. Par exemple, un jour nous avons aidé un groupe produit distribué à travers l’Europe à adopter d’une part Scrum et d’autre part la pratique de &#039;&#039;l’intégration continue&#039;&#039; (CI) le tout sous la forme d’un système d’intégration continue dédié intégrant, compilant, testant automatiquement de manière continue le produit. Après quelques temps, un manager, que l’on pourrait qualifier de traditionnel, extérieur au groupe est venu inspecter ce qu’il se passait. Celui-ci a recommandé que les pratiques d’intégration devraient être changées en raison de l’absence de schéma d’intégration global permettant à un responsable d’intégration de faire manuellement l’intégration de l’ensemble du logiciel ; une absence de schéma pour la bonne raison qu’il n’y avait plus besoin de responsable d’intégration au sein de l’organisation. Il voulait ‘optimiser’ le travail d’un responsable d’intégration qui n’existait plus. Il était dans l’impossibilité de voir que la totalité de l’ancienne manière de faire les choses avait disparu avec l’intégration continue. Cette histoire se répéta dans l’ensemble des départements du groupe produit : il y a avait des optimisations locales partout autour des façons de faire existantes, tels que les tests manuels, le département d’architecture séparé des équipes, les équipes composants, etc. N’importe quel coach dont la tâche consistait à introduire Scrum à grande échelle au niveau de l’organisation avait une &#039;&#039;montagne&#039;&#039; d’optimisations locales à penser à gérer.&lt;br /&gt;
&lt;br /&gt;
In lean thinking and agile methods, the focus is on global systems goals: Deliver value fast with high quality and morale—&#039;&#039;&#039;global optimization&#039;&#039;&#039; . Try to consider decisions in light of this goal. To develop an “optimize the whole” culture, challenge all decisions and policies with the question:&lt;br /&gt;
&lt;br /&gt;
Dans l’approche lean et dans les méthodes agiles, l’accent est mis sur les objectifs du système dans sa globalité : livrer de la valeur de grande qualité au plus vite tout en gardant le moral des équipes au plus haut - autrement dit une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039;. Essayer de reconsidérer vos décisions à la lumière de cet objectif. Pour développer une culture de « l’optimisation du tout », remettez donc en cause toutes les décisions et les règles avec la question suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Does this decision or policy focus on delivering value to the external customer fast, or does it focus on the interests of a department, person, internal policy/practice, or rare case?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;** Est-ce que cette décision ou cette règle se focalise-t-elle sur livrer de la valeur au client externe au plus vite, ou se focalise-t-elle sur les intérêts d’un département, d’une personne, d’une pratique/règle interne, ou d’un cas rarissime ?**&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
In LeSS, the Product Owner is responsible for choosing high-value goals that &#039;&#039;&#039;could lead to potentially shippable product (at the end of the Sprint) and that maximize the desired impacts and that delight the customer, while maintaining a sustainable pace and high engineering quality&#039;&#039;&#039;. That explicit goal is meant to orient the system toward global rather than local optimization.&lt;br /&gt;
&lt;br /&gt;
Dans LeSS, le Product Owner est responsable pour choisir ces objectifs à haute valeur qui &#039;&#039;&#039;pourrait mener à un produit potentiellement livrable (à la fin du Sprint) maximisant les impacts souhaités et réjouissant le client tout en maintenant un rythme soutenable et une haute qualité d’ingénierie&#039;&#039;&#039;. Cet objectif explicite est destiné à orienter le système vers son optimisation globale plutôt que vers une optimisation qui ne serait que locale.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In addition to becoming a systems thinker yourself, encourage others to learn more about this topic. We suggest you to try getting together at a whiteboard with colleagues to sketch a causal loop diagram, so that &#039;&#039;being&#039;&#039; systems thinkers and &#039;&#039;doing&#039;&#039; systems thinking are connected at the workplace.&lt;br /&gt;
&lt;br /&gt;
En plus de devenir un pratiquant de l’approche systémique vous-même, encouragez donc les autres à en apprendre plus sur ce sujet. Nous vous suggérons d’essayer de rassembler quelques-uns de vos collègues autour d’un tableau blanc et d’y dessiner des diagrammes de boucles causales, afin que les architectes des systèmes et les pratiquants de l’approche systémique soient réunis en un seul endroit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|group%20cld%20modeling.jpg]]&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-20-fr.png|frame|none|alt=|caption systems thinking-20.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
Séance d’approche systémique. Réalisation d’un diagramme de boucle cause à plusieurs mains dans l’objectif d’avoir une conversation.&lt;br /&gt;
&lt;br /&gt;
== Recommended Readings ==&lt;br /&gt;
&lt;br /&gt;
== Lectures recommandées ==&lt;br /&gt;
&lt;br /&gt;
* W. Edwards Deming’s [http://www.amazon.com/Out-Crisis-W-Edwards-Deming-ebook/dp/B00653KTES/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601625&amp;amp;sr=8-1&amp;amp;keywords=out+of+the+crisis &#039;&#039;Out of the Crisis&#039;&#039;] is a master work by arguably the most well-known systems thinker and quality expert. It opens with the modest goal, “The aim of this book is transformation of the style of American management… It requires a whole new structure, from foundation upward.” Deming also advocates the &#039;&#039;System of Profound Knowledge&#039;&#039; in which managers (1) appreciate there is a &#039;&#039;system&#039;&#039; , (2) understand common-cause and special-cause variation (queueing theory is related to variation), (3) understand limitations of knowledge and reasoning mistakes, and (4) know credible psychology and social research results so that behavior- or motivation-related policies are &#039;&#039;not&#039;&#039; based on “common sense.” The core of the book centers around his famous &#039;&#039;14 Points for Management&#039;&#039; , including (for example), “&#039;&#039;Eliminate management by objective. Eliminate management by numbers, numerical goals. Substitute leadership&#039;&#039; .”&lt;br /&gt;
* [https://www.amazon.fr/Hors-crise-W-Edwards-Deming/dp/2717843930/ &#039;&#039;Hors de la Crise&#039;&#039;] de W. Edwards Deming est un ouvrage de référence par, sans conteste, le plus connu des penseurs systémiques et des experts sur la qualité. Cet ouvrage commence par un objectif modeste : « l’objectif de ce livre est la transformation du style du management américain … ce qui exige une toute nouvelle structure de fonds en combles. ». Deming prône un &#039;&#039;Système de connaissances approfondies&#039;&#039; dans lequel les managers (1) reconnaissent qu’il y a un &#039;&#039;système&#039;&#039;, (2) qu’ils sont en mesure de comprendre les facteurs les plus répandus et les facteurs spéciaux de variations au sein du système (la théorie des files d’attente est liée à ce phénomène de variation), (3) qu’ils sont en mesure de comprendre que les connaissances sont limitées et qu’il y a des erreurs de raisonnements, et (4) que la psychologie et les recherches en sciences sociales jouent des rôles tout à fait crédibles dans l’objectif de comprendre que les règles régissants les comportements ou en lien avec la motivation des individus ne soient pas basés sur le seul « bon sens ». Le cœur de l’ouvrage tourne autour des célèbres &#039;&#039;14 points pour le management&#039;&#039;, y compris par exemple « &#039;&#039;Éliminer le management par les objectifs. Éliminer le management par les nombres, par les objectifs par les nombres. Y substituer le leadership&#039;&#039;»&lt;br /&gt;
* Jay Forrester’s [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601681&amp;amp;sr=8-1&amp;amp;keywords=industrial+dynamics &#039;&#039;Industrial Dynamics&#039;&#039;] is the classic text on system dynamics—well written and insightful. Although written in the early 1960s, it is as relevant today as when published. It goes beyond cause-effect modeling to also model the flow and inventories of information, money, and material in systems. The book includes formal mathematical modeling but this is not obligatory to appreciate system dynamics.&lt;br /&gt;
* [https://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ &#039;&#039;Industrial Dynamics&#039;&#039;] de Jay Forrester est un classique du genre sur les dynamiques des systèmes - très bien écrit et très instructif. Même si cet ouvrage a été écrit au début des années 1960, il est toujours aussi pertinent aujourd’hui. Il va au-delà de la modélisation des causes à effets pour modéliser également le flux et les stocks d’informations, d’argent et de matériaux au sein d’un système. Le livre contient également une modélisation mathématique formelle de ces dynamiques, toutefois la lecture de cette dernière reste facultative quant à apprécier la qualité de l’ouvrage.&lt;br /&gt;
* Weinberg’s &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039; and &#039;&#039;An Introduction to General Systems Thinking&#039;&#039; are worthwhile. Written from the perspective of an experienced consultant in systems development.&lt;br /&gt;
* Les ouvrages [https://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039;] et [https://www.amazon.fr/Introduction-General-Systems-Thinking-Weinberg/dp/0932633498/ &#039;&#039;An Introduction to General Systems Thinking&#039;&#039;] de Gerald Weinberg sont intéressants. Il sont écrits du point de vue d’un consultant expérimenté en développement de systèmes.&lt;br /&gt;
* Senge’s [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601715&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline &#039;&#039;The Fifth Discipline&#039;&#039;] is a classic that advocates the need for leadership to apply systems thinking (it is the &#039;&#039;fifth&#039;&#039; discipline) and other key disciplines for a great, sustainable enterpise. The others include leaders with (1) personal mastery and (2) reflection on their beliefs and faulty reasoning, the (3) definition and communication of a meaningful shared vision, and (4) the ability of teams to learn. We recommend ignoring—at least during the first few years of practice—the ‘archetypes’ notion presented in the book. It was well meant as a learning aid but has been observed to distract and intimidate people from learning and applying basic system dynamics modeling. The ‘archetypes’ are not part of original system dynamics.&lt;br /&gt;
&lt;br /&gt;
[https://www.amazon.fr/cinqui%C3%A8me-discipline-Levier-organisations-apprenantes/dp/2212559372/ &#039;&#039;La cinquième discipline&#039;&#039;] est un autre classique du genre qui prône que l’encadrement d’une entreprise devrait appliquer l’approche systémique (autrement dit la &#039;&#039;cinquième&#039;&#039; discipline) ainsi que d’autres disciplines-clés toutes aussi importantes en vue d’obtenir une entreprise durable. Ces autres disciplines que les dirigeants devraient appliquer sont (1) une maîtrise personnelle des aspirations, (2) une réflexion sur leurs propres croyances et raisonnements erronés, (3) la définition et la communication d’une vision partagée ayant du sens, et (4) la capacité des équipes à apprendre. Nous vous recommandons d’ignorer - du moins dans un premier temps pendant vos premières années de pratiques - le concept d’archétypes présenté dans le livre. Ce concept avait pour but d’être une aide à l’apprentissage de la cinquième discipline mais nous avons observé qu’il était soit une source de distraction soit qu’il intimidait les lecteurs quant à leur apprentissage et à l’application de la modélisation des dynamiques des systèmes. Les ‘archetypes’ ne font pas partie à l’origine des dynamiques des systèmes.&lt;br /&gt;
&lt;br /&gt;
* [http://www.amazon.com/Fifth-Discipline-Fieldbook-Strategies-Organization-ebook/dp/B00JTCJEO8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601809&amp;amp;sr=8-1&amp;amp;keywords=The+Fifth+Discipline+Fieldbook &#039;&#039;The Fifth Discipline Fieldbook&#039;&#039;] is an in-depth resource, written from the viewpoint of many practitioners and consultants.&lt;br /&gt;
&lt;br /&gt;
*[https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ &#039;&#039;La 5ème discipline - le guide de l’organisation apprenante&#039;&#039;] est une source extrêmement riche sur l’approche systèmique écrite du point de vue des pratiquants de cette approche et de consultants.&lt;br /&gt;
&lt;br /&gt;
* The organizational-learning writings from Argyris, Putnam, McLain, and Schön. Important concepts include &#039;&#039;double-loop learning&#039;&#039; and &#039;&#039;high-advocacy/high-inquiry dialogue&#039;&#039;. Classic works include [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] and [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les écrits d’Argyris, Outnam, McLain et Schön sur les apprentissages organisationnels comme [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] et [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;] abordent des concepts importants tels que la &#039;&#039;double-boucle apprenante&#039;&#039; et le &#039;&#039;dialogue grand-plaidoyer/grand-réquisitoire&#039;&#039;.&lt;br /&gt;
* The publications and resources available through the [https://www.solonline.org/ &#039;&#039;Society for Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les publications et les ressources de la &#039;&#039;Society for Organizational Learning&#039;&#039;](https://www.solonline.org/).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===== Notes: =====&lt;br /&gt;
&lt;br /&gt;
# Senge wrote &#039;&#039;The Fifth Discipline&#039;&#039; , on systems thinking and learning organizations, named “one of the seminal management books of the last 75 years” by the &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94].&lt;br /&gt;
# Another reason: Believing more control is possible than actually is. Complexity science suggests fundamental limits on predicting and controlling semi-chaotic social systems [Stacey07]. This is a rather large can of worms that will remain unopened in this book.&lt;br /&gt;
# Macroeconomics, psychology, sociology, and biology are exceptions, among many others.&lt;br /&gt;
# ‘Basic’ does not mean trivial or easy to solve. For example, ‘motivation’ and ‘quality’ are basic but not easy issues.&lt;br /&gt;
# &#039;&#039;Feedback loops&#039;&#039; is occasionally used in this book in the colloquial sense of feedback, rather than this system dynamics sense.&lt;br /&gt;
&lt;br /&gt;
[^1] &#039;&#039;La cinquième discipline&#039;&#039; écrit par Senge sur l’approche systèmique et les organisations apprenantes a été nommé « l’un des livres les plus novateurs sur le management de ces 75 dernières années » par la &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94]. [^2]: Une autre raison : Croire que plus de contrôle est possible qu’il ne l’est actuellement. La science de la complexité montre qu’il existe des limites en terme de prédiction et de contrôle des systèmes sociaux semi-chaotiques [Stacey07]. C’est une énorme boîte de Pandore qui restera enfermée dans ce livre. [^3]: Macro économie, psychologie, sociologie et biologie sont des exemples d’exceptions parmi d’autres [^4]: ‘Basique’ ne signifie pas trivial ou facile à résoudre. Par exemple, les problématiques de ‘motivation’ et de ‘qualité’ sont des problématiques basiques mais elles ne sont pas faciles à résoudre. [^5]: &#039;&#039;Les boucles de feedback&#039;&#039; sont parfois utilisées dans ce livre dans le sens littéral du terme, plutôt dans le sens des dynamiques des systèmes&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-19-fr.png&amp;diff=14224</id>
		<title>Fichier:Xsystems-thinking-19-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-19-fr.png&amp;diff=14224"/>
		<updated>2020-10-27T21:22:23Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-18-fr.png&amp;diff=14223</id>
		<title>Fichier:Xsystems-thinking-18-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-18-fr.png&amp;diff=14223"/>
		<updated>2020-10-27T21:21:51Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-17-fr.png&amp;diff=14222</id>
		<title>Fichier:Xsystems-thinking-17-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-17-fr.png&amp;diff=14222"/>
		<updated>2020-10-27T21:20:17Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-16-fr.png&amp;diff=14221</id>
		<title>Fichier:Xsystems-thinking-16-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-16-fr.png&amp;diff=14221"/>
		<updated>2020-10-27T21:19:40Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-15-fr.png&amp;diff=14220</id>
		<title>Fichier:Xsystems-thinking-15-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-15-fr.png&amp;diff=14220"/>
		<updated>2020-10-27T21:19:07Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-14-fr.png&amp;diff=14219</id>
		<title>Fichier:Xsystems-thinking-14-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-14-fr.png&amp;diff=14219"/>
		<updated>2020-10-27T21:18:21Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-13-fr.png&amp;diff=14218</id>
		<title>Fichier:Xsystems-thinking-13-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-13-fr.png&amp;diff=14218"/>
		<updated>2020-10-27T21:18:01Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-12-fr.png&amp;diff=14217</id>
		<title>Fichier:Xsystems-thinking-12-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-12-fr.png&amp;diff=14217"/>
		<updated>2020-10-27T21:17:44Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-11-fr.png&amp;diff=14216</id>
		<title>Fichier:Xsystems-thinking-11-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-11-fr.png&amp;diff=14216"/>
		<updated>2020-10-27T21:17:24Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-10-fr.png&amp;diff=14215</id>
		<title>Fichier:Xsystems-thinking-10-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-10-fr.png&amp;diff=14215"/>
		<updated>2020-10-27T21:17:02Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-9-fr.png&amp;diff=14214</id>
		<title>Fichier:Xsystems-thinking-9-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-9-fr.png&amp;diff=14214"/>
		<updated>2020-10-27T21:16:36Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-8-fr.png&amp;diff=14213</id>
		<title>Fichier:Xsystems-thinking-8-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-8-fr.png&amp;diff=14213"/>
		<updated>2020-10-27T21:14:39Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-7-fr.png&amp;diff=14212</id>
		<title>Fichier:Xsystems-thinking-7-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-7-fr.png&amp;diff=14212"/>
		<updated>2020-10-27T21:12:58Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-6-fr.png&amp;diff=14211</id>
		<title>Fichier:Xsystems-thinking-6-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-6-fr.png&amp;diff=14211"/>
		<updated>2020-10-27T21:12:03Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xgroup-cld-modeling.jpg&amp;diff=14210</id>
		<title>Fichier:Xgroup-cld-modeling.jpg</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xgroup-cld-modeling.jpg&amp;diff=14210"/>
		<updated>2020-10-27T21:02:54Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-5-fr.png&amp;diff=14209</id>
		<title>Fichier:Xsystems-thinking-5-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-5-fr.png&amp;diff=14209"/>
		<updated>2020-10-27T21:00:57Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-4-fr.png&amp;diff=14208</id>
		<title>Fichier:Xsystems-thinking-4-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Xsystems-thinking-4-fr.png&amp;diff=14208"/>
		<updated>2020-10-27T20:33:08Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14207</id>
		<title>LeSS - Approche systémique</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Approche_syst%C3%A9mique&amp;diff=14207"/>
		<updated>2020-10-27T20:30:44Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Page créée avec « = Systems Thinking =  = Approche systémique =  I took a speed reading course and read “War and Peace” in twenty minutes. It involves Russia. —Woody Allen  J’ai pr... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Systems Thinking =&lt;br /&gt;
&lt;br /&gt;
= Approche systémique =&lt;br /&gt;
&lt;br /&gt;
I took a speed reading course and read “War and Peace” in twenty minutes. It involves Russia. —Woody Allen&lt;br /&gt;
&lt;br /&gt;
J’ai pris un cours de lecture rapide puis j’ai lu « Guerre et Paix » en vingt minutes. Cela parle de la Russie.&lt;br /&gt;
&lt;br /&gt;
“No matter what we do, the number of defects in our backlog remains about the same,” a manager told us; this for a 15 MSLOC C and C++ product with several hundred developers where we were working. What’s going on? Systems thinking may help. In small groups the forces at play are more quickly seen and informally understood, but in large product development—or any large system—it’s tough. Gerry Weinberg highlights two decisive factors in this situation:&lt;br /&gt;
&lt;br /&gt;
« Quoi que nous fassions, le nombre d’anomalie dans notre &#039;&#039;backlog&#039;&#039; reste identique. » nous a dit un jour un manager en évoquant un produit de près de 15 millions de lignes de code sur lequel plusieurs centaines de développeurs étaient en train de travailler. Que pouvait-il bien se passer ? L’approche systémique peut s’avérer utile dans ce cas comme dans d’autres. En petits groupes, les forces en présence peuvent rapidement être identifiées et comprises de manière informelle, mais dans le cadre du développement d’un gros produit ou de n’importe quel gros système, c’est difficile. Gerry Weinberg met en avant deux facteurs décisifs dans ce genre de situation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Weinberg-Brooks’ Law&#039;&#039;&#039;: More software projects have gone awry from management’s taking action based on &#039;&#039;&#039;&#039;&#039;incorrect system models&#039;&#039;&#039;&#039;&#039; than for all other causes combined.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causation Fallacy&#039;&#039;&#039;: Every effect has a cause… and we can tell which is which. [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Loi de Weinberg-Brooks&#039;&#039;&#039; : De plus en plus de projets informatiques sont partis de travers après que le management ait pris des décisions basées sur des &#039;&#039;&#039;modèles systémiques incorrects&#039;&#039;&#039; plus que pour toutes autres causes combinées.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Erreur de causalité&#039;&#039;&#039; : Chaque effet a une cause … et nous pouvons dire desquelles il s’agit. [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
These reflect the impact of our &#039;&#039;&#039;mental models&#039;&#039;&#039; on the system, a subject that will be revisited later in this section.&lt;br /&gt;
&lt;br /&gt;
Ces deux facteurs reflètent bien l’impact de nos &#039;&#039;&#039;modèles mentaux&#039;&#039;&#039; sur le système, un sujet que nous reverrons plus tard dans cette section.&lt;br /&gt;
&lt;br /&gt;
Problems stemming from mental models and assumptions are one issue. Another is that large-scale adoption of Scrum, lean thinking, and agile principles is not isolated to the development group. It bumps into product management, budgeting, beta-testing, launch, and governance and HR policies. Accordingly, in large-scale agile adoption it is useful to be able to get together with colleagues and &#039;&#039;effectively reason&#039;&#039; about the mental models, causal relations, feedback loops, and control mechanisms (or illusions of control) in a big system that is about to be seriously &#039;&#039;perturbed.&#039;&#039; Systems thinking is one of those reasoning tools.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résultant de nos modèles mentaux et de nos postulats sont un point à traiter. Un autre point est l’adoption à grande échelle de Scrum, de l’approche lean et des principes agiles en dehors du domaine du développement. Ce point est aussi présent dans la gestion de produit, les budgets, les tests, la commercialisation, la gouvernance et la politique RH. En conséquence, dans les adoptions agiles à grande échelle, il est utile de se réunir avec des collègues et de &#039;&#039;réfléchir en profondeur&#039;&#039; sur les modèles mentaux, les relations causales, les boucles de &#039;&#039;feedback&#039;&#039; et les mécanismes de contrôles (ou les illusions de contrôle) dans un gros système qui va être sérieusement &#039;&#039;pertubé&#039;&#039;. L’approche systémique est l’un de ces outils de réflexion.&lt;br /&gt;
&lt;br /&gt;
In 1958, the &#039;&#039;Harvard Business Review&#039;&#039; published [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”] a landmark paper by Jay Forrester, MIT Sloan School professor. This paper spurred the movement of systems thinking in business education, and the MIT Sloan School of Management became known for educating people in &#039;&#039;&#039;system dynamics&#039;&#039;&#039;. System dynamics is sometimes treated as a synonym for &#039;&#039;&#039;systems thinking&#039;&#039;&#039; , though the latter is a more general term.&lt;br /&gt;
&lt;br /&gt;
En 1958 la &#039;&#039;Harvard Business Review&#039;&#039; a publié un article de Jay Forrestor, professeur au MIT Sloan School, qui a fait date [https://kupdf.com/download/industrial-dynamics-a-major-breakthrough-for-decision-makers_5902479bdc0d603940959ed5_pdf “Industrial Dynamics: A Major Breakthrough for Decision Makers,”]. Cet article a lancé le mouvement de l’approche systémique dans le domaine des formations en gestion d’entreprise et la MIT Sloan School of Management devint célèbre pour ses formations en &#039;&#039;&#039;dynamique des systèmes&#039;&#039;&#039;. Le terme de dynamique des systèmes est parfois utilisé comme synonyme d’&#039;&#039;&#039;approche systémique&#039;&#039;&#039;, même si ce dernier est un terme beaucoup plus général.&lt;br /&gt;
&lt;br /&gt;
MIT also attracted other system-dynamics-oriented researchers such as Peter Senge.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-1 1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le MIT a également attiré d’autres chercheurs intéressés par la dynamique systémique tel que Peter Senge[^1].&lt;br /&gt;
&lt;br /&gt;
Consistent with &#039;&#039;Weinberg-Brook’s Law&#039;&#039;, Forrester’s research showed that decision makers who were given dynamic models of a business system and asked to improve their output performance, &#039;&#039;usually made them run worse&#039;&#039; [http://www.amazon.com/The-Fifth-Discipline-Fieldbook-Organization/dp/0385472560/ref=sr_1_fkmr0_3?ie=UTF8&amp;amp;qid=1413528034&amp;amp;sr=8-3-fkmr0&amp;amp;keywords=The+Fifth+Discipline+%EF%BF%BCFieldbook [SKRRS94]]. The observation was that most people have weak judgement on how to fundamentally improve systems, usually applying incorrect “common sense” and quick-fix ‘solutions’ that do not create long-lasting systemic improvement.&lt;br /&gt;
&lt;br /&gt;
En corrélation avec la loi de &#039;&#039;Weinberg-Brook&#039;&#039;, Jay Wright Forrester a montré que les décideurs à qui il avait été donné des modèles dynamiques de systèmes opérationnels et à qui il avait été demandé d’améliorer la performance opérationnelle, &#039;&#039;n’avaient fait généralement qu’empirer les choses&#039;&#039; [https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ [SKRRS94]]. Il en est ressorti d’ailleurs que la plupart des personnes évaluaient mal la manière dont il faut améliorer les systèmes, et appliquaient généralement leur « bon sens », en mettant en place des solutions de contournement qui n’apportent aucune amélioration systémique à long terme.&lt;br /&gt;
&lt;br /&gt;
Why is the behavior of a large development group (a system) not understood or guided skillfully? The answer lies, in part, in the behavior of stochastic systems with queues and variability, as explored in the [https://less.works/less/principles/queueing_theory.html Queueing Theory] LeSS principle. And the same answer lies in &#039;&#039;control theory&#039;&#039;: Most systems of interest—such as a product development group—have complex positive and negative feedback loops and nonlinear behavior. The behavior of these systems defies our gut instinct. And then there is the minor issue of &#039;&#039;people&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pourquoi le comportement d’un groupe de développement de grande taille (autrement dit un système) n’est-il pas compris ou guidé de manière compétente ? La réponse réside, en partie, dans le comportement des systèmes stochastiques avec les files et les variabilités comme nous avons pu l’évoquer avec le principe LeSS de la [http://www.les-traducteurs-agiles.org/2017/01/29/less-theorie-des-files-d-attente.html théorie des files d’attentes]. Et c’est la même réponse qui est au cœur de la &#039;&#039;théorie du contrôle&#039;&#039; : la plupart des systèmes d’intérêt - tel qu’un groupe de développement de produit - ont des boucles de &#039;&#039;feedback&#039;&#039; positives et négatives ainsi qu’un comportement non linéaire. Le comportement de ces systèmes défient nos instincts. Et puis il y a la problématique mineure des &#039;&#039;gens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In summary, reasons for not being skillful in fathoming or guiding a big system include (but are not limited to):&lt;br /&gt;
&lt;br /&gt;
En résumé, les raisons expliquants l’incompétence à maîtriser ou à guider un gros systèmes sont (liste non exhaustive) :&lt;br /&gt;
&lt;br /&gt;
* lack of knowledge about the system dynamics, feedback loops, nonlinear systems behavior, and unintended consequences in workplace systems&lt;br /&gt;
* un manque de connaissance des dynamiques des systèmes, des boucles de &#039;&#039;feedback&#039;&#039;, du comportement non linéaire des systèmes, et des conséquences inattendues dans les systèmes sur le lieu de travail.&lt;br /&gt;
* not understanding root causes of problems (and how to find)&lt;br /&gt;
* une incompréhension des causes racines des problèmes (et de comment les trouver)&lt;br /&gt;
** &#039;&#039;causes,&#039;&#039; not cause; in systems thinking one sees that there are multiple, indirect, and dynamic causes to problems&lt;br /&gt;
** &#039;&#039;les causes&#039;&#039;, non la cause ; en approche systémique, nous savons que les causes des problèmes sont multiples, indirectes et dynamiques&lt;br /&gt;
* not knowing if or why quick-fix or local-department decisions degraded overall delivery performance.&lt;br /&gt;
* l’incapacité à savoir si ou pourquoi une solution de contournement ou une décision locale dégrade la performance globale opérationnelle.&lt;br /&gt;
&lt;br /&gt;
In short, not being systems thinkers.&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-2 2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En bref, ne pas utiliser l’approche systémique[^2].&lt;br /&gt;
&lt;br /&gt;
These reasons are consequential at the intersection of management and large-scale adoption of lean and agile principles. The leadership team is part of the system being perturbed; if they do not apply systems thinking, they could &#039;&#039;really&#039;&#039; perturb it—and not in a good way!&lt;br /&gt;
&lt;br /&gt;
Ces raisons sont la conséquence de l’intersection du management et de l’adoption des principes lean et agile. L’équipe de direction fait partie du système qui est pertubé ; si elle n’applique pas l’approche systémique, elle pourrait &#039;&#039;vraiment&#039;&#039; le perturber - et pas de la bonne façon.&lt;br /&gt;
&lt;br /&gt;
As a summary of systems thinking insight, we like the [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 ‘laws’] described in [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413531002&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline The Fifth Discipline]:&lt;br /&gt;
&lt;br /&gt;
Les points-clés à retenir de l’approche systémique peuvent être résumé dans les [https://en.wikipedia.org/wiki/The_Fifth_Discipline#The_11_Laws_of_the_Fifth_Discipline 11 lois] décrites dans la [https://www.amazon.fr/cinqui%C3%A8me-discipline-organisations-apprenantes-dexemplaires-ebook/dp/B017WSYAHG Cinquième discipline]&lt;br /&gt;
&lt;br /&gt;
* Today’s problems come from yesterday’s ‘solutions.’&lt;br /&gt;
* The harder you push, the harder the system pushes back.&lt;br /&gt;
* Behavior will grow worse before it grows better.&lt;br /&gt;
* The easy way out usually leads back in.&lt;br /&gt;
* The cure can be worse than the disease.&lt;br /&gt;
* Faster is slower.&lt;br /&gt;
* Cause and effect are not closely related in time and space.&lt;br /&gt;
* Small changes can produce big results…but the areas of highest leverage are often the least obvious.&lt;br /&gt;
* You can have your cake and eat it too—but not all at once.&lt;br /&gt;
* Dividing an elephant in half does not produce two small elephants.&lt;br /&gt;
* There is no blame.&lt;br /&gt;
* Les problèmes d’aujourd’hui viennent des solutions d’hier&lt;br /&gt;
* Plus vous poussez, plus le système pousse en retour&lt;br /&gt;
* Le comportement empirera d’abord avant de s’améliorer&lt;br /&gt;
* La manière la plus facile de s’en sortir conduit souvent à faire quelques pas en arrière&lt;br /&gt;
* Le médicament peut être pire que la maladie&lt;br /&gt;
* Plus vite c’est plus lentement&lt;br /&gt;
* Les causes et les effets ne sont pas étroitement liés dans l’espace et le temps&lt;br /&gt;
* De petits changements peuvent produire de gros résultats … mais les zones où l’effet de levier est le plus important sont souvent les moins évidentes&lt;br /&gt;
* Vous pouvez avoir votre gâteau et le manger aussi - mais pas en une seule bouchée&lt;br /&gt;
* Couper un éléphant en deux ne produit pas deux petits éléphants&lt;br /&gt;
* Il n’y a aucun reproche à faire&lt;br /&gt;
&lt;br /&gt;
Toyota’s internal motto is [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html “Good &#039;&#039;&#039;thinking&#039;&#039;&#039;, good products.”] Systems thinking is a set of &#039;&#039;thinking&#039;&#039; tools to help…&lt;br /&gt;
&lt;br /&gt;
La devise de Toyota en interne est [http://www.toyota-global.com/company/toyota_traditions/quality/may_jun_2005.html « Une bonne &#039;&#039;&#039;réflexion&#039;&#039;&#039;, de bons produits »]. L’approche systémique est un jeu d’outils de réflexion pour aider …&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;see system dynamics&#039;&#039;&#039;—a development organization is a system of people and policies with subtle feedback loops and unintended consequences&lt;br /&gt;
* &#039;&#039;&#039;à voir les dynamiques des systèmes&#039;&#039;&#039; - une organisation de développement est un système de personnes et de règles avec de subtiles boucles de &#039;&#039;feedback&#039;&#039; et des conséquences inattendues&lt;br /&gt;
** we can learn to see and thus improve the system with &#039;&#039;&#039;causal loop diagrams&#039;&#039;&#039; created in a workshop&lt;br /&gt;
** nous pouvons apprendre à voir et ainsi à améliorer le système avec des &#039;&#039;&#039;diagrammes de boucles causales&#039;&#039;&#039; faits lors d’un atelier&lt;br /&gt;
* &#039;&#039;&#039;see mental models&#039;&#039;&#039;—one reason behind suboptimal decisions is mistaken assumptions and faulty reasoning&lt;br /&gt;
* &#039;&#039;&#039;à percevoir les modèles mentaux&#039;&#039;&#039; - parmi les raisons derrière des décisions sous-optimales se trouvent des hypothèses erronées et des raisonnements incorrects&lt;br /&gt;
** causal loop diagramming and Five Whys expose these&lt;br /&gt;
** les diagrammes de boucles causales et les cinq pourquoi permettent de révéler tout ça&lt;br /&gt;
* &#039;&#039;&#039;see local optimization&#039;&#039;&#039;—another source of suboptimal decisions is &#039;&#039;&#039;local optimization&#039;&#039;&#039; , making the ‘best’ decision from the viewpoint of a person or department, rather than &#039;&#039;&#039;global optimization&#039;&#039;&#039; for the lean systems-level goal of &#039;&#039;deliver value fast with high quality and high morale&#039;&#039; .&lt;br /&gt;
* &#039;&#039;&#039;à voir les optimisations locales&#039;&#039;&#039; - une autre source de décisions sous-optimales est &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039;, autrement dit prendre la « meilleure » décision du point de vue d’une personne ou d’un département, au détriment d’une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039; qui est l’objectif au niveau système &#039;&#039;lean&#039;&#039; que de pouvoir &#039;&#039;livrer la plus grande valeur possible de très grande qualité avec un moral d’acier&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This introduction is organized around the following areas in systems thinking: Learning to see (1) &#039;&#039;system dynamics&#039;&#039; , (2) &#039;&#039;mental models&#039;&#039; , (3) &#039;&#039;root causes&#039;&#039; , and (4) &#039;&#039;local optimization&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Cette introduction à l’approche systémique est présenté autour des domaines suivants : Apprendre à voir (1) &#039;&#039;les dynamiques des systèmes&#039;&#039;, (2) &#039;&#039;les modèles mentaux&#039;&#039;, (3) &#039;&#039;les causes racines&#039;&#039;, et (4) &#039;&#039;l’optimisation locale&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Static versus Dynamic Complexity ===&lt;br /&gt;
&lt;br /&gt;
=== Complexité statique versus complexité dynamique ===&lt;br /&gt;
&lt;br /&gt;
Many of us, especially in engineering and finance, are educated to master &#039;&#039;&#039;complexity of static details&#039;&#039;&#039;—learning to analyze and manage information (requirements, financial analysis, …), decompose complex structures into simpler ones, and so forth. That is, complexity of a static, information, or structural nature.&lt;br /&gt;
&lt;br /&gt;
La plupart d’entre nous, notamment les ingénieurs et les financiers, ont été formés pour maîtriser la &#039;&#039;&#039;complexité de détails statiques&#039;&#039;&#039; - en apprenant à analyser et à gérer l’information (exigences, analyses financières, …), à décomposer des structures complexes en structures simples, et ainsi de suite. C’est-à-dire, la complexité d’une information qui est par nature structurellement statique.&lt;br /&gt;
&lt;br /&gt;
Why do big software systems tend to degrade, with more and more time spent on defects? What might happen if the USA invades Iraq? Seeing the dynamics behind these questions involves analysis of the &#039;&#039;&#039;complexity of dynamics&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Pourquoi les gros systèmes informatiques ont-ils tendance à se dégrader malgré de plus en plus de temps passé sur les anomalies ? Qu’est-ce qui pourrait bien se passer si les États-Unis d’Amérique envahissait l’Irak ? Voir les dynamiques derrière ces questions implique d’analyser la &#039;&#039;&#039;complexité des dynamiques&#039;&#039;&#039; en jeu.&lt;br /&gt;
&lt;br /&gt;
In contrast to static-details education, many of us receive no &#039;&#039;formal&#039;&#039; education in analyzing &#039;&#039;dynamics&#039;&#039; complexity&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-3 3]&amp;lt;/sup&amp;gt;, especially workplace dynamics. Perhaps there is a belief it is sufficient to rely on common sense in the workplace. Forrester demonstrated that “common sense” is just not so in complex systems, and showed it is possible to formally educate people to become better system dynamics thinkers in the workplace using &#039;&#039;dynamic system models&#039;&#039; visualized in &#039;&#039;flow diagrams&#039;&#039; [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
En contraste avec une formation sur les détails statiques que la plupart d’entre nous avons suivie, peu d’entre nous ont reçu de formation sur l’étude des systèmes dynamiques et complexes[^3] et notamment en milieu professionnel. Peut-être parce que nous avons la croyance qu’il est suffisant de s’appuyer sur le bon sens en milieu professionnel. Jay Wright Forrester a démontré que le « bon sens » n’est pas suffisant dans des systèmes complexes et qu’il est possible de former des personnes pour leur permettre de mieux appréhender les dynamiques des systèmes en milieu professionnel en utilisant notamment des &#039;&#039;diagrammes de flux&#039;&#039; [http://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413582840&amp;amp;sr=8-1&amp;amp;keywords=Industrial+Dynamics [Forrester61]].&lt;br /&gt;
&lt;br /&gt;
Flow diagrams encompass material, financial, and information flows, stocks (variables with a quantity, such as cash or number of defects), the impact of decisions and policies, and cause-effect relations. A popular simplification is the &#039;&#039;&#039;causal loop diagram&#039;&#039;&#039; that focuses on cause-effect relationships and feedback loops in a system [http://www.amazon.com/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. There are a variety of similar notations; they all show stocks (variables), causal links, and delay. In [http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] this is called the &#039;&#039;diagram of effect&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de flux peuvent s’appliquer aussi bien aux flux matériels, financiers, d’informations, de stocks (n’importe quel type de stock quantitatif comme de l’argent ou des anomalies), aux conséquences des décisions et des politiques et des relations de causes à effet. Lorsque nous pensons aux diagrammes de flux, nous pensons souvent au seul diagramme de boucle causale dédié aux relations de cause à effets et aux boucles de rétroaction dans un système [http://www.amazon.fr/Business-Dynamics-Systems-Thinking-Modeling/dp/0071179895 [Sterman00]]. Il existe une grande variété d’autres diagrammes qui peuvent faire figurer les stocks (quels qu’ils soient), les liens de causalités, et les retards. Dans son ouvrage, [http://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413527418&amp;amp;sr=8-1&amp;amp;keywords=Quality+Software+Management%3A+Systems+Thinking [Weinberg92]] Gerald Weinberg appelle cela un &#039;&#039;diagramme d’effet&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== The First Law of Diagramming: Model to Have a Conversation ===&lt;br /&gt;
&lt;br /&gt;
=== La première loi de la réalisation d’un diagramme : nous modélisons pour avoir une conversation ===&lt;br /&gt;
&lt;br /&gt;
A tool to learn to see system dynamics is a causal loop diagram, ideally sketched on a whiteboard in a LeSS Overall Retrospective with colleagues. Before going further, here is the &#039;&#039;First Law of Diagramming&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un outil très utile pour apprendre les dynamiques des systèmes est le diagramme de boucles causales - nous vous recommandons de l’utiliser sur un tableau blanc notamment lors des Rétrospectives Globales LeSS. Mais avant d’aller plus loin, voici la &#039;&#039;première loi de réalisation d’un diagramme&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;The primary value in diagrams is in the discussion while diagramming—we model to have a conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;La première valeur d’un diagramme c’est la discussion qui se déroule lors de la réalisation du diagramme - nous modélisons pour avoir une conversation.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
When a group gets together to sketch a causal loop diagram on a whiteboard (See it is the the acts of discussing and thinking that are most important when diagramming, Valtech India.), the primary value is the conversation and shared understanding they arrive at while creating the model. Its visualization as an easy-to-see diagram &#039;&#039;is&#039;&#039; important to make concrete and unambiguous (on the whiteboard) the ideas—the mental models people have—because words alone can be fuzzy and misunderstood. But still, the diagram is secondary to what people take away: learning and a revised understanding through a discussion.&lt;br /&gt;
&lt;br /&gt;
Lorsqu’un groupe se rassemble pour dessiner un diagramme de boucles causales sur un tableau blanc (« C’est l’acte de discuter et de réfléchir qui est le plus important lorsque nous dessinons », Valtech India.), la première valeur d’un diagramme c’est la conversation et la compréhension commune à laquelle les personnes arrivent lors de la création du modèle. Ce qu’il en résulte à savoir un diagramme facile à comprendre est important pour rendre les idées et les modèles mentaux concrets et non ambigües (sur le tableau blanc) parce que les mots seuls peuvent être imprécis et mal compris. Toutefois, le diagramme est secondaire par rapport avec ce que les gens repartent : ils ont appris quelque chose et ont revu leur compréhension du monde à travers une discussion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|frame|none|alt=|caption group%20cld%20modeling.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|frame|none|alt=|caption group%20cld%20modeling.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
Un atelier d’approche systémique : réalisation d’un diagramme de boucles causales à plusieurs - modéliser pour avoir une conversation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Concrete modeling tip&#039;&#039; : We start by writing on sticky notes to define &#039;&#039;variables&#039;&#039; . A note might read “feature velocity” or “# defects.” We place these on a whiteboard. Then we sketch causal link lines between the sticky notes. There will be (or should be) lots of rewriting, erasing, and redrawing during the modeling session. The most meaningful outcome is &#039;&#039;understanding&#039;&#039; ; in addition, some participants will want to take a digital photo of the whiteboard sketch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Trucs et astuces de pro pour modéliser&#039;&#039; : Nous commençons par écrire sur des petits papiers repositionnables les noms des &#039;&#039;variables&#039;&#039;, par exemple « vélocité des &#039;&#039;features&#039;&#039; » ou « nombre d’anomalies ». Nous les plaçons ensuite sur le tableau blanc. Puis nous dessinons les liens de causalités entre les papiers . Il y aura (ou il devrait y avoir) beaucoup de réécriture, d’effaçage, de redessin lors de la session de modélisation. Le résultat le plus important d’une telle session est la &#039;&#039;compréhension&#039;&#039; - il se peut qu’à l’issue de cet atelier, certains participants voudront prendre une photo du dessin du tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing System Dynamics: Causal Loop Diagrams ==&lt;br /&gt;
&lt;br /&gt;
== Voir les dynamiques des systèmes : les diagrammes de boucles causales ==&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams are used regularly in introductions to LeSS, to help see the dynamics of what is going on in large-scale development. It is useful to understand them for that reason alone. And more useful to you, we recommend you do these together with colleagues at a whiteboard. Model to have a conversation. When? Probably during a LeSS Overall Retrospective.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales sont souvent utilisés en introduction à LeSS pour aider à voir les dynamiques de ce qu’il se passe dans du développement à grande échelle. Il est donc utile de comprendre ce type de diagrammes pour cette seule et unique raison. Et cela s’avèrera encore plus utile pour vous, si vous le faites avec vos collègues devant un tableau blanc. Vous modélisez pour avoir une conversation. Quand ? Plus probablement lors d’une rétrospective globale LeSS.&lt;br /&gt;
&lt;br /&gt;
The practical aspect of this tip is more important than may first be appreciated. It is vague and low-impact to suggest “be a systems thinker.” But if you and four colleagues get into the habit of standing together at a large whiteboard, sketching causal loop diagrams together, then there is a concrete and potentially high-impact practice that connects “&#039;&#039;be&#039;&#039; a systems thinker” with “&#039;&#039;do&#039;&#039; systems thinking.”&lt;br /&gt;
&lt;br /&gt;
L’aspect pratique de cet exercice est bien plus important que ce qu’il peut paraître au premier abord. Notre conseil d’« être un pratiquant systémique » peut vous sembler vague et sans grand impact. Mais si vous et quatre de vos collègues prenez l’habitude de vous réunir devant un grand tableau blanc, en dessinant des diagrammes de boucles causales ensemble, alors vous arriverez à faire la connexion entre « &#039;&#039;être&#039;&#039; un pratiquant systémique » avec « &#039;&#039;faire&#039;&#039; de l’approche systémique ».&lt;br /&gt;
&lt;br /&gt;
The following examples seem sterile when presented in a book. But imagine you were at a whiteboard with other people and the diagrams were being sketched during a lively conversation. That’s the way we suggest ‘doing’ systems thinking.&lt;br /&gt;
&lt;br /&gt;
Les exemples suivants peuvent paraître stériles car présentés dans un livre. Mais imaginez-vous à côté d’un tableau blanc avec d’autres personnes dessinant ensemble des diagrammes au cours d’une conversation animée. C’est de cette manière-là que nous suggérons de ‘ faire ’ de l’approche systémique.&lt;br /&gt;
&lt;br /&gt;
====== Notation and Examples ======&lt;br /&gt;
&lt;br /&gt;
====== Notation et exemples ======&lt;br /&gt;
&lt;br /&gt;
Causal loop diagrams contain many elements; the following common useful subset is explored through a scenario.&lt;br /&gt;
&lt;br /&gt;
Les diagrammes de boucles causales contiennent beaucoup d’éléments ; les éléments suivants sont les plus communément utilisés et sont vus en détail tout au long du scénario qui va suivre&lt;br /&gt;
&lt;br /&gt;
* variables&lt;br /&gt;
* causal links&lt;br /&gt;
* opposite effects&lt;br /&gt;
* constraints&lt;br /&gt;
* goals&lt;br /&gt;
* reactions; quick-fix reactions&lt;br /&gt;
* interaction effects&lt;br /&gt;
* extreme effects&lt;br /&gt;
* delays&lt;br /&gt;
* positive feedback loops&lt;br /&gt;
* variables&lt;br /&gt;
* liens de causalité&lt;br /&gt;
* effets opposés&lt;br /&gt;
* contraintes&lt;br /&gt;
* objectifs&lt;br /&gt;
* réactions ; réactions solutions de contournement&lt;br /&gt;
* effets d’interaction&lt;br /&gt;
* effets extrêmes&lt;br /&gt;
* retards&lt;br /&gt;
* boucles de &#039;&#039;feedback&#039;&#039; positives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following simplified scenario is for a particular organization. It is not a generalization.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le scénario qui suit est un scénario simplifié pour une organisation spécifique. Il ne s’agit pas d’une généralisation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variables&#039;&#039;&#039;—Causal loop diagrams include &#039;&#039;variables&#039;&#039; (or stocks) such as the &#039;&#039;velocity (rate of delivery) of software features&#039;&#039; and &#039;&#039;number of defects&#039;&#039; . Variables have a measurable quantity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les variables&#039;&#039;&#039; - Les diagrammes de boucles causales comportent des &#039;&#039;variables&#039;&#039; (ou des stocks) telle que la &#039;&#039;vélocité (taux de livraison) des features&#039;&#039; et le &#039;&#039;nombre d’anomalies&#039;&#039;. Les variables ont une quantité mesurable.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-4.png.pagespeed.ic.WpO9GKmuZP.webp|frame|none|alt=|caption systems thinking-4.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-4-fr.png|frame|none|alt=|caption systems thinking-4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Causal links&#039;&#039;&#039;—An element can have an effect on another, such as if feature velocity increases, then the number of defects increase; that is, more new code, more defects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les liens de causalité&#039;&#039;&#039; - Un élément peut avoir un effet sur un autre, comme par exemple si la vélocité des &#039;&#039;features&#039;&#039; augmente alors le nombre d’anomalies augmente ; autrement dit, plus de code, plus d’anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-5.png.pagespeed.ic.oPRro2SqND.webp|frame|none|alt=|caption systems thinking-5.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-4-fr.png|frame|none|alt=|caption systems thinking-5.png]]&lt;br /&gt;
&lt;br /&gt;
Now it is time to bump into &#039;&#039;Weinberg-Brook’s Law&#039;&#039; and the &#039;&#039;Causation Fallacy&#039;&#039; . It is easy to sketch a diagram; it is something else to model with insight. For example, consider the relationship between the &#039;&#039;number of developers&#039;&#039; and &#039;&#039;feature velocity.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il est temps désormais de se jeter à corps perdu dans la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; et dans la &#039;&#039;causalité fallacieuse&#039;&#039;. C’est facile de dessiner un diagramme, ça l’est moins que de modéliser en faisant preuve de clairvoyance comme par exemple, la relation entre le &#039;&#039;nombre de développeurs&#039;&#039; et la &#039;&#039;vélocité des features&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The nature of any cause-effect relationship is actually not obvious, though it is common for people to jump to conclusions such as more developers means better velocity. Adding people late in development may &#039;&#039;reduce&#039;&#039; velocity (a sub-element of “Brooks’ Law” [Brooks95]). Or, &#039;&#039;more&#039;&#039; bad programmers could really slow you down. An argument can be made that &#039;&#039;removing&#039;&#039; terrible developers can &#039;&#039;improve&#039;&#039; velocity.&lt;br /&gt;
&lt;br /&gt;
Toute relation de cause à effets est par nature obscure, même si les gens ont l’habitude de sauter sur la première conclusion venue comme par exemple plus de développeurs égale plus de vélocité. Ajouter des personnes tard au cours du développement peut &#039;&#039;réduire&#039;&#039; la vélocité (il s’agit d’une composante de la « loi de Brooks » [Brooks95]). Ou, &#039;&#039;davantage&#039;&#039; de mauvais développeurs pourrait vraiment vous ralentir. Il pourrait être objecté qu’&#039;&#039;enlever&#039;&#039; des développeurs exécrables peut permettre &#039;&#039;d’améliorer&#039;&#039; la vélocité.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-6.png.pagespeed.ic.6XIYl7Vm3_.webp|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-6-fr.png|frame|none|alt=|caption systems thinking-6.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Opposite effects&#039;&#039;&#039;—A causal link effect may be the same or opposite direction; if A goes up then B goes up, or vice versa. Opposite effect is shown with an ‘O’ on the line. Suppose defects going up puts a drag on the system, lowering the velocity of new features because people spend more time fixing or working around bugs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets opposés&#039;&#039;&#039; - L’effet d’un lien de causalité peut aller dans la même direction ou dans la direction opposée. Si A monte alors B monte ou vice versa. L’effet opposé se souligne à l’aide d’un ‘0’ sur la ligne. Supposons que les anomalies ralentissent grandement le système, réduisant la vélocité des nouvelles &#039;&#039;features&#039;&#039; parce que les gens passent plus de temps à corriger ou à trouver des solutions de contournement aux anomalies.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-7.png.pagespeed.ic.DPGMJyX2Qf.webp|frame|none|alt=|caption systems thinking-7.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-7-fr.png|frame|none|alt=|caption systems thinking-7.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Constraints&#039;&#039;&#039;—Unless you can find people to work for free, there is a constraint on the number of developers, based upon cash supply.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contraintes&#039;&#039;&#039; - À moins que vous ne trouviez des personnes prêtent à travailler gratuitement, il y a une contrainte sur le nombre de développeurs basé sur le budget disponible.&lt;br /&gt;
&lt;br /&gt;
Constraints are &#039;&#039;not&#039;&#039; causal links. As cash supply goes up, it is not the case that the number of developers goes up.&lt;br /&gt;
&lt;br /&gt;
Les contraintes ne sont &#039;&#039;pas&#039;&#039; des liens de causalité. Lorsque la montant du budget disponible augmente, ce n’est pas le cas du nombre de développeurs/&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-8.png.pagespeed.ic.gbgAIK-IsZ.webp|frame|none|alt=|caption systems thinking-8.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-8-fr.png|frame|none|alt=|caption systems thinking-8.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goals and Reactions&#039;&#039;&#039;–People, departments, and systems have goals, such as &#039;&#039;higher feature velocity&#039;&#039; . Goals often generate pressure for people to react (or act), with the intent of achieving the goal. But since there is &#039;&#039;Causation Fallacy&#039;&#039; and &#039;&#039;Weinberg-Brooks’ Law&#039;&#039; to contend with, people should be cautious about assuming what actions will help. Now a goal and pressure for reaction is shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buts et réactions&#039;&#039;&#039; - Les personnes, les départements et les systèmes ont des buts, comme par exemple avoir une &#039;&#039;vélocité des features plus élevée&#039;&#039;. Les buts occasionnent souvent de la pression pour que les gens réagissent (ou agissent) dans l’intention de leur faire atteindre ce but. Mais étant donné qu’il y a la &#039;&#039;causalité fallacieuse&#039;&#039; et la &#039;&#039;loi de Weinberg-Brooks&#039;&#039; à laquelle il faut faire face, les gens devraient être prudents quant aux actions pertinentes à entreprendre. Voici un exemple de diagramme modélisant cela :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-9.png.pagespeed.ic.yVcHbh4_-i.webp|frame|none|alt=|caption systems thinking-9.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-9-fr.png|frame|none|alt=|caption systems thinking-9.png]]&lt;br /&gt;
&lt;br /&gt;
Not only does a goal with a &#039;&#039;reward&#039;&#039; create pressure to act, but also it creates pressure to &#039;&#039;appear&#039;&#039; to be acting and achieving, due to the &#039;&#039;&#039;measurement dysfunction&#039;&#039;&#039; generated by rewards. And the measurement dysfunction can be proportional to the perceived value of the reward because people are being motivated to get a reward, not to improve the system [http://www.amazon.com/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Notice how rewards can actually degrade system performance. Visually, the system dynamics may be…&lt;br /&gt;
&lt;br /&gt;
Non seulement un but à atteindre avec une &#039;&#039;récompense&#039;&#039; au bout engendre une pression à agir, mais cela créé aussi une pression à &#039;&#039;faire semblant&#039;&#039; d’agir et à atteindre le but — les récompenses provoquent un &#039;&#039;&#039;dysfonctionnement des indicateurs&#039;&#039;&#039;. Le dysfonctionnement des indicateurs peut être proportionnel à la valeur perçue de la récompense parce que les personnes sont motivées pour avoir la récompense, non pour améliorer le système [http://www.amazon.fr/Measuring-Managing-Performance-Organizations-Dorset-ebook/dp/B00DY3KQX6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413596674&amp;amp;sr=8-1&amp;amp;keywords=measuring+and+managing+performance+in+organizations [Austin96]]. Remarquez bien comment et de quelle manière les récompenses peuvent dégrader la performance du système. De manière visuelle, les dynamiques d’un tel système pourrait être …&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-10.png.pagespeed.ic.39CLFp-g_9.webp|frame|none|alt=|caption systems thinking-10.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-10-fr.png|frame|none|alt=|caption systems thinking-10.png]]&lt;br /&gt;
&lt;br /&gt;
It is quite interesting that all these dynamics have been added by introduction of reward, and yet there is no necessary connection between the top part of this model and the bottom.&lt;br /&gt;
&lt;br /&gt;
Il est assez intéressant de voir que toutes ces dynamiques ont été ajouté par l’introduction d’une récompense et qu’il n’y pas de connexion entre le haut et le bas de cette modélisation.&lt;br /&gt;
&lt;br /&gt;
There is no guarantee that feature velocity has improved—or even been worked on.&lt;br /&gt;
&lt;br /&gt;
Il n’y a aucune garantie que la vélocité des features s’améliore ou même que l’on y travaille.&lt;br /&gt;
&lt;br /&gt;
Removing the reward system is a root-cause solution to the dysfunction. Another (lesser) surface countermeasure is the lean-thinking &#039;&#039;Go See&#039;&#039; (go see physically at the place of real work) principle and management behavior:&lt;br /&gt;
&lt;br /&gt;
Enlever le système de récompense est une solution à la cause racine de ce dysfonctionnement. Une autre contremesure de surface est le principe et le comportement managériale &#039;&#039;Aller voir&#039;&#039; (aller voir physiquement sur le lieu où le travail s’effectue) de l’approche lean.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-11.png.pagespeed.ic.NU8SjnJkUY.webp|frame|none|alt=|caption systems thinking-11.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-11-fr.png|frame|none|alt=|caption systems thinking-11.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick-fix reactions&#039;&#039;&#039;—One difficult and slow solution toward the goal of higher velocity is to hire great developers, to increase coaching and education of existing staff, and to remove terrible workers. The alternative is called a &#039;&#039;quick fix&#039;&#039; , a reaction that is hoped to achieve the goal quickly and with less effort. Sometimes a quick fix works well both in the short and long term, really strengthening the system. Sometimes not…hence, “faster is slower.” For example, people may &#039;&#039;believe&#039;&#039; that increasing the number of developers increases the feature velocity. And they may thereby hope that hiring more developers will most quickly and easily solve the velocity problem. ‘QF’ indicates the quick fix:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solutions de contournement&#039;&#039;&#039; - Une solution payante à long terme pour atteindre une vélocité plus grande, qui n’est pas sans difficulté, consiste à : recruter de développeurs très qualifiés, faire davantage d’accompagnements et de formations, et à se séparer des moins bons éléments. L’alternative est ce que l’on appelle une &#039;&#039;solution de contournement&#039;&#039;, c’est ce que l’on met en place dans l’espoir d’atteindre l’objectif en moins de temps et avec moins d’effort. Parfois, une solution de contournement se révèle payante aussi bien dans le court terme que dans le long terme, renforçant par la-même le système. D’autres fois cela ne fonctionne pas … d’où l’expression « aller plus vite c’est aller plus lentement ». Par exemple, les gens peuvent &#039;&#039;croire&#039;&#039; qu’augmenter le nombre de développeurs permet d’augmenter la vélocité des features. Et ils peuvent par conséquent être amenés à espérer qu’en recrutant davantage de développeurs cela permettra de résoudre plus vite et plus facilement le problème de vélocité. La mention ‘SC’ sur le diagramme ci-dessous indique une solution de contournement.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-12.png.pagespeed.ic.x8IJWKprUx.webp|frame|none|alt=|caption systems thinking-12.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-12-fr.png|frame|none|alt=|caption systems thinking-12.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interaction effects&#039;&#039;&#039;—There is the constraint of cash supply on hiring. One hard and slow solution is to get more cash. A quicker fix is to hire &#039;&#039;much&#039;&#039; cheaper developers. In this case, the level of cash supply now has an &#039;&#039;interaction effect&#039;&#039; with other causal links. Low cash tends to strengthen the hire rate of much cheaper developers when there is pressure to increase hire rates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets d’interaction&#039;&#039;&#039; - La capacité à embaucher est contraint à la capacité budgétaire. Une solution de longue haleine non sans difficulté est d’obtenir davantage de budget. Une solution de contournement possible est de recruter un &#039;&#039;grand&#039;&#039; nombre de développeurs bon marché. Dans ce cas, le niveau du budget a un &#039;&#039;effet d’interaction&#039;&#039; avec les autres boucles causales. Un budget peu élevé aura tendance à renforcer le taux de développeurs bon marché si la pression pour recruter augmente.&lt;br /&gt;
&lt;br /&gt;
One could simply draw an (opposite) causal link directly from &#039;&#039;cash supply&#039;&#039; to &#039;&#039;hire rate of very cheap developers&#039;&#039; , but that merely says that less cash leads to more hiring of extremely cheap developers. That is not quite what we want to say; rather, we want to show the interaction effect—that effect A influences &#039;&#039;effect&#039;&#039; B. This is done by showing a causal link entering another causal link. For example, from &#039;&#039;cash supply&#039;&#039; to the quick-fix line going into &#039;&#039;hire rate of very cheap developers&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
Nous pourrions dessiner simplement un lien de causalité (opposé) de &#039;&#039;rentrée budgétaire&#039;&#039; à &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;, mais cela voudrait simplement dire qu’avoir un budget moindre aurait pour conséquence de recruter davantage de développeurs bon marché. Mais ce n’est pas tout à fait ce que nous voulons dire ; ce que voulons montrer en fait, c’est l’effet d’interaction - c’est-à-dire qu’un effet A influence un &#039;&#039;effet&#039;&#039; B. Cela se fait en montrant un lien de causalité heurtant un autre lien de causalité, par exemple en traçant une ligne de &#039;&#039;rentrée budgétaire&#039;&#039; vers la ligne représentant la solution de contournement qui va vers &#039;&#039;taux de recrutement de développeurs bon marché&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-13.png.pagespeed.ic.LvAE8ewRFJ.webp|frame|none|alt=|caption systems thinking-13.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-13-fr.png|frame|none|alt=|caption systems thinking-13.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extreme effects&#039;&#039;&#039;—We have worked with some very inexpensive developers with excellent skill and some very expensive developers that are terrible, but on average, you get what you pay for—when you hire from a large pool of very cheap labor, the average skill level is lower. In the model we want to show that the impact of hiring very cheap labor on the &#039;&#039;number of low-skilled developers&#039;&#039; is a significantly greater effect than average.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Effets extrêmes&#039;&#039;&#039; - Il nous est arrivé de travailler avec d’excellents développeurs très bon marché et avec d’autres hors de prix très nuls, mais en moyenne, vous obtenez à hauteur de ce que vous payez - lorsque vous recrutez au moins disant, le niveau moyen en terme de compétences sera plus faible. Dans le diagramme ci-dessous, nous avons voulu montrer que l’impact du recrutement de personnes bon marché en rapport avec le &#039;&#039;nombre de développeurs peu qualifiés&#039;&#039; à un impact sensiblement plus grand que la moyenne.&lt;br /&gt;
&lt;br /&gt;
To show an &#039;&#039;extreme effect&#039;&#039; in the model, use a thick line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer un &#039;&#039;effet extrême&#039;&#039; sur un modèle, faites un trait épais comme vous pouvez voir ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-14.png.pagespeed.ic.JYkqz8Qe24.webp|frame|none|alt=|caption systems thinking-14.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-14-fr.png|frame|none|alt=|caption systems thinking-14.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delays&#039;&#039;&#039;—One problem in hiring in software development is the &#039;&#039;fallacy of mild programmer variance&#039;&#039; —the mistaken belief that programmer variance (in terms of productivity, code quality, etc.) is relatively small. However, programmer variance studies suggest an average of four times faster in the top versus bottom quartile [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. Rather significant. Also, the COCOMO model—based on large and longitudinal studies—shows that the capability of the development personnel is by far the most important factor for productivity [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. And, on average, very weak programmers create poor-quality code (poor design) and more defects, creating another drag on the system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retards&#039;&#039;&#039; Un problème courant au niveau du recrutement dans un projet de développement logiciel concerne &#039;&#039;l’erreur au niveau de la variance d’un développeur moyen&#039;&#039; - autrement dit la croyance fausse que la variance d’un développeur à un autre (en terme de productivité, de qualité de code, etc.) est relativement faible. Toutefois, les études de la variance au sujet des développeurs montrent un rapport de un à 4 entre le 1er quartile et le dernier [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.4788 [Prechelt00]]. C’est plutôt quelque chose de significatif. De même des études - en long et en large - du modèle COCOMO montrent que la capacité du développement personnel est le facteur de loin le plus important quant à la productivité [http://www.amazon.com/Software-Cost-Estimation-Cocomo-II/dp/0130266922/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597244&amp;amp;sr=8-1&amp;amp;keywords=Software+Cost+Estimation+with+Cocomo+II [Boehm00]]. Et, en moyenne, il s’avère que les développeurs peu qualifiés font du code de mauvaise qualité (mauvaise conception) et de plus d’anomalies, ceci rajoute un autre frein au système.&lt;br /&gt;
&lt;br /&gt;
But the impacts of these effects are not immediately obvious. For example, it takes a relatively long time after hiring a large pool of weak programmers before the impacts of more and more bad code/design start to be felt. Similarly, the average &#039;&#039;decrease&#039;&#039; in feature velocity (because of the powerful impact of programmer variance) will not show up immediately.&lt;br /&gt;
&lt;br /&gt;
Mais l’impact de ces effets ne sont pas visibles immédiatement. Par exemple, cela peut prendre un certain temps après un recrutement massif de développeurs peu qualifiés avant que les impacts négatifs ne se fassent sentir au niveau de la qualité du code ou de la conception. De manière similaire, la &#039;&#039;baisse&#039;&#039; moyenne de la vélocité des features (en raison de l’impact important de la variance des développeurs évoqué plus haut) ne se verra pas immédiatement.&lt;br /&gt;
&lt;br /&gt;
To show these &#039;&#039;delayed effects&#039;&#039; in the model, use a double-line through the effect line:&lt;br /&gt;
&lt;br /&gt;
Pour montrer ces &#039;&#039;effets à retardement&#039;&#039; dans le modèle, faites une double-ligne en travers de la ligne d’effet.&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-15.png.pagespeed.ic.0fwliLJm6G.webp|frame|none|alt=|caption systems thinking-15.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-15-fr.png|frame|none|alt=|caption systems thinking-15.png]]&lt;br /&gt;
&lt;br /&gt;
Delay has an intriguing influence on the &#039;&#039;educational&#039;&#039; or corrective power in a system. If an impact or unintended consequence is long delayed, one does not feel the effect (pain or gain) and so does not clearly see how A influenced B, or more subtly how &#039;&#039;A influenced B influenced A&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Le retard a une influence intéressante sur le pouvoir &#039;&#039;pédagogique&#039;&#039; ou correctif sur un système. Si un impact ou une conséquence inattendue est retardé suffisamment longtemps, personne n’en voit ni l’effet (qu’il soit bénéfique ou néfaste) ni sur la façon dont A influence B ou plus subtilement comment &#039;&#039;A a influencé B qui a influencé A&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Therefore, one does not learn from or correct mistakes—in policy, management actions, tools, and so forth. Likewise, gradual improvement through the lean thinking practice of &#039;&#039;kaizen&#039;&#039; can take a long time; patience and insight are needed to see if and how things improve.&lt;br /&gt;
&lt;br /&gt;
Par conséquent, personne n’apprend de ses erreurs ni n’est en capacité de les corriger - que ce soit en terme de stratégie, d’actions d’encadrement, d’outils ou de quoi que ce soit. De la même manière, l’amélioration graduelle à travers l’application d’une démarche lean &#039;&#039;kaizen&#039;&#039;, peut prendre un certain temps ; de la patience et de la perspicacité sont nécessaires pour voir si et comment les choses s’améliorent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Positive feedback loops&#039;&#039;&#039;—Negative or positive feedback loops&amp;lt;sup&amp;gt;[https://less.works/less/principles/systems-thinking.html#footnote-5 5]&amp;lt;/sup&amp;gt; and delays are where things start to get more subtle in a system—and in understanding a system. For example, how does one become a better programmer? In part, by mentoring from great programmers and seeing lots of examples of great code. But an office with a lot of low-skill developers does not generate a lot of great code examples, nor does it attract or retain the small pool of great programmers who could act as mentors. They would rather work somewhere else.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Boucles de feedback positives&#039;&#039;&#039; - Les boucles de feedback négatives ou positives [^5] et les retards sont le point de départ pour une approche plus subtile d’un système - et de sa compréhension. Par exemple, de quelle manière une personne peut-elle devenir un meilleur développeur ? En partie, en bénéficiant du mentorat de très bons développeurs et en jetant un œil sur du très bon code. Mais il est impossible de trouver du bon code dans un endroit remplit de développeurs médiocres, il est impossible également d’y attirer ou de retenir le petit groupe de très bon développeurs qui pourraient prendre le rôle de mentors. Ils préfèrent largement aller travailler ailleurs.&lt;br /&gt;
&lt;br /&gt;
Now the development group starts to enter a self-reinforcing downward spiral—a set of &#039;&#039;positive feedback loops&#039;&#039; . Fortunately, the downward trend is constrained by the supply of cash.&lt;br /&gt;
&lt;br /&gt;
Ce groupe de développeurs médiocres rentrent dans un cercle vicieux en raison d’un ensemble de &#039;&#039;boucles de feedback positives&#039;&#039;. Fort heureusement, ce cercle vicieux est assujeti aux contraintes du budget.&lt;br /&gt;
&lt;br /&gt;
More great programmers—who could craft great code and mentor others—leave. So there is less and less quality code to look at and to learn from. The percentage of weak programmers grows even larger and feature velocity drops further. Code becomes more messy, awkward, and duplication-riddled, so the capacity to swiftly implement features declines. Since feature velocity is dropping further, there is more pressure to hire yet more very cheap programmers. All this leads to multiple positive reinforcement loops in the system, for example:&lt;br /&gt;
&lt;br /&gt;
Malheureusement de plus en plus des très bons développeurs - ceux en capacité d’élaborer du très bon code et de faire du mentorat auprès des autres développeurs - partent. Par conséquent, il y a de moins en moins de code de qualité à regarder et à partir duquel il est possible d’en tirer des enseignements. Le pourcentage de développeurs médiocres augmente de plus en plus et la vélocité au niveau des features continue à chuter. Le code devient de plus en plus brouillon, difficile, avec pleins de bouts de code dupliqués à gauche et à droite, le tout de telle manière que la capacité d’implémenter des features décline. Étant donné que la vélocité des features continue de chuter, il y a davantage de pression pour recruter des développeurs très bon marché. Tout cela conduit à de multiples boucles de renforcement positives dans le système comme l’illustre l’exemple ci-dessous :&lt;br /&gt;
&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-16.png.pagespeed.ic.ONFuUmJHSE.webp|frame|none|alt=|caption systems thinking-16.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-16-fr.png|frame|none|alt=|caption systems thinking-16.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip&#039;&#039; : You can find positive feedback loops by finding cycles with an &#039;&#039;even number&#039;&#039; of ‘Opposite’ effect relationships. There are several examples in the model above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Astuce&#039;&#039; : Vous pouvez trouver des boucles de feedback positives en cherchant des cycles ayant un &#039;&#039;nombre pair&#039;&#039; de relations. Vous en trouverez plusieurs exemples ci-dessus.&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
===== Conclusion =====&lt;br /&gt;
&lt;br /&gt;
The example scenario is only that—an example. A causal loop diagram can visualize rich dynamics in a workplace system. These are best created by a group at a whiteboard.&lt;br /&gt;
&lt;br /&gt;
Le scénario donné à titre d’exemple est uniquement cela - un exemple. Une diagramme de boucle causale permet de visualiser la richesse de la dynamique dans le système dans un milieu professionnel. La meilleure manière de modéliser un tel système est de le faire en groupe face à un tableau blanc.&lt;br /&gt;
&lt;br /&gt;
== Seeing Mental Models ==&lt;br /&gt;
&lt;br /&gt;
== Voir les modèles mentaux ==&lt;br /&gt;
&lt;br /&gt;
The previous causal loop diagrams reflect people’s mental models of causation, which may be wrong. It is interesting to note that people’s models of causation are influenced by the timeliness (delay) and quality of feedback in the system.&lt;br /&gt;
&lt;br /&gt;
Les précédents diagrammes de boucles causales reflètent les modèles mentaux de causalité des individus … qui peuvent s’avérer faux. Il est intéressant de remarquer que les modèles de causalité des individus sont influencés par la ponctualité (ou les retards) et la qualité des feedbacks dans le système.&lt;br /&gt;
&lt;br /&gt;
The implication of “mental models” is to improve our meta-cognitive skill to see and question our own assumptions and chains of reasoning. Are we making faulty leaps of logic? It also implies when working with others to discuss (inquiring rather than abusing) the mental models of our colleagues.&lt;br /&gt;
&lt;br /&gt;
Les « modèles mentaux » nous permettent d’améliorer nos compétences de méta-cognition pour voir et questionner nos propres postulats et l’enchaînement de nos raisonnements. Brûlons-nous des étapes de manière erronée ? Cette question implique aussi lorsque nous sommes en train de travailler avec des collègues de discuter avec eux (en s’enquérant plutôt qu’en reprochant) de leurs modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Seeing&#039;&#039; these mental models is step one; &#039;&#039;changing&#039;&#039; them is the even harder part of step two. That art is beyond the scope of this introduction, though a successful LeSS adoption must involve changes in mindset and insight among many groups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Voir&#039;&#039; les modèles mentaux n’est que la première étape ; les &#039;&#039;changer&#039;&#039; constitue une seconde partie bien plus difficile. Cet art est bien au-delà du sujet de cette introduction, même si une adoption réussie de LeSS implique des changements en terme d’état d’esprit et de prise de conscience au sein de très nombreuses équipes.&lt;br /&gt;
&lt;br /&gt;
A tip to better &#039;&#039;see&#039;&#039; the mental models (beliefs, chains of inference, …) playing out in the system dynamics is to ask the following question during a modeling workshop and then sketch the answers. “Let’s talk about the assumptions behind this model. What do we &#039;&#039;believe&#039;&#039; or assume in terms of facts and effects that led us here?”&lt;br /&gt;
&lt;br /&gt;
Une astuce pour mieux &#039;&#039;voir&#039;&#039; les modèles mentaux (croyances, échelle d’inférence, …) en jeu au niveau des dynamiques des systèmes est de poser les questions suivantes lors d’un atelier de modélisation puis de tracer les éléments de réponse au tableau blanc. « Parlons donc des hypothèses derrière ce modèle. Que &#039;&#039;croyons&#039;&#039;-nous ou tenons pour acquis en terme de faits et d’effets qui nous ont conduits ici ? »&lt;br /&gt;
&lt;br /&gt;
Answers are sketched on the whiteboard model, for example:&lt;br /&gt;
&lt;br /&gt;
Les éléments de réponse sont dessinés sur le tableau blanc. En voici un exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-17.png.pagespeed.ic.5UIqBnJfK1.webp|frame|none|alt=|caption systems thinking-17.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-17-fr.png|frame|none|alt=|caption systems thinking-17.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Visualizing the assumptions in our heads… our mental models.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
Visualiser les postulats présents dans nos têtes … nos modèles mentaux.&lt;br /&gt;
&lt;br /&gt;
=== Example: The “Faster is Slower” Dynamic ===&lt;br /&gt;
&lt;br /&gt;
=== Exemple : La dynamique « Aller plus vite c’est aller plus lentement » ===&lt;br /&gt;
&lt;br /&gt;
With the vocabulary of quick fixes, delays, positive feedback loops, and mental models, it is fascinating to see that there can be a short-term apparent improvement in a variable as the result of a quick fix, but a &#039;&#039;delayed degradation&#039;&#039; of the very same variable—the “faster is slower” dynamic. This is a recurrent dynamic in the workplace and a cause of weakness. So it is worth another illustration.&lt;br /&gt;
&lt;br /&gt;
Dorénavant, avec notre vocabulaire enrichi des termes de solutions de contournement, de boucles de feedback positives et de modèles mentaux, il est fascinant de voir qu’il peut y avoir un semblant d’amélioration à court terme sur une variable donnée, mais que cela entraîne en même temps une &#039;&#039;dégradation à retardement&#039;&#039; de cette même variable - d’où la dynamique « Aller plus vite c’est aller plus lentement ». Il s’agit d’une dynamique récurrente et d’une cause de vulnérabilité à terme. Voici un nouvel exemple illustrant cela :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The story of Microsoft Word and the&#039;&#039; &#039;&#039;&#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039;&#039;&#039; : A classic example of the short-term ‘improving’ but long-term degrading dynamic is the story of the first release of Microsoft Word for Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. It was released &#039;&#039;years&#039;&#039; later than desired. Why? &#039;&#039;Because managers tried to follow the original schedule and pushed developers to meet it&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Histoire de Microsoft Word et de&#039;&#039; &#039;&#039;&#039;&#039;&#039;la boîte à outils secrète du développeur&#039;&#039;&#039;&#039;&#039; : Un exemple typique d’une ‘amélioration’ à court terme mais d’une dynamique de dégradation à long terme est le récit de la première livraison de Microsoft Word sur Windows [http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413597951&amp;amp;sr=8-1&amp;amp;keywords=Joel+on+Software [Spolsky04]]. Le logiciel a été livré avec des &#039;&#039;années&#039;&#039; de retard par rapport à la date prévue. Pourquoi ? &#039;&#039;Parce que les managers ont essayé à tout prix de suivre le calendrier de départ et ont fait pression sur les développeurs pour le respecter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The story illustrates why &#039;&#039;wishful thinking&#039;&#039; is identified as one of the wastes in lean thinking. In this case the wishful thinking of insisting on (apparently) following a schedule, which implies the misconception or wishful thinking that development estimates are not estimates but are commitments—a common myth that propels degradation of a system.&lt;br /&gt;
&lt;br /&gt;
Cette histoire illustre pourquoi cet espoir illusoire de respecter une date souhaitée est bien identifié comme une source de gâchis dans l’approche lean. Dans le cas présent l’espoir illusoire consiste à insister (du moins apparemment) à suivre le calendrier, ce qui implique une idée fausse ou illusoire que les estimations ne sont pas de simples estimations mais des promesses - un mythe classique qui pousse à la dégradation d’un système.&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 The next model] illustrates a &#039;&#039;summary&#039;&#039; of the dynamics of what happened when the managers pushed people to evidently keep to the original schedule, and why this quick-fix reaction to slow progress appeared to make things faster in the short term but actually even &#039;&#039;slower&#039;&#039; in the long term. See the dynamic of schedule pressure and the secret toolbox. intentionally omits some deeper dynamics that are expanded and shown in See deeper dynamics of schedule pressure and the secret toolbox..&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/principles/systems-thinking.html#figure-1 Le modèle suivant] illustre un &#039;&#039;résumé&#039;&#039; des dynamiques à l’œuvre lorsque des managers poussent leurs équipes à respecter à tout prix les calendriers prévisionnels, et pourquoi cette solution de contournement qui freine pourtant l’avancement des travaux semblent les faire aller plus vite à court terme mais en réalité &#039;&#039;plus lentement&#039;&#039; à long terme. Par rapport à ce qui est décrit précédemment dans la dynamique de la pression du calendrier et la boîte à outils secrète, certaines dynamiques ont été omises intentionnellement sur ce schéma et sont visibles sur le schéma dynamiques avancées.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-18.png.pagespeed.ic.A7OSuu755I.webp|frame|none|alt=|caption systems thinking-18.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-18-fr.png|frame|none|alt=|caption systems thinking-18.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
The dynamic of schedule pressure and the secret toolbox.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
Dynamique de la pression sur le calendrier et de la boîte à outils secrète.&lt;br /&gt;
&lt;br /&gt;
As a quick fix, the Microsoft managers exhorted, bribed (with potential rewards), and threatened the Word developers to keep to the original schedule. Consequently, the developers predictably pulled out their &#039;&#039;&#039;secret developer toolbox&#039;&#039;&#039; —the many practices related to hacking out dirty code (no tests, no reviews, ignore known defects, copy-paste programming, poor design, …) to apparently deliver a feature faster. You see, developers also have &#039;&#039;quick-fix&#039;&#039; reactions for their problems.&lt;br /&gt;
&lt;br /&gt;
En solution de contournement, les managers de Microsoft ont exhorté, ont corrompu (à l’aide de primes potentielles), et ont menacé les développeurs de Word pour leur faire respecter le calendrier prévisionnel. En conséquence, les développeurs ont, de manière tout à fait prévisible, sorti leur &#039;&#039;&#039;boîte à outils secrète de développeurs&#039;&#039;&#039; - autrement dit tout un arsenal de pratiques pour pisser du code pourri (aucuns tests, aucunes revues, ignorance des anomalies connues, développement par copier-coller, mauvaise conception, …) pour développer visiblement plus vite. Vous voyez bien, les développeurs ont aussi des solutions de contournement pour régler leurs problèmes.&lt;br /&gt;
&lt;br /&gt;
The tactics seemed to have worked like magic. As the managers pressured the developers, ‘features’ were delivered quicker as people used the secret toolbox, which reinforced the belief that pressuring developers helps. But this apparent acceleration actually had a delayed effect to make things slower, which is explored next. Since management did not quickly see the delayed effect of the secret toolbox, and because they believed managers should not be frequently looking in detail at the source code or themselves be master programmers, they did not learn from this dynamic.&lt;br /&gt;
&lt;br /&gt;
Vu de l’extérieur, ces tactiques ont fonctionné à merveille. Au fur et à mesure que les managers mettaient la pression sur les développeurs, les ‘features’ étaient développées de plus en plus vite grâce à l’utilisation de la boîte à outils secrète, ce qui a renforcé la croyance en quoi mettre la pression sur les développeurs était quelque chose d’utile. Mais cette apparente accélération a eu en fait un effet à retardement qui a rendu les choses plus lentes (c’est ce que nous allons voir par la suite). Étant donné que le management n’a pas été assez rapide à voir l’effet à retardement de la boîte à outils, et parce que les managers pensent qu’ils n’ont pas besoin d’aller regarder fréquemment en détails le code source ou qu’ils n’ont pas besoin d’être eux-mêmes des développeurs très expérimentés, ils n’ont rien appris de cette dynamique.&lt;br /&gt;
&lt;br /&gt;
A closer exploration of the system dynamics shows why things went slower in the long term and why the first Word for Windows release was years later than desired, illustrated in this model…&lt;br /&gt;
&lt;br /&gt;
Le schéma ci-dessous illustre l’examen approfondie des dynamiques des systèmes montrant pourquoi les choses sont allées plus lentement à long terme et pourquoi le tout premier Word pour Windows a été livré des années en retard par rapport à la date souhaitée …&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xsystems,P20thinking-19.png.pagespeed.ic.D24dvGHzfu.webp|systems thinking-19.png]]&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-19-fr.png|frame|none|alt=|caption systems thinking-19.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Some deeper dynamics of schedule pressure and the secret toolbox.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
Dynamiques avancées de la pression sur le calendrier et de la boîte à outils secrètes.&lt;br /&gt;
&lt;br /&gt;
Naturally, lots of dirty code eventually slowed things down. More subtly, developers would &#039;&#039;ignore&#039;&#039; the bug list of ever-increasing open defects to—instead—generate new features. This led to a long delay between the creation of a defect and its correction. It turns out that this significantly increases variability and time to fix a defect because of the compounding negative effect of a long-lived bug (for example, due to workarounds and coupling) and because developers have long forgotten the detailed context of code related to the defect and therefore need to slowly rediscover that context—with more and more dirty confusing code surrounding them.&lt;br /&gt;
&lt;br /&gt;
Naturellement, avoir une grande quantité de code de mauvaise qualité ralentie les choses. De manière beaucoup plus subtile, les développeurs ont &#039;&#039;ignoré&#039;&#039; la liste croissante d’anomalies pour privilégier la production de nouvelles features. Cela a eu pour conséquence d’avoir un délai important entre la déclaration d’une anomalie et sa correction. Il s’avère que cela a fait augmenter de manière significative la variabilité et le temps nécessaire pour corriger une anomalie en raison des effets cumulatifs négatifs liée à la nature même d’une vieille anomalie (par exemple avec la mise en place des solutions de contournement et des couplages existants entre les fonctionnalités), de l’oubli du contexte détaillé par les développeurs en relation avec l’anomalie, ces derniers mettant par conséquent plus de temps à le redécouvrir, de l’accumulation continue de code de mauvaise qualité dans le même temps.&lt;br /&gt;
&lt;br /&gt;
The astute reader may also notice the several positive feedback loops that reinforce the degradation cycle; this is one reason the product was years later than intended.&lt;br /&gt;
&lt;br /&gt;
Le lecteur avisé remarquera également plusieurs boucles causales positives renforçant le cycle de dégradation ; il s’agit de l’une des raisons expliquant le retard pris sur plusieurs années pour livrer le produit.&lt;br /&gt;
&lt;br /&gt;
Solution? The lean thinking &#039;&#039;Stop and Fix&#039;&#039; and &#039;&#039;Go See&#039;&#039; principles. &#039;&#039;First&#039;&#039; , rather than trying to go faster when there are problems, manager-teachers encourage people to go &#039;&#039;slower&#039;&#039; and help them learn to see system dynamics and root causes, and to fix these—to improve the &#039;&#039;system&#039;&#039; of development. By going slower, Toyota—the masters of lean thinking—has become one of the fastest companies around. &#039;&#039;Second&#039;&#039; , for managers to &#039;&#039;go see at the real place of work&#039;&#039; to learn what is going on. The “real place” in software development is the code, which suggests that first-level managers are master programmers who are frequently evaluating the code.&lt;br /&gt;
&lt;br /&gt;
Une solution ? L’approche lean avec les principes &#039;&#039;Arrêter et corriger&#039;&#039; et &#039;&#039;Aller voir&#039;&#039;. &#039;&#039;Premièrement&#039;&#039;, plutôt que d’essayer d’aller plus vite lorsqu’il y a des problèmes, des managers-formateurs encouragent les gens à aller plus &#039;&#039;lentement&#039;&#039; et à les inciter à apprendre les dynamiques des systèmes, les causes racines et à les corriger pour améliorer le &#039;&#039;système&#039;&#039; du développement. En allant plus lentement, Toyota - les maîtres de l’approche lean - est devenue l’une des entreprises les rapides du monde. _Deuxièmement, les managers doivent &#039;&#039;aller voir ce qui se passe sur le vrai lieu de travail&#039;&#039; pour apprendre ce qu’il se passe. Le « vrai lieu » dans le développement logiciel c’est le code, ce qui implique que les managers de proximité sont des développeurs expérimentés qui évalueront le code fréquemment.&lt;br /&gt;
&lt;br /&gt;
Microsoft people did not reflect on the situation until after release. When they did finally hold a retrospective, it led to a &#039;&#039;zero-defects&#039;&#039; policy, meaning that the first priority was to fix known bugs in the code under development—to drive down to zero the open-defects list before writing more new-feature code.&lt;br /&gt;
&lt;br /&gt;
Les personnes de chez Microsoft n’ont pas réfléchi sur la situation que bien après la livraison. Lorsqu’ils ont fini par faire une rétrospective, cela a amené à une politique du &#039;&#039;zéro défaut&#039;&#039;, cela signifie que la première priorité était de corriger les anomalies connues dans le code en cours de développement afin d’aller vers du zéro anomalie ouverte dans la liste des anomalies avant d’écrire du code pour une nouvelle feature.&lt;br /&gt;
&lt;br /&gt;
== Seeing (and Hearing) Local Optimization ==&lt;br /&gt;
&lt;br /&gt;
== Voir (et entendre) l’optimisation locale ==&lt;br /&gt;
&lt;br /&gt;
“Everyone is doing their best yet overall systems throughput is degrading. How can that be?” This is the paradox of &#039;&#039;&#039;local optimization&#039;&#039;&#039; —when a person or departmental decision maker optimizes for the local view or self-interest. The party making the decision frequently &#039;&#039;believes they are making the best decision&#039;&#039; , but because ‘best’ is a local optimization, in fact it sub-optimizes overall system throughput. This is a result of “silo mentality,” misunderstanding, fear, limited information, delayed feedback, ignorance, careerism, avarice, and other common &#039;&#039;organizational learning disorders&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
« Chacun fait de son mieux, mais malgré tout le flux de production du système se dégrade. Comment cela est-il possible ? ». Il s’agit du paradoxe de &#039;&#039;&#039;l’optimisation locale&#039;&#039;&#039; - autrement dit c’est lorsqu’une personne à titre individuel ou un responsable de département prend une décision d’un point de vue local ou dans son propre intérêt. Les personnes prenant ce type de décision &#039;&#039;croient fréquemment qu’ils prennent la meilleure décision&#039;&#039;, mais parce que ‘meilleure’ est ici synonyme d’optimisation locale, cela a pour résultat une sous-optimisation globale du flux du système. Ceci est le résultat d’une « mentalité de silo », d’incompréhension, de peur, de restrictions d’informations, de feedbacks à retardement, d’ignorance, de carriérisme, d’avarice et de bien d’autres &#039;&#039;dysfonctionnements d’apprentissages organisationnels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A small product group of 30 people does not have the time or money to engage in much nonsense or waste. But large companies, with large product groups, centralized process and tool groups, a centralized “project management office,” and so forth, seem to have raised local optimization and waste to an art form. Government bureaucracies are the quintessential example, of course. As such, when you serve as a guide in large-scale agile adoption, &#039;&#039;seeing&#039;&#039; (or &#039;&#039;hearing&#039;&#039; ) and dealing with local optimization is singularly vital.&lt;br /&gt;
&lt;br /&gt;
Une petite équipe produit de 30 personnes n’a ni temps ni l’argent pour s’engager dans ce genre de non-sens ou de gâchis. Mais les grandes entreprises avec de grands groupes produit, des processus centralisés et des groupes outils, un « bureau de gestion de projet » centralisé, et ainsi de suite, semblent avoir élevé l’optimisation locale et le gâchis à une forme d’art. Les bureaucraties gouvernementales en sont bien sûr la quintessence. En conséquence, lorsque vous servez de guide dans une adoption agile à grande échelle, &#039;&#039;voir&#039;&#039; (ou &#039;&#039;entendre&#039;&#039;) et s’occuper de l’optimisation locale est tout simplement quelque chose de vital.&lt;br /&gt;
&lt;br /&gt;
For example, the legal and corporate security departments put in place a policy that seems terribly important from their perspective. In the aim of preventing loss of intellectual property (IP), the legal department decrees “no one shall put any information on the walls.” Or, in response to cost-cutting pressure, the facilities management says, “It is important to ensure our walls are not dirty or damaged.” And thus they shut down a practice in lean thinking, visual management (which is usually done on walls), and they inhibit a well-known innovation practice, group whiteboard work. The lawyers may succeed in reducing loss of IP (actually, that is questionable), and the facilities people will succeed in keeping the walls clean—at the cost of inhibiting the product development group from innovating and collaborating. Finally, the company falls behind with less and less IP even worth protecting because tools for innovation and delivering fast have been disallowed, but the lawyers have successfully fulfilled their mandate from the executive team to “ensure our IP is protected.” And the &#039;&#039;furniture police&#039;&#039; have clear walls. &#039;&#039;They have done their best&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
Par exemple, les départements juridiques et sécurité mettent en place des politiques qui leurs semblent très importantes de leurs points de vue. Dans l’objectif de prévenir la perte de propriété intellectuelle, le département juridique peut décréter « il est interdit d’afficher tout type d’information sur les murs. ». Or, le département des immeubles soumis de son côté, à une pression de politique de réductions de coûts peut surenchérir en disant : « Il est important de s’assurer que nos murs ne soient ni sales ni abîmés ». Et ainsi s’arrête le management visuel qui est l’une des pratiques de l’approche lean (le management visuel se faisant habituellement sur les murs), et ils inhibent également une pratique d’innovation bien connue à savoir le travail de groupe devant un tableau blanc. Les juristes réussiront peut être à réduire la perte de propriété intellectuelle (ce qui en réalité devrait poser question), et les gens des immeubles réussiront à garder leurs murs propres - mais au prix d’inhiber le groupe de développement produit dans sa capacité d’innover et de collaborer. Finalement, l’entreprise se laissera distancer par la concurrence avec de moins en moins de propriété intellectuelle valant la peine d’être défendue parce que les outils permettant l’innovation et de livrer rapidement ont été bannis, mais les juristes auront rempli leur mandat vis-à-vis de la direction de « s’assurer que la propriété intellectuelle est protégée ». Et la police de la logistique aura nettoyé les murs. &#039;&#039;Ils ont fait de leur mieux&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The following is a real e-mail quote from the &#039;&#039;FURNITURE POLICE&#039;&#039; in one organization that dissallowed visual management on the walls. Can you identify the local optimizations and mental models driving this?&lt;br /&gt;
&lt;br /&gt;
Ce qui suit est extrait d’un vrai message électronique de la &#039;&#039;POLICE DE LA LOGISTIQUE&#039;&#039; dans une organisation qui a banni le management visuel sur les murs. Pouvez-vous identifier les optimisations locales et les modèles mentaux qui sont derrière tout ça ?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;Individual work cubic partition can be personalized. But things obvious higher than the partition or harming the office environment’s harmony are restricted.&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;_Les [https://fr.wikipedia.org/wiki/Bureau_%C3%A0_cloisons bureaux à cloisons] peuvent être personnalisés. Mais tout ce qui visible au-dessus de la cloison ou qui perturbe l’harmonie de l’environnement de bureau est interdite.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
We also see local optimization in centralized groups that make software tool choices for others. The common mindset is to choose a tool that is best at reducing some supposed cost (curiously, these groups seldom recommend free open source tools) or best at doing something complicated or best for the work of one specialized worker role (even though &#039;&#039;everybody&#039;&#039; has to use the tool), rather than maximizing the global goal of faster system throughput of value to customers.&lt;br /&gt;
&lt;br /&gt;
Nous constatons aussi des optimisations locales dans les groupes centralisés dont le rôle est de choisir les logiciels pour les autres personnes de l’entreprise. La croyance la plus répandue que cette démarche est qu’il s’agit de ce qu’il y a de mieux pour réduire les coûts d’achats (curieusement ces mêmes groupes recommandent rarement les logiciels libres gratuits) ou ce qu’il y a de mieux pour accomplir une tâche compliquée ou ce qu’il y a de mieux pour l’accomplissement du travail d’un seul type de travailleur (même si &#039;&#039;tout le monde&#039;&#039; est censé devoir utiliser l’outil), plutôt que de maximiser l’objectif de l’entreprise qui est d’avoir un système de flux de production de la valeur plus rapide pour les clients.&lt;br /&gt;
&lt;br /&gt;
In large-scale adoption of Scrum or agile principles, most of the “Yes, but …” issues that are raised are examples of local optimization, such as, “&#039;&#039;Yes, but…what about management reporting&#039;&#039;?” or more generally, “&#039;&#039;Yes, but…what about &amp;lt;special case=&amp;quot;&amp;quot;&amp;gt;&#039;&#039;?” Then, policies and practices are twisted around, serving the goal of reporting or some other secondary aim rather than the primary goal of optimizing for fast value throughput. Sometimes we see &#039;&#039;local optimization for the extreme or rare case&#039;&#039; . For example, a person responsible for making a centralized tool choice for the enterprise presents a scenario for a complex or rare case of use, and then chooses the tool that fits that, sub-optimizing for a 5 percent case instead of optimizing for ease and speed for the 95 percent case.&amp;lt;/special&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans les adoptions de Scrum ou des principes agiles à grande échelle, la plupart des problématiques de type « Oui, mais … » qui sont soulevées sont des exemples de sous-optimisations, comme par exemple « &#039;&#039;Oui, mais … qu’en est-il des comptes-rendus auprès du management&#039;&#039; ? » ou encore de manière plus générale « * Oui, mais … qu’en est-il de … * ? ». Alors, les principes et les pratiques sont dévoyés, pour servir soit l’objectif de rendre compte soit n’importe quel autre objectif secondaire plutôt que suivre l’objectif d’optimiser le flux de valeur produite. De temps en temps, nous voyons des &#039;&#039;&#039;optimisations locales dans certains cas rares ou extrêmes&#039;&#039;&#039;. Par exemple, une entreprise doit choisir un outil centralisé répondant à un certain nombre de cas d’utilisations possibles dont un cas extrêmement rare ou complexe, la personne, en charge de faire ce choix, choisit un outil correspondant à un cas unique d’utilisation, sous-optimisant ainsi l’ensemble du système pour un cas représentant uniquement 5% des cas d’utilisation au lieu de l’optimiser pour la majorité des 95% des autres cas d’utilisations.&lt;br /&gt;
&lt;br /&gt;
Other local optimizations are due to ignorance of new ways of working. This is especially common in large-scale product groups. For example, we once helped a large networking product group in Europe adopt Scrum and the practice of &#039;&#039;continuous integration&#039;&#039; (CI) combined with a CI system that continually integrated, built, and automatically tested the product. After some time, an outside traditional manager inspected what was going on, and recommended the integration practices should be changed—because there was no written integration plan for how a human integration manager should manually integrate all the software, and of course, there was no integration manager. They wanted to ‘optimize’ around the work of an integration manager that was no longer needed. They could not see that their entire old-fashioned model of work had been eliminated with CI. This story repeats in all the departments of a large established product: local optimization around the &#039;&#039;existing&#039;&#039; ways of work, such as manual test, a separate architecture department, component teams, and so on. A coach working to introduce large-scale Scrum at the enterprise level has a &#039;&#039;mountain&#039;&#039; of similar local optimization thinking to deal with.&lt;br /&gt;
&lt;br /&gt;
D’autres optimisations locales sont dues, quant à elles, à l’ignorance des nouvelles manières de travailler. C’est quelque chose de très répandue et tout spécialement dans les groupes produit à grande échelle. Par exemple, un jour nous avons aidé un groupe produit distribué à travers l’Europe à adopter d’une part Scrum et d’autre part la pratique de &#039;&#039;l’intégration continue&#039;&#039; (CI) le tout sous la forme d’un système d’intégration continue dédié intégrant, compilant, testant automatiquement de manière continue le produit. Après quelques temps, un manager, que l’on pourrait qualifier de traditionnel, extérieur au groupe est venu inspecter ce qu’il se passait. Celui-ci a recommandé que les pratiques d’intégration devraient être changées en raison de l’absence de schéma d’intégration global permettant à un responsable d’intégration de faire manuellement l’intégration de l’ensemble du logiciel ; une absence de schéma pour la bonne raison qu’il n’y avait plus besoin de responsable d’intégration au sein de l’organisation. Il voulait ‘optimiser’ le travail d’un responsable d’intégration qui n’existait plus. Il était dans l’impossibilité de voir que la totalité de l’ancienne manière de faire les choses avait disparu avec l’intégration continue. Cette histoire se répéta dans l’ensemble des départements du groupe produit : il y a avait des optimisations locales partout autour des façons de faire existantes, tels que les tests manuels, le département d’architecture séparé des équipes, les équipes composants, etc. N’importe quel coach dont la tâche consistait à introduire Scrum à grande échelle au niveau de l’organisation avait une &#039;&#039;montagne&#039;&#039; d’optimisations locales à penser à gérer.&lt;br /&gt;
&lt;br /&gt;
In lean thinking and agile methods, the focus is on global systems goals: Deliver value fast with high quality and morale—&#039;&#039;&#039;global optimization&#039;&#039;&#039; . Try to consider decisions in light of this goal. To develop an “optimize the whole” culture, challenge all decisions and policies with the question:&lt;br /&gt;
&lt;br /&gt;
Dans l’approche lean et dans les méthodes agiles, l’accent est mis sur les objectifs du système dans sa globalité : livrer de la valeur de grande qualité au plus vite tout en gardant le moral des équipes au plus haut - autrement dit une &#039;&#039;&#039;optimisation globale&#039;&#039;&#039;. Essayer de reconsidérer vos décisions à la lumière de cet objectif. Pour développer une culture de « l’optimisation du tout », remettez donc en cause toutes les décisions et les règles avec la question suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Does this decision or policy focus on delivering value to the external customer fast, or does it focus on the interests of a department, person, internal policy/practice, or rare case?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;** Est-ce que cette décision ou cette règle se focalise-t-elle sur livrer de la valeur au client externe au plus vite, ou se focalise-t-elle sur les intérêts d’un département, d’une personne, d’une pratique/règle interne, ou d’un cas rarissime ?**&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
In LeSS, the Product Owner is responsible for choosing high-value goals that &#039;&#039;&#039;could lead to potentially shippable product (at the end of the Sprint) and that maximize the desired impacts and that delight the customer, while maintaining a sustainable pace and high engineering quality&#039;&#039;&#039;. That explicit goal is meant to orient the system toward global rather than local optimization.&lt;br /&gt;
&lt;br /&gt;
Dans LeSS, le Product Owner est responsable pour choisir ces objectifs à haute valeur qui &#039;&#039;&#039;pourrait mener à un produit potentiellement livrable (à la fin du Sprint) maximisant les impacts souhaités et réjouissant le client tout en maintenant un rythme soutenable et une haute qualité d’ingénierie&#039;&#039;&#039;. Cet objectif explicite est destiné à orienter le système vers son optimisation globale plutôt que vers une optimisation qui ne serait que locale.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In addition to becoming a systems thinker yourself, encourage others to learn more about this topic. We suggest you to try getting together at a whiteboard with colleagues to sketch a causal loop diagram, so that &#039;&#039;being&#039;&#039; systems thinkers and &#039;&#039;doing&#039;&#039; systems thinking are connected at the workplace.&lt;br /&gt;
&lt;br /&gt;
En plus de devenir un pratiquant de l’approche systémique vous-même, encouragez donc les autres à en apprendre plus sur ce sujet. Nous vous suggérons d’essayer de rassembler quelques-uns de vos collègues autour d’un tableau blanc et d’y dessiner des diagrammes de boucles causales, afin que les architectes des systèmes et les pratiquants de l’approche systémique soient réunis en un seul endroit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/systems-thinking/xgroup,P20cld,P20modeling.jpg.pagespeed.ic.lirKMzwWbD.webp|group%20cld%20modeling.jpg]]&lt;br /&gt;
&amp;lt;/figure&amp;gt;&lt;br /&gt;
[[File:%7B%7B%20site.url%20%7D%7Dassets/less/xsystems-thinking-20-fr.png|frame|none|alt=|caption systems thinking-20.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
Doing system thinking. Sketching a causal loop diagram together—modeling to have a conversation.&lt;br /&gt;
&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
Séance d’approche systémique. Réalisation d’un diagramme de boucle cause à plusieurs mains dans l’objectif d’avoir une conversation.&lt;br /&gt;
&lt;br /&gt;
== Recommended Readings ==&lt;br /&gt;
&lt;br /&gt;
== Lectures recommandées ==&lt;br /&gt;
&lt;br /&gt;
* W. Edwards Deming’s [http://www.amazon.com/Out-Crisis-W-Edwards-Deming-ebook/dp/B00653KTES/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601625&amp;amp;sr=8-1&amp;amp;keywords=out+of+the+crisis &#039;&#039;Out of the Crisis&#039;&#039;] is a master work by arguably the most well-known systems thinker and quality expert. It opens with the modest goal, “The aim of this book is transformation of the style of American management… It requires a whole new structure, from foundation upward.” Deming also advocates the &#039;&#039;System of Profound Knowledge&#039;&#039; in which managers (1) appreciate there is a &#039;&#039;system&#039;&#039; , (2) understand common-cause and special-cause variation (queueing theory is related to variation), (3) understand limitations of knowledge and reasoning mistakes, and (4) know credible psychology and social research results so that behavior- or motivation-related policies are &#039;&#039;not&#039;&#039; based on “common sense.” The core of the book centers around his famous &#039;&#039;14 Points for Management&#039;&#039; , including (for example), “&#039;&#039;Eliminate management by objective. Eliminate management by numbers, numerical goals. Substitute leadership&#039;&#039; .”&lt;br /&gt;
* [https://www.amazon.fr/Hors-crise-W-Edwards-Deming/dp/2717843930/ &#039;&#039;Hors de la Crise&#039;&#039;] de W. Edwards Deming est un ouvrage de référence par, sans conteste, le plus connu des penseurs systémiques et des experts sur la qualité. Cet ouvrage commence par un objectif modeste : « l’objectif de ce livre est la transformation du style du management américain … ce qui exige une toute nouvelle structure de fonds en combles. ». Deming prône un &#039;&#039;Système de connaissances approfondies&#039;&#039; dans lequel les managers (1) reconnaissent qu’il y a un &#039;&#039;système&#039;&#039;, (2) qu’ils sont en mesure de comprendre les facteurs les plus répandus et les facteurs spéciaux de variations au sein du système (la théorie des files d’attente est liée à ce phénomène de variation), (3) qu’ils sont en mesure de comprendre que les connaissances sont limitées et qu’il y a des erreurs de raisonnements, et (4) que la psychologie et les recherches en sciences sociales jouent des rôles tout à fait crédibles dans l’objectif de comprendre que les règles régissants les comportements ou en lien avec la motivation des individus ne soient pas basés sur le seul « bon sens ». Le cœur de l’ouvrage tourne autour des célèbres &#039;&#039;14 points pour le management&#039;&#039;, y compris par exemple « &#039;&#039;Éliminer le management par les objectifs. Éliminer le management par les nombres, par les objectifs par les nombres. Y substituer le leadership&#039;&#039;»&lt;br /&gt;
* Jay Forrester’s [http://www.amazon.com/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601681&amp;amp;sr=8-1&amp;amp;keywords=industrial+dynamics &#039;&#039;Industrial Dynamics&#039;&#039;] is the classic text on system dynamics—well written and insightful. Although written in the early 1960s, it is as relevant today as when published. It goes beyond cause-effect modeling to also model the flow and inventories of information, money, and material in systems. The book includes formal mathematical modeling but this is not obligatory to appreciate system dynamics.&lt;br /&gt;
* [https://www.amazon.fr/Industrial-Dynamics-Jay-Wright-Forrester/dp/1614275335/ &#039;&#039;Industrial Dynamics&#039;&#039;] de Jay Forrester est un classique du genre sur les dynamiques des systèmes - très bien écrit et très instructif. Même si cet ouvrage a été écrit au début des années 1960, il est toujours aussi pertinent aujourd’hui. Il va au-delà de la modélisation des causes à effets pour modéliser également le flux et les stocks d’informations, d’argent et de matériaux au sein d’un système. Le livre contient également une modélisation mathématique formelle de ces dynamiques, toutefois la lecture de cette dernière reste facultative quant à apprécier la qualité de l’ouvrage.&lt;br /&gt;
* Weinberg’s &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039; and &#039;&#039;An Introduction to General Systems Thinking&#039;&#039; are worthwhile. Written from the perspective of an experienced consultant in systems development.&lt;br /&gt;
* Les ouvrages [https://www.amazon.fr/Quality-Software-Management-Systems-Thinking/dp/0932633226/ &#039;&#039;Quality Software Management: Systems Thinking&#039;&#039;] et [https://www.amazon.fr/Introduction-General-Systems-Thinking-Weinberg/dp/0932633498/ &#039;&#039;An Introduction to General Systems Thinking&#039;&#039;] de Gerald Weinberg sont intéressants. Il sont écrits du point de vue d’un consultant expérimenté en développement de systèmes.&lt;br /&gt;
* Senge’s [http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization-ebook/dp/B000SEIFKK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601715&amp;amp;sr=8-1&amp;amp;keywords=the+fifth+discipline &#039;&#039;The Fifth Discipline&#039;&#039;] is a classic that advocates the need for leadership to apply systems thinking (it is the &#039;&#039;fifth&#039;&#039; discipline) and other key disciplines for a great, sustainable enterpise. The others include leaders with (1) personal mastery and (2) reflection on their beliefs and faulty reasoning, the (3) definition and communication of a meaningful shared vision, and (4) the ability of teams to learn. We recommend ignoring—at least during the first few years of practice—the ‘archetypes’ notion presented in the book. It was well meant as a learning aid but has been observed to distract and intimidate people from learning and applying basic system dynamics modeling. The ‘archetypes’ are not part of original system dynamics.&lt;br /&gt;
&lt;br /&gt;
[https://www.amazon.fr/cinqui%C3%A8me-discipline-Levier-organisations-apprenantes/dp/2212559372/ &#039;&#039;La cinquième discipline&#039;&#039;] est un autre classique du genre qui prône que l’encadrement d’une entreprise devrait appliquer l’approche systémique (autrement dit la &#039;&#039;cinquième&#039;&#039; discipline) ainsi que d’autres disciplines-clés toutes aussi importantes en vue d’obtenir une entreprise durable. Ces autres disciplines que les dirigeants devraient appliquer sont (1) une maîtrise personnelle des aspirations, (2) une réflexion sur leurs propres croyances et raisonnements erronés, (3) la définition et la communication d’une vision partagée ayant du sens, et (4) la capacité des équipes à apprendre. Nous vous recommandons d’ignorer - du moins dans un premier temps pendant vos premières années de pratiques - le concept d’archétypes présenté dans le livre. Ce concept avait pour but d’être une aide à l’apprentissage de la cinquième discipline mais nous avons observé qu’il était soit une source de distraction soit qu’il intimidait les lecteurs quant à leur apprentissage et à l’application de la modélisation des dynamiques des systèmes. Les ‘archetypes’ ne font pas partie à l’origine des dynamiques des systèmes.&lt;br /&gt;
&lt;br /&gt;
* [http://www.amazon.com/Fifth-Discipline-Fieldbook-Strategies-Organization-ebook/dp/B00JTCJEO8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413601809&amp;amp;sr=8-1&amp;amp;keywords=The+Fifth+Discipline+Fieldbook &#039;&#039;The Fifth Discipline Fieldbook&#039;&#039;] is an in-depth resource, written from the viewpoint of many practitioners and consultants.&lt;br /&gt;
&lt;br /&gt;
*[https://www.amazon.fr/guide-lorganisation-apprenante-d%C3%A9velopper-lintelligence/dp/2212568711/ &#039;&#039;La 5ème discipline - le guide de l’organisation apprenante&#039;&#039;] est une source extrêmement riche sur l’approche systèmique écrite du point de vue des pratiquants de cette approche et de consultants.&lt;br /&gt;
&lt;br /&gt;
* The organizational-learning writings from Argyris, Putnam, McLain, and Schön. Important concepts include &#039;&#039;double-loop learning&#039;&#039; and &#039;&#039;high-advocacy/high-inquiry dialogue&#039;&#039;. Classic works include [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] and [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les écrits d’Argyris, Outnam, McLain et Schön sur les apprentissages organisationnels comme [https://actiondesign.com/resources/readings/action-science &#039;&#039;Action Science&#039;&#039;] et [http://www.amazon.com/Organizational-Learning-Addison-Wesley-Organization-Development/dp/0201001748/ref=sr_1_11?ie=UTF8&amp;amp;qid=1413601940&amp;amp;sr=8-11&amp;amp;keywords=organizational+learning &#039;&#039;Organizational Learning&#039;&#039;] abordent des concepts importants tels que la &#039;&#039;double-boucle apprenante&#039;&#039; et le &#039;&#039;dialogue grand-plaidoyer/grand-réquisitoire&#039;&#039;.&lt;br /&gt;
* The publications and resources available through the [https://www.solonline.org/ &#039;&#039;Society for Organizational Learning&#039;&#039;].&lt;br /&gt;
* Les publications et les ressources de la &#039;&#039;Society for Organizational Learning&#039;&#039;](https://www.solonline.org/).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===== Notes: =====&lt;br /&gt;
&lt;br /&gt;
# Senge wrote &#039;&#039;The Fifth Discipline&#039;&#039; , on systems thinking and learning organizations, named “one of the seminal management books of the last 75 years” by the &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94].&lt;br /&gt;
# Another reason: Believing more control is possible than actually is. Complexity science suggests fundamental limits on predicting and controlling semi-chaotic social systems [Stacey07]. This is a rather large can of worms that will remain unopened in this book.&lt;br /&gt;
# Macroeconomics, psychology, sociology, and biology are exceptions, among many others.&lt;br /&gt;
# ‘Basic’ does not mean trivial or easy to solve. For example, ‘motivation’ and ‘quality’ are basic but not easy issues.&lt;br /&gt;
# &#039;&#039;Feedback loops&#039;&#039; is occasionally used in this book in the colloquial sense of feedback, rather than this system dynamics sense.&lt;br /&gt;
&lt;br /&gt;
[^1] &#039;&#039;La cinquième discipline&#039;&#039; écrit par Senge sur l’approche systèmique et les organisations apprenantes a été nommé « l’un des livres les plus novateurs sur le management de ces 75 dernières années » par la &#039;&#039;Harvard Business Review.&#039;&#039; See** [Senge94]. [^2]: Une autre raison : Croire que plus de contrôle est possible qu’il ne l’est actuellement. La science de la complexité montre qu’il existe des limites en terme de prédiction et de contrôle des systèmes sociaux semi-chaotiques [Stacey07]. C’est une énorme boîte de Pandore qui restera enfermée dans ce livre. [^3]: Macro économie, psychologie, sociologie et biologie sont des exemples d’exceptions parmi d’autres [^4]: ‘Basique’ ne signifie pas trivial ou facile à résoudre. Par exemple, les problématiques de ‘motivation’ et de ‘qualité’ sont des problématiques basiques mais elles ne sont pas faciles à résoudre. [^5]: &#039;&#039;Les boucles de feedback&#039;&#039; sont parfois utilisées dans ce livre dans le sens littéral du terme, plutôt dans le sens des dynamiques des systèmes&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=14206</id>
		<title>Catégorie:Portail LeSS</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=14206"/>
		<updated>2020-10-27T20:05:15Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;addthis /&amp;gt;&lt;br /&gt;
[[Catégorie: Portails Thématiques]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
[[Category: Portail Framework]]&lt;br /&gt;
[[Fichier:LeSS-logo 72.png|link=]] À la découverte de LeSS, ce framework de mise à l&#039;échelle de l&#039;élégance de Scrum.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LeSS-overview-diagram_fr.png|LeSS-overview-diagram_fr.png|link=]]&amp;lt;br /&amp;gt; [http://less.works/less/framework/introduction.html introduction]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;Depuis 2005, nous avons travaillé avec des clients pour mettre en oeuvre le framework LeSS (Large-Scale Scrum) de mise à l&#039;échelle du développement Scrum, agile et lean pour les groupes produit de grande taille. Nous partageons cette connaissance à travers LeSS pour que, vous aussi, vous puissiez réussir lorsque vous passez à l&#039;échelle.&amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;lt;br /&amp;gt;  - Craig Larman &amp;amp; Bas Vodde&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff; font-size: 18.2px&amp;quot;&amp;gt;Articles thématiques&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Framework|Portail Framework LeSS (fr)] - 95%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/framework/introduction.html Introduction à LeSS]&lt;br /&gt;
** [[Pourquoi%20LeSS%20%3F|Pourquoi LeSS (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Produit|Le Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Product%20Owner|Le Product Owner (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20backlog%20du%20produit|Le Backlog du Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Les%20%C3%89quipes|Les Équipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Sprint|Le Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%281%C3%A8re%20partie%29|La Planification du Sprint (1ère partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%282%C3%A8me%20partie%29|La Planification du Sprint (2ème partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Backlog%20du%20Sprint|Le Backlog du Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20M%C3%AAl%C3%A9e%20Quotidienne|La Mêlée Quotidienne (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coordination%20%26%20Int%C3%A9gration|Coordination &amp;amp; Intégration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Incr%C3%A9ment%20Produit%20Potentiellement%20D%C3%A9ployable|L&#039;Incrément Produit Potentiellement Déployable (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20D%C3%A9finition%20du%20Fini|La Définition du Fini (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Revue%20de%20Sprint|La Revue de Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective|La Rétrospective (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective%20Globale|La Rétrospective Globale (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20du%20Backlog%20Produit|L&#039;Affinage du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20Initial%20du%20Backlog%20Produit|L&#039;Affinage Initial du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20ScrumMaster|Le ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Principes|Portail Principes (fr)] - 63%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Pr%C3%A9sentation%20des%20principes|Présentation des principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Scrum%20%C3%A0%20grande%20%C3%A9chelle%20reste%20du%20Scrum|Scrum à grande échelle reste du Scrum (fr)]]&lt;br /&gt;
** [[Less_-_Plus_avec_LeSS|Plus avec LeSS (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/lean-thinking.html Pensée Lean]&lt;br /&gt;
** [[LeSS - Approche systémique|Approche systémique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Contr%C3%B4le%20du%20processus%20empirique|Contrôle du processus empirique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Transparence|Transparence (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/continuous-improvement-towards-perfection.html Amélioration continue vers la perfection]&lt;br /&gt;
** [[Less_-_Centré_client|Centré client (fr)]]&lt;br /&gt;
** [[Less_-_Focus_sur_le_produit_global|Focus sur le produit global (fr)]]&lt;br /&gt;
** [https://less.works/less/principles/queueing_theory.html Théorie des files d&#039;attente]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Structure|Portail Structure (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Equipes|Equipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Organisation%20en%20fonction%20de%20la%20valeur%20client|Organisation en fonction de la valeur client (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Equipes%20Feature|Equipes Feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle|Structure organisationnelle (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Communaut%C3%A9s|Communautés (fr)]]&lt;br /&gt;
** [[LeSS%20-%20ScrumMaster|ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Excellence%20technique|Portail Excellence Technique (fr)]] - 40%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Sp%C3%A9cifications%20par%20l%27exemple|Spécifications par l&#039;exemple (fr)]]&lt;br /&gt;
** [[Less - Intégration continue|Intégration Continue (fr)]]&lt;br /&gt;
** [https://less.works/less/technical-excellence/continuous-delivery.html Livraison Continue]&lt;br /&gt;
** [[LeSS - Tests d&#039;Acceptation|Tests d&#039;Acceptation (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/architecture-design.html Architecture &amp;amp; Conception]&lt;br /&gt;
** [http://less.works/less/technical-excellence/clean-code.html Ecrire du Code Propre]&lt;br /&gt;
** [http://less.works/less/technical-excellence/unit-testing.html Tests unitaires]&lt;br /&gt;
** [[Less - Développement piloté par les tests|Développement piloté par les tests (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/thinking-about-testing.html Réflexions à propos des tests]&lt;br /&gt;
** [http://less.works/less/technical-excellence/test-automation.html Automatisation des tests]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Management|Portail Management (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20R%C3%B4le%20du%20Manager|Rôle du Manager (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Enseigner%20la%20r%C3%A9solution%20de%20probl%C3%A8me|Enseigner la résolution de problème (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Aller%20Voir|Aller Voir (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Auto-gestion|Auto-gestion (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Service%20d%27am%C3%A9lioration|Service d&#039;amélioration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Manager%20en%20tant%20que%20ScrumMaster|Le Manager en tant que ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20LeSS%20Huge|Portail Less Huge (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Domaines%20d%27exigences|Domaines d&#039;Exigences (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Backlog%20Produit%20de%20Domaine|Backlog Produit de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Product%20Owner%20de%20Domaine|Product Owner de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle%20pour%20LeSS%20Huge|Structure organisationnelle pour LeSS Huge (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Adoption|Portail Adoption (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Les%20trois%20principes|Trois principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20D%C3%A9marrer|Démarrer (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coaching|Coaching (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Am%C3%A9lioration%20continue|Amélioration Continue (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Sch%C3%A9ma%20d%27adoption%20des%20%C3%A9quipes%20feature|Schéma d&#039;adoption des équipes feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Rester%20sain%20d%27esprit|Rester sain d&#039;esprit (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;LeSS Test&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/test/pre-course.html LeSS Test]&lt;br /&gt;
** [http://less.works/less/test/scrum.html Scrum Test]&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=14205</id>
		<title>Catégorie:Portail LeSS</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=14205"/>
		<updated>2020-10-27T20:04:20Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;addthis /&amp;gt;&lt;br /&gt;
[[Catégorie: Portails Thématiques]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
[[Category: Portail Framework]]&lt;br /&gt;
[[Fichier:LeSS-logo 72.png|link=]] À la découverte de LeSS, ce framework de mise à l&#039;échelle de l&#039;élégance de Scrum.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LeSS-overview-diagram_fr.png|LeSS-overview-diagram_fr.png|link=]]&amp;lt;br /&amp;gt; [http://less.works/less/framework/introduction.html introduction]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;Depuis 2005, nous avons travaillé avec des clients pour mettre en oeuvre le framework LeSS (Large-Scale Scrum) de mise à l&#039;échelle du développement Scrum, agile et lean pour les groupes produit de grande taille. Nous partageons cette connaissance à travers LeSS pour que, vous aussi, vous puissiez réussir lorsque vous passez à l&#039;échelle.&amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;lt;br /&amp;gt;  - Craig Larman &amp;amp; Bas Vodde&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff; font-size: 18.2px&amp;quot;&amp;gt;Articles thématiques&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Framework|Portail Framework LeSS (fr)] - 95%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/framework/introduction.html Introduction à LeSS]&lt;br /&gt;
** [[Pourquoi%20LeSS%20%3F|Pourquoi LeSS (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Produit|Le Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Product%20Owner|Le Product Owner (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20backlog%20du%20produit|Le Backlog du Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Les%20%C3%89quipes|Les Équipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Sprint|Le Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%281%C3%A8re%20partie%29|La Planification du Sprint (1ère partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%282%C3%A8me%20partie%29|La Planification du Sprint (2ème partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Backlog%20du%20Sprint|Le Backlog du Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20M%C3%AAl%C3%A9e%20Quotidienne|La Mêlée Quotidienne (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coordination%20%26%20Int%C3%A9gration|Coordination &amp;amp; Intégration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Incr%C3%A9ment%20Produit%20Potentiellement%20D%C3%A9ployable|L&#039;Incrément Produit Potentiellement Déployable (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20D%C3%A9finition%20du%20Fini|La Définition du Fini (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Revue%20de%20Sprint|La Revue de Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective|La Rétrospective (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective%20Globale|La Rétrospective Globale (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20du%20Backlog%20Produit|L&#039;Affinage du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20Initial%20du%20Backlog%20Produit|L&#039;Affinage Initial du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20ScrumMaster|Le ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Principes|Portail Principes (fr)] - 63%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Pr%C3%A9sentation%20des%20principes|Présentation des principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Scrum%20%C3%A0%20grande%20%C3%A9chelle%20reste%20du%20Scrum|Scrum à grande échelle reste du Scrum (fr)]]&lt;br /&gt;
** [[Less_-_Plus_avec_LeSS|Plus avec LeSS (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/lean-thinking.html Pensée Lean]&lt;br /&gt;
** [[LeSS - Approche systémique|Approche systémique (fr]]&lt;br /&gt;
** [[LeSS%20-%20Contr%C3%B4le%20du%20processus%20empirique|Contrôle du processus empirique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Transparence|Transparence (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/continuous-improvement-towards-perfection.html Amélioration continue vers la perfection]&lt;br /&gt;
** [[Less_-_Centré_client|Centré client (fr)]]&lt;br /&gt;
** [[Less_-_Focus_sur_le_produit_global|Focus sur le produit global (fr)]]&lt;br /&gt;
** [https://less.works/less/principles/queueing_theory.html Théorie des files d&#039;attente]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Structure|Portail Structure (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Equipes|Equipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Organisation%20en%20fonction%20de%20la%20valeur%20client|Organisation en fonction de la valeur client (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Equipes%20Feature|Equipes Feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle|Structure organisationnelle (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Communaut%C3%A9s|Communautés (fr)]]&lt;br /&gt;
** [[LeSS%20-%20ScrumMaster|ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Excellence%20technique|Portail Excellence Technique (fr)]] - 40%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Sp%C3%A9cifications%20par%20l%27exemple|Spécifications par l&#039;exemple (fr)]]&lt;br /&gt;
** [[Less - Intégration continue|Intégration Continue (fr)]]&lt;br /&gt;
** [https://less.works/less/technical-excellence/continuous-delivery.html Livraison Continue]&lt;br /&gt;
** [[LeSS - Tests d&#039;Acceptation|Tests d&#039;Acceptation (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/architecture-design.html Architecture &amp;amp; Conception]&lt;br /&gt;
** [http://less.works/less/technical-excellence/clean-code.html Ecrire du Code Propre]&lt;br /&gt;
** [http://less.works/less/technical-excellence/unit-testing.html Tests unitaires]&lt;br /&gt;
** [[Less - Développement piloté par les tests|Développement piloté par les tests (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/thinking-about-testing.html Réflexions à propos des tests]&lt;br /&gt;
** [http://less.works/less/technical-excellence/test-automation.html Automatisation des tests]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Management|Portail Management (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20R%C3%B4le%20du%20Manager|Rôle du Manager (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Enseigner%20la%20r%C3%A9solution%20de%20probl%C3%A8me|Enseigner la résolution de problème (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Aller%20Voir|Aller Voir (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Auto-gestion|Auto-gestion (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Service%20d%27am%C3%A9lioration|Service d&#039;amélioration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Manager%20en%20tant%20que%20ScrumMaster|Le Manager en tant que ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20LeSS%20Huge|Portail Less Huge (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Domaines%20d%27exigences|Domaines d&#039;Exigences (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Backlog%20Produit%20de%20Domaine|Backlog Produit de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Product%20Owner%20de%20Domaine|Product Owner de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle%20pour%20LeSS%20Huge|Structure organisationnelle pour LeSS Huge (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Adoption|Portail Adoption (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Les%20trois%20principes|Trois principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20D%C3%A9marrer|Démarrer (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coaching|Coaching (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Am%C3%A9lioration%20continue|Amélioration Continue (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Sch%C3%A9ma%20d%27adoption%20des%20%C3%A9quipes%20feature|Schéma d&#039;adoption des équipes feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Rester%20sain%20d%27esprit|Rester sain d&#039;esprit (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;LeSS Test&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/test/pre-course.html LeSS Test]&lt;br /&gt;
** [http://less.works/less/test/scrum.html Scrum Test]&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Less_-_D%C3%A9veloppement_pilot%C3%A9_par_les_tests&amp;diff=11952</id>
		<title>Less - Développement piloté par les tests</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Less_-_D%C3%A9veloppement_pilot%C3%A9_par_les_tests&amp;diff=11952"/>
		<updated>2020-03-08T17:58:11Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Page créée avec « Auteur : The LeSS Company B.V. Source : [https://less.works/less/technical-excellence/test-driven-development.html Technical Excellence - Test-Driven Development (LeSS)] -... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auteur : The LeSS Company B.V.&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/test-driven-development.html Technical Excellence - Test-Driven Development (LeSS)]&lt;br /&gt;
----&lt;br /&gt;
Traducteur : Nicolas Mereaux&lt;br /&gt;
Relecture : Fabrice Aimetti&lt;br /&gt;
Date : 08/03/2020&lt;br /&gt;
----&lt;br /&gt;
Traduction :&lt;br /&gt;
&lt;br /&gt;
[[LeSS - Portail Excellence technique]] &lt;br /&gt;
&lt;br /&gt;
= Test-Driven Development =&lt;br /&gt;
&lt;br /&gt;
= Développement piloté par les tests (TDD) =&lt;br /&gt;
&lt;br /&gt;
== What Is Test-Driven Development ==&lt;br /&gt;
&lt;br /&gt;
== Qu’est-ce que le développement piloté par les tests ? ==&lt;br /&gt;
&lt;br /&gt;
Test-driven development is a development style that drives the design by tests developed in short cycles of:&lt;br /&gt;
&lt;br /&gt;
Le développement piloté par les tests est un style de développement qui guide la conception par l’introduction de tests développés sur des cycles courts :&lt;br /&gt;
&lt;br /&gt;
# Write one test.&lt;br /&gt;
# Implement just enough code to make it pass.&lt;br /&gt;
# Refactor the code so it is clean.&lt;br /&gt;
&lt;br /&gt;
# Écrire un test.&lt;br /&gt;
# Implémenter juste ce qu’il faut de code pour passer le test.&lt;br /&gt;
# Refactorer le code afin qu’il soit tout propre&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tdd-cycle-fr.png|centré|254px|TDD]]&lt;br /&gt;
&lt;br /&gt;
In a language such as Java, this cycle is as short as five minutes. In older languages, with slower compilation and less automated refactoring support, this cycle is longer—perhaps twenty minutes.&lt;br /&gt;
&lt;br /&gt;
Dans un langage comme Java, ce cycle ne prend pas plus de 5 minutes. Dans des langages plus anciens, ayant des temps de compilation plus longs et moins d’outils de refactoring automatisés, ce cycle est plus long - 20 minutes environ.&lt;br /&gt;
&lt;br /&gt;
Is test-driven development different in large product development? No. It is an individual developer practice and the number of people in the development does not matter. The amount of legacy code, old technology, and embedded develop- ment does have an impact on unit testing and test-driven development. Therefore, most experiments in this section are related to these.&lt;br /&gt;
&lt;br /&gt;
Est-ce que le développement piloté par les tests est différent dans le cadre du développement de produits de taille importante ? Non, car il s’agit d’une pratique individuelle de développeur peu importe le nombre de personnes impliquées dans le développement. La quantité de code historique, les anciennes technologies et les développements dans l’embarqué ont un impact sur le test unitaire et sur le développement piloté par les tests. En conséquence, la plupart des expérimentations de la présente section sont en lien avec ces sujets.&lt;br /&gt;
&lt;br /&gt;
=== A TDD cycle Should Be … ===&lt;br /&gt;
&lt;br /&gt;
=== Un cycle TDD type devrait être … ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short&#039;&#039;&#039; The turnaround time for passing each test is short. It could take 5 mins per cycle. &#039;&#039;&#039;Rhythmic&#039;&#039;&#039; You’ll feel the rhythm distinctly - “red, green, refactor… red, green refactor…” &#039;&#039;&#039;Incremental&#039;&#039;&#039; You’ll know that as you write and pass more tests, working functionalities are being build up incrementally. &#039;&#039;&#039;Design-focused&#039;&#039;&#039; With good knowledge of software design principles, you’ll discover TDD is not a testing technique but a method of designing software. &#039;&#039;&#039;Disciplined&#039;&#039;&#039; TDD is a different way of developing software. To break the old habit of “code and fix” and to adopt a new habit will require discipline and persistence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Court&#039;&#039;&#039; Le temps de traitement pour passer chaque test est court. Cela devrait prendre 5 minutes par cycle. &#039;&#039;&#039;Rhythmique&#039;&#039;&#039; Vous sentirez le rythme très distinctement - « rouge, vert, refactorer … rouge, vert, refactorer … » &#039;&#039;&#039;Incrémental&#039;&#039;&#039; Vous saurez au fur et à mesure que vous écrirez et ferez passer de plus en plus de tests, que des fonctionnalités sont construites de manière incrémentale &#039;&#039;&#039;Focalisé sur la conception&#039;&#039;&#039; Avec une bonne connaissance des principes de conception logicielle, vous découvrirez que le développement piloté par les tests n’est pas une technique de tests mais une méthode pour concevoir du logiciel. &#039;&#039;&#039;Discipliné&#039;&#039;&#039; Le TDD est une autre façon de développer du logiciel. Casser les vieilles habitudes « coder et corriger » pour adopter une nouvelle habitude exigera de la discipline et de la persévérance&lt;br /&gt;
&lt;br /&gt;
== Why TDD? ==&lt;br /&gt;
&lt;br /&gt;
== Pourquoi le TDD ? ==&lt;br /&gt;
&lt;br /&gt;
== Coaching TDD ==&lt;br /&gt;
&lt;br /&gt;
== Coacher le TDD ==&lt;br /&gt;
&lt;br /&gt;
=== Use TDD Coaches ===&lt;br /&gt;
&lt;br /&gt;
=== Recourir à des coachs en TDD ===&lt;br /&gt;
&lt;br /&gt;
When a client of ours reviewed a draft of the companion book, he mentioned that we ought to stress coaching more. “One of our mistakes is that we didn’t provide enough coaching,” he said. Though we agreed with him, we pointed out that since we are both consultants and provide such coaching, this advice would not be very credible. We might as well add an experiment “Try…Hire us.” Thus, we minimized the advice related to hiring coaches.&lt;br /&gt;
&lt;br /&gt;
À la relecture du brouillon du livret d’accompagnement, l’un de nos clients a énoncé que nous devrions insister davantage sur l’aspect coaching. « L’une de nos erreurs a été de ne pas avoir fourni suffisamment de coaching » a-t-il dit. Bien que nous ayons été d’accord avec lui, nous lui avons fait remarquer que nous étions tous les deux des consultants et que nous offrions ce type d’accompagnement, ce conseil n’était donc pas très crédible. Nous aurions bien pu aussi bien mettre une pancarte « Essayez … Engagez-nous ». Par conséquent, nous minimisons le conseil d’avoir recours à des coachs.&lt;br /&gt;
&lt;br /&gt;
But related to test-driven development, we cannot stress strongly enough: Hire coaches! Adopting TDD means unlearning traditional programming and relearning how to design and code. We rarely meet people who were able to adopt this by self-education. Most developers need a coach to pair-program with them for days or weeks. The coach constantly reminds them to write the tests first and to really clean up the code—including the test code. He helps them apply TDD and refactoring to their real code.&lt;br /&gt;
&lt;br /&gt;
Toutefois en ce qui concerne le développement piloté par les tests, nous ne pouvons que trop insister : engagez des coachs ! Adopter le TDD signifie désapprendre le développement traditionnel et réapprendre comment concevoir et coder. Nous rencontrons rarement des gens qui soient en capacité de l’adopter en autodidacte. La plupart des développeurs ont besoin d’un coach pour programmer avec eux en binome pendant quelques jours ou quelques semaines. Le coach leurs rappelle constamment d’écrire les tests d’abord et de mettre de l’ordre dans le code - y compris le code de tests. Il les aide à appliquer le TDD et à refactorer leur véritable code.&lt;br /&gt;
&lt;br /&gt;
Test-driven development might be the hardest agile practice to adopt, but it is also one of the biggest opportunities for improving the quality of the design and code. Hire coaches!&lt;br /&gt;
&lt;br /&gt;
Le développement piloté par les tests pourrait bien être la pratique agile la plus difficile à adopter, mais il s’agit aussi de l’une des plus grosses opportunités pour améliorer la qualité de la conception et du code. Engagez des coachs !&lt;br /&gt;
&lt;br /&gt;
=== Internal and external coaches ===&lt;br /&gt;
&lt;br /&gt;
=== Coachs internes et externes ===&lt;br /&gt;
&lt;br /&gt;
External coaches are needed when adopting TDD because the com- petence does not yet exist inside the company. But, over time, growing internal coaches reduces the dependence on externals and the cost of coaching.&lt;br /&gt;
&lt;br /&gt;
Des coachs externes sont nécessaires quant à l’adoption de TDD car la compétence n’existe pas encore dans l’entreprise. Mais, avec le temps, la montée en compétence de coachs internes diminuent la dépendance vis-à-vis de coachs externes et en réduit le coût.&lt;br /&gt;
&lt;br /&gt;
That said, we have seen several attempts fail to develop internal coaches. Some reasons:&lt;br /&gt;
&lt;br /&gt;
Ceci dit, nous avons assisté à plusieurs échecs quant à la mise en place de coachs internes. Voici quelques raisons de ces échecs :&lt;br /&gt;
&lt;br /&gt;
* No structure was in place to decide when and with which teams to work.&lt;br /&gt;
* No time was reserved for coaching. Instead the internal coaches were asked to do normal development.&lt;br /&gt;
* Developers were less eager to learn from internal coaches…you are never a prophet in your own land.&lt;br /&gt;
* Coaching skills were not appreciated and further developed. The result is that skilled internal coaches often leave to be an external coach.&lt;br /&gt;
&lt;br /&gt;
* Aucune structure n’était en place pour décider avec quelle équipe travailler et quand le faire.&lt;br /&gt;
* Aucun temps n’était accordé pour du coaching. Au lieu de cela il était demandé aux coachs internes de faire du développement « traditionnel ».&lt;br /&gt;
* Les développeurs étaient moins enthousiastes d’apprendre de coachs internes … vous n’êtes jamais prophète dans votre propre pays.&lt;br /&gt;
* Les compétences de coach n’étaient ni appréciées ni encouragées à être davantage développées. En conséquence de quoi, les coachs internes compétents partaient souvent pour devenir coach externe.&lt;br /&gt;
&lt;br /&gt;
Choose both internal and external coaching. Depending on either of them alone is risky but combining them can lead to good results.&lt;br /&gt;
&lt;br /&gt;
Choisissez les deux, du coaching interne et du coaching externe. Dépendre de l’un des deux uniquement est risqué mais les combiner peut conduire à de bons résultats.&lt;br /&gt;
&lt;br /&gt;
== Test-driven development for a better architecture ==&lt;br /&gt;
&lt;br /&gt;
== Développement piloté par les tests pour une meilleure architecture ==&lt;br /&gt;
&lt;br /&gt;
TDD can help improve the architecture of a system. How?&lt;br /&gt;
&lt;br /&gt;
Le TDD peut aider à améliorer l’architecture d’un système. Comment ?&lt;br /&gt;
&lt;br /&gt;
When we are coaching, a frequent request is help for dealing with our client’s “inflexible architecture.” This most often boils down to problems in high coupling between components—a common problem in legacy code written without TDD because the original developer did not try to test the component in isolation.&lt;br /&gt;
&lt;br /&gt;
Quand nous faisons de l’accompagnement, une demande d’assistante fréquente qui nous est adressée est d’aider à assouplir « l’architecture inflexible» de notre client. Cela se réduit le plus souvent à des problèmes de couplages très étroits entre les composants - un problème assez répandu dans du code ancien écrit sans TDD parce que le développeur d’origine n’avait pas essayé de tester le composant de manière isolé.&lt;br /&gt;
&lt;br /&gt;
On the other hand, when a developer creates a new component (such as a class) with TDD, or refactors a legacy component to be unit-testable, they must break the dependencies of that component so that it is testable in isolation. That requires designing (or refactoring) for dependency injection and increased use of mechanisms for flexibility: interfaces, polymorphism, design patterns, dependency injection frameworks, function pointers, and more.&lt;br /&gt;
&lt;br /&gt;
D’un autre côté, lorsqu’un développeur créé un nouveau composant (comme une classe) avec le TDD, ou refactore un composant historique pour être testable unitairement, il doit casser les dépendances de ce composant afin qu’il soit testable de manière isolé. Cela exige de faire une conception orientée injection de dépendances et d’augmenter l’utilisation de mécanismes pour plus de flexibilité : interfaces, polymorphisme, schéma de conceptions, &#039;&#039;framework&#039;&#039; d’injection de dépendances, pointeurs de fonctions, etc&lt;br /&gt;
&lt;br /&gt;
In this way, TDD encourages lower coupling and simple, flexible configuration—qualities of a good architecture.&lt;br /&gt;
&lt;br /&gt;
De cette manière, le TDD encourage un couplage plus lâche, plus simple, une configuration plus simple - en somme, les qualités d’une bonne architecture.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Tdd-cycle-fr.png&amp;diff=11951</id>
		<title>Fichier:Tdd-cycle-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Tdd-cycle-fr.png&amp;diff=11951"/>
		<updated>2020-03-08T17:52:14Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Cycle TDD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cycle TDD&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=11950</id>
		<title>Catégorie:Portail LeSS</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=11950"/>
		<updated>2020-03-08T17:40:32Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;addthis /&amp;gt;&lt;br /&gt;
[[Catégorie: Portails Thématiques]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
[[Category: Portail Framework]]&lt;br /&gt;
[[Fichier:LeSS-logo 72.png]] À la découverte de LeSS, ce framework de mise à l&#039;échelle de l&#039;élégance de Scrum.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LeSS-overview-diagram_fr.png|LeSS-overview-diagram_fr.png]]&amp;lt;br /&amp;gt; [http://less.works/less/framework/introduction.html introduction]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;Depuis 2005, nous avons travaillé avec des clients pour mettre en oeuvre le framework LeSS (Large-Scale Scrum) de mise à l&#039;échelle du développement Scrum, agile et lean pour les groupes produit de grande taille. Nous partageons cette connaissance à travers LeSS pour que, vous aussi, vous puissiez réussir lorsque vous passez à l&#039;échelle.&amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;lt;br /&amp;gt;  - Craig Larman &amp;amp; Bas Vodde&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff; font-size: 18.2px&amp;quot;&amp;gt;Articles thématiques&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Framework|Portail Framework LeSS (fr)] - 95%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/framework/introduction.html Introduction à LeSS]&lt;br /&gt;
** [[Pourquoi%20LeSS%20%3F|Pourquoi LeSS (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Produit|Le Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Product%20Owner|Le Product Owner (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20backlog%20du%20produit|Le Backlog du Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Les%20%C3%89quipes|Les Équipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Sprint|Le Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%281%C3%A8re%20partie%29|La Planification du Sprint (1ère partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%282%C3%A8me%20partie%29|La Planification du Sprint (2ème partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Backlog%20du%20Sprint|Le Backlog du Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20M%C3%AAl%C3%A9e%20Quotidienne|La Mêlée Quotidienne (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coordination%20%26%20Int%C3%A9gration|Coordination &amp;amp; Intégration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Incr%C3%A9ment%20Produit%20Potentiellement%20D%C3%A9ployable|L&#039;Incrément Produit Potentiellement Déployable (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20D%C3%A9finition%20du%20Fini|La Définition du Fini (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Revue%20de%20Sprint|La Revue de Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective|La Rétrospective (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective%20Globale|La Rétrospective Globale (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20du%20Backlog%20Produit|L&#039;Affinage du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20Initial%20du%20Backlog%20Produit|L&#039;Affinage Initial du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20ScrumMaster|Le ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Principes|Portail Principes (fr)] - 63%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Pr%C3%A9sentation%20des%20principes|Présentation des principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Scrum%20%C3%A0%20grande%20%C3%A9chelle%20reste%20du%20Scrum|Scrum à grande échelle reste du Scrum (fr)]]&lt;br /&gt;
** [[Less_-_Plus_avec_LeSS|Plus avec LeSS (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/lean-thinking.html Pensée Lean]&lt;br /&gt;
** [http://less.works/less/principles/systems_thinking.html Approche systémique]&lt;br /&gt;
** [[LeSS%20-%20Contr%C3%B4le%20du%20processus%20empirique|Contrôle du processus empirique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Transparence|Transparence (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/continuous-improvement-towards-perfection.html Amélioration continue vers la perfection]&lt;br /&gt;
** [[Less_-_Centré_client|Centré client (fr)]]&lt;br /&gt;
** [[Less_-_Focus_sur_le_produit_global|Focus sur le produit global (fr)]]&lt;br /&gt;
** [https://less.works/less/principles/queueing_theory.html Théorie des files d&#039;attente]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Structure|Portail Structure (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Equipes|Equipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Organisation%20en%20fonction%20de%20la%20valeur%20client|Organisation en fonction de la valeur client (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Equipes%20Feature|Equipes Feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle|Structure organisationnelle (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Communaut%C3%A9s|Communautés (fr)]]&lt;br /&gt;
** [[LeSS%20-%20ScrumMaster|ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Excellence%20technique|Portail Excellence Technique (fr)]] - 30%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Sp%C3%A9cifications%20par%20l%27exemple|Spécifications par l&#039;exemple (fr)]]&lt;br /&gt;
** [[Less - Intégration continue|Intégration Continue (fr)]]&lt;br /&gt;
** [https://less.works/less/technical-excellence/continuous-delivery.html Livraison Continue]&lt;br /&gt;
** [[LeSS - Tests d&#039;Acceptation|Tests d&#039;Acceptation (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/architecture-design.html Architecture &amp;amp; Conception]&lt;br /&gt;
** [http://less.works/less/technical-excellence/clean-code.html Ecrire du Code Propre]&lt;br /&gt;
** [http://less.works/less/technical-excellence/unit-testing.html Tests unitaires]&lt;br /&gt;
** [[Less - Développement piloté par les tests|Développement piloté par les tests (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/thinking-about-testing.html Réflexions à propos des tests]&lt;br /&gt;
** [http://less.works/less/technical-excellence/test-automation.html Automatisation des tests]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Management|Portail Management (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20R%C3%B4le%20du%20Manager|Rôle du Manager (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Enseigner%20la%20r%C3%A9solution%20de%20probl%C3%A8me|Enseigner la résolution de problème (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Aller%20Voir|Aller Voir (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Auto-gestion|Auto-gestion (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Service%20d%27am%C3%A9lioration|Service d&#039;amélioration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Manager%20en%20tant%20que%20ScrumMaster|Le Manager en tant que ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20LeSS%20Huge|Portail Less Huge (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Domaines%20d%27exigences|Domaines d&#039;Exigences (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Backlog%20Produit%20de%20Domaine|Backlog Produit de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Product%20Owner%20de%20Domaine|Product Owner de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle%20pour%20LeSS%20Huge|Structure organisationnelle pour LeSS Huge (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Adoption|Portail Adoption (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Les%20trois%20principes|Trois principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20D%C3%A9marrer|Démarrer (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coaching|Coaching (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Am%C3%A9lioration%20continue|Amélioration Continue (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Sch%C3%A9ma%20d%27adoption%20des%20%C3%A9quipes%20feature|Schéma d&#039;adoption des équipes feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Rester%20sain%20d%27esprit|Rester sain d&#039;esprit (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;LeSS Test&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/test/pre-course.html LeSS Test]&lt;br /&gt;
** [http://less.works/less/test/scrum.html Scrum Test]&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Le_Product_Owner&amp;diff=11289</id>
		<title>LeSS - Le Product Owner</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Le_Product_Owner&amp;diff=11289"/>
		<updated>2019-06-26T19:03:48Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Portail LeSS]]&lt;br /&gt;
[[Category: Portail Product Owner]]&lt;br /&gt;
Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/framework/product-owner.html Product Owner (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traducteur : [http://www.les-traducteurs-agiles.org/traducteurs/ Nicolas Mereaux]&amp;lt;br /&amp;gt;&lt;br /&gt;
Date : 23/06/2019&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Traduction :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[LeSS - Portail Framework]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Le rôle de Product Owner dans LeSS est conceptuellement le même que celui dans une unique équipe Scrum. Toutefois, à grande échelle la focale change légèrement pour aller vers quelque chose permettant de garder une vision globale et de garantir un retour sur investissement (ROI) maximum au niveau du produit.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Le Product Owner à grande échelle ==&lt;br /&gt;
S’il est une chose assez répandue dans le développement de produit à grande échelle c’est que différentes personnes tirent dans différentes directions et pour des sous-groupes de se focaliser sur des sur-optimisations au niveau local. Avoir un seul Product Owner avec un seul Backlog de Produit permet de maintenir un [[Less_-_Focus_sur_le_produit_global|focus sur le produit global (fr)]].&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans les traditionnels groupes produit à grande échelle, nous trouvons d’une part un groupe (souvent des responsables produits - &#039;&#039;product managers&#039;&#039; -) focalisé vers l’extérieur et d’autre part un groupe (généralement les développeurs) focalisé vers l’intérieur - et jamais aucun des deux ne se rejoignent. Dans LeSS, le Product Owner unique dispose de beaucoup de temps pour se focaliser vers l’extérieur - les clients et leurs priorités - tout en étant aussi en capacité de prendre du temps pour se focaliser vers l’intérieur - les équipes. Il agit en tant que connecteur, faisant se réunir ensemble les équipes et les clients/utilisateurs afin que les équipes deviennent encore plus [[Less_-_Centré_client|orientées client (fr)]]).&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Par rapport à d’autres approches de Scrum à grande échelle, il est possible avec LeSS de passer à grande échelle le rôle de Product Owner avec une seule personne parce qu’il y a moins de rôles, de positions et moins de complexité.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Priorisation plus que Clarification ==&lt;br /&gt;
Il y a deux flux d’informations-clés dans Scrum qui sont liés au Product Owner : (1) la priorisation (ordonnancement) des éléments dans le Backlog de Produit et (2) la clarification des éléments dans le Backlog de Produit. Dans le premier flux (priorisation), les informations liées aux centres de profits, aux clients stratégiques, aux risques métiers, et à d’autres préoccupations métiers sont recherchées et analysées. Dans le second flux (clarification), l’information est recherchée pour détailler le comportement et les qualités intrinsèques des éléments, l’expérience utilisateur, et à d’autres préoccupations sur la conception des fonctionnalités.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Un Product Owner LeSS porte une réflexion accrue sur la priorisation mais collabore avec les équipes sur la clarification. De plus, il encourage et aide les équipes à entrer en communication directe avec les véritables utilisateurs et clients pour plus de clarification. Il agit en tant que connecteur, pas en tant qu’intermédiaire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Pourquoi mettre l’emphase sur une interaction directe entre les équipes et les clients/utilisateurs ? Voici quelques raisons : (1) éviter la perte d’informations liée au passage de relais, (2) encourager la co-création de solutions aux problèmes réels des clients, et (3) améliorer la motivation et l’empathie envers les clients en ayant des développeurs qui collaborent directement avec eux.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est important de noter que lorsque les équipes font le gros du boulot de clarification, le Product Owner dispose de plus de temps et d’énergie pour se focaliser sur la vision globale, pour prioriser de manière continue et pour explorer de nouvelles opportunités stratégiques.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Trouver un Product Owner en fonction de votre type de développement ==&lt;br /&gt;
&lt;br /&gt;
=== Étape 1 : connaître votre type de développement ===&lt;br /&gt;
Trouver le bon type de Product Owner dépend de la connaissance de votre type de développement :&lt;br /&gt;
* &#039;&#039;&#039;Développement de produits&#039;&#039;&#039; pour des clients externes ou un marché&lt;br /&gt;
* &#039;&#039;&#039;Développement (de produit) à usage interne&#039;&#039;&#039; pour un ou plusieurs utilisateurs à l’intérieur de l’entreprise. Un tel groupe de développement s’appelle généralement Développement des Systèmes d’Informations ou l’Informatique&lt;br /&gt;
* &#039;&#039;&#039;Développement d’un projet&#039;&#039;&#039; généralement pour un client externe. Le travail est organisé et contractualisé sous la forme d’un projet quel qu’il soit bien que cela ne signifie pas pour autant un contrat du projet basée sur le triangle  périmètre/date/coût. La société de développement est généralement un prestataire extérieur ou un intégrateur-système. Le client, ou l’entreprise cliente, englobe à la fois l’entité acheteuse et les utilisateurs, qui ne sont pas nécessairement dans le même département.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Étape 2 : trouver le bon Product Owner ===&lt;br /&gt;
&#039;&#039;&#039;Développement de produits&#039;&#039;&#039; - l’entreprise aura soit (1) une unité métier pilotant l’initiative produit (exemple : la banque de détails), ou (2) un département de gestion produits pilotant l’initiative. Traditionnellement, la gestion de produits est responsable de l’analyse des clients et de la concurrence, de la vision produit, de la sélection et de la priorisation des fonctionnalités à grosse maille, de la feuille de route produit, ainsi que d’autres activités non techniques. On ne gère pas non plus le travail d’un groupe de développement traditionnel.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Où donc trouver un Product Owner pour un groupe adoptant LeSS ? S’il y a un département de gestion produits alors un responsable produit peut être un bon choix. Sinon, il faut chercher une personne du côté d’une unité métier qui puisse piloter l’initiative. La chose importante à garder à l’esprit est que le Product Owner pour le développement d’un produit devrait venir du côté métier.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Développement (de produits) à usage interne&#039;&#039;&#039; - un bon Product Owner pour le développement de produits à usage interne dans LeSS est (1) quelqu’un provenant d’un groupe qui utilisera le système, et (2) qui est étroitement impliqué et a une grande expérience sur le boulot réel que le système prendra en charge. Une telle personne est très proche des véritables utilisateurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Développement d’un projet&#039;&#039;&#039; - Ici le point-clé est que le Product Owner vient de l’entreprise qui bénéficiera du système et, comme pour le développement interne, qui est impliqué et dispose d’une grande expérience sur le travail opérationnel, et proche des utilisateurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Une variante  habituelle à la fois dans le développement à usage interne et dans le développement d’un projet est lorsque le système sera amené à être utilisé par plusieurs départements. Un bon choix est alors de trouver une personne expérimentée au niveau opérationnel provenant de l’un des départements où se trouve les utilisateurs les plus importants et qui est intéressé par prendre le rôle et qui sait naviguer au niveau politique au sein de l’organisation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
L’illustration suivante montre le Product Owner dans différentes organisations :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Who-is-the-po-fr.jpg.jpg|800px|Qui est le PO]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans tous les cas, un super Product Owner est une personne passionnée par le produit.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Lorsqu’il est impossible de trouver le bon Product Owner immédiatement, vous pouvez tout de même rapidement démarrer une adoption de LeSS avec un Product Owner &#039;&#039;temporaire&#039;&#039; qui soit en mesure de comprendre ce qu’il se passe et prendre en charge les mécanismes du rôle mais qui n’est pas du côté métier. Laissons ensuite les équipes dérouler plusieurs Sprints avec le Product Owner temporaire jusqu’à ce que les problèmes majeurs soient résolus et - c’est important - jusqu’à ce que les équipes de développement puissent livrer un incrément vraiment ‘terminé’, déployable (ou quelque chose d’approchant) à chaque Sprint. Pourquoi ? Les équpes produits trouveront plus probablement et inspireront le bon Product Owner à plus long terme si elles peuvent montrer une nouvelle capacité qui soit attrayante et qui offre un bénéfice métier très tangible. Il est extrêmement important que tout le monde comprenne que le Product Owner temporaire est un bouche-trou. Nous utilisons régulièrement le terme &amp;quot;faux Product Owner&amp;quot; pour indiquer à quel point il peut être dommageable que ce poste de Product Owner temporaire se pérennise. Non seulement parce qu’un faux PO n’est pas le meilleur Product Owner mais également parce qu’il peut provoquer des dégâts en essayant de remplir un rôle pour lequel il n’est pas qualifié. Il doit être remplacé dès que possible pour éviter le risque d&#039;aboutir à la création d’un produit de seconde classe.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Étape 3 : donner l’autorité et la responsabilité au vrai Product Owner ===&lt;br /&gt;
Le terme Product Owner n’est pas un nouveau nom donné à un responsable de projet traditionnel qui livre le résultat d’un travail basé sur un périmètre et une date contractualisés. Au lieu de cela, un Product Owner est une personne qui doit avoir l’autorité pour choisir et changer le contenu, les dates de livraison, les priorités, la vision, etc. Bien sûr, il collabore avec les parties prenantes, mais un vrai Product Owner est la personne qui détient l’autorité pour la prise de décision finale.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Cinq types de relations ==&lt;br /&gt;
Le Product Owner doit être en mesure de comprendre et travailler pour améliorer les cinq types de relations clés impactées par l’adoption de LeSS :&lt;br /&gt;
[[Fichier:Les différents types de relation du Product Owner.png|600px|Les différents types de relation du Product Owner]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;harr; Équipes&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les équipes sont là pour aider le Product Owner à créer le meilleur produit possible pour le client. Elles doivent savoir quoi construire par la suite et si oui ou non ce qu’elles ont déjà réalisé a déjà atteint l&#039;objectif. Le Product Owner doit savoir ce dont les équipes ont besoin et comment il peut être en mesure de les aider.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;harr; Clients&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Le Product Owner et les équipes essayent de créer le meilleur produit possible pour le client. Le client a besoin de savoir quand il aura les fonctionnalités qu’il souhaite, et peut être aussi le raisonnement sous-jacent aux priorités. Impliquez-les le plus possible en étant transparent. Le Product Owner doit apprendre leurs véritables objectifs ou problèmes en étant avec eux (ou entrevoir quelque chose au-delà même de leur vision) et collecter l’information qui l&#039;aidera à bien prioriser.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Équipes &amp;amp;harr; Clients&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les équipes essayent de créer le meilleur produit pour le client. Elles doivent connaître le contexte des fonctionnalités et avoir une connaissance détaillée du domaine. Idéalement, les équipes co-créent les solutions directement avec les clients en capturant l’essence même (plutôt que la surface) des objectifs et des problèmes des clients. Les équipes doivent confirmer avec les clients qu’elles ont bien compris les exigences clarifiées ensemble.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;harr; Hiérarchie&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;La hiérarchie  au-dessus du groupe produit (responsables portefeuilles, cadres dirigeants, etc.) devraient considérer le Product Owner comme étant la personne qui a la responsabilité finale quant à la réussite du produit et qui doit en rendre compte. Il est responsable pour donner de la visibilité sur l&#039;état d&#039;avancement du développement et concrétiser le mandat (peut-être implicite) de la hiérarchie pour optimiser les impacts souhaités (par exemple, le ROI et les parts de marché). Le Product Owner, avec le soutien des Scrum Masters implique la hiérarchie pour aider à améliorer la structure de l’organisation.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;harr; Scrum Masters&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les relations décrites ci-dessus font partie intégrante de l’art d’être Product Owner (ou “product ownership”), mais celle-ci est différente. Elle concerne les connaissances et le comportement du Product Owner. Les Scrum Masters doivent connaître les préoccupations, les questions et les obstacles du Product Owner afin d’être en mesure de l’aider. Un bon Scrum Master doit être une oreille bienveillante ou une épaule amicale sur laquelle pleurer. Les Scrum Masters éduquent et donnent du feedback au Product Owner afin qu’il puisse s’adapter en conséquence.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les Réunions LeSS ==&lt;br /&gt;
Lorsque nous présentons LeSS, une question qui revient souvent est : &amp;quot;Comment un seul Product Owner peut-il gérer toutes ces réunions avec toutes ces équipes ?&amp;quot;. Fort heureusement, l’inquiétude qui se cache derrière cette question est qu’elle est basée en fait sur un malentendu. Le seul et unique Product Owner en LeSS assiste uniquement à des réunions individuelles même si c’est avec plusieurs équipes. Et le nombre d’équipiers dans ces réunions est gérable. S’il y a seulement deux équipes, tout le monde peut effectivement être présent et participer. S’il y a plusieurs équipes, deux représentants seulement de chaque équipe peuvent être présents.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Quelles sont les réunions LeSS auxquelles un Product Owner assiste et quelles sont les durées moyennes dans un Sprint type de deux semaines ?&lt;br /&gt;
* [[LeSS_-_La_Planification_du_Sprint_(1ère_partie)|La Planification du Sprint (1ère partie) (fr)]] - 1 heure.&lt;br /&gt;
* [[LeSS_-_L%27Affinage_du_Backlog_Produit|L’Affinage Global du Backlog Produit (fr)]] - 4 heures.&lt;br /&gt;
* [[LeSS_-_La_Revue_de_Sprint|La Revue de Sprint (fr)]]] - 2 heures.&lt;br /&gt;
* [[LeSS_-_La_Rétrospective_Globale|La Rétrospective Globale (fr)]] - 1,5 heure.&lt;br /&gt;
Donc le temps total passé dans les évènements LeSS est, en moyenne, d’environ huit heures dans un Sprint de deux semaines.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Le Product Owner ne participe pas aux réunions spécifiques des équipes que sont : [[LeSS_-_La_Planification_du_Sprint_(2ème_partie)|la Planification du Sprint (2ème partie) (fr)]], [[LeSS_-_La_Mêlée_Quotidienne|la Mêlée Quotidienne (fr)]], [[LeSS_-_L%27Affinage_du_Backlog_Produit|les Affinages de backlog faits par les équipes (fr)]], [[LeSS_-_La_Rétrospective|les Rétrospectives des équipes (fr)]].&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Le_Product_Owner&amp;diff=11253</id>
		<title>LeSS - Le Product Owner</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Le_Product_Owner&amp;diff=11253"/>
		<updated>2019-06-23T15:53:04Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Page créée avec « Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt; Source : [https://less.works/less/framework/product-owner.html Product Owner (LeSS)]&amp;lt;br /&amp;gt; &amp;lt;hr /&amp;gt; Traducteur : [http://www.les-traduct... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auteur : The LeSS Company B.V.&amp;lt;br /&amp;gt;&lt;br /&gt;
Source : [https://less.works/less/framework/product-owner.html Product Owner (LeSS)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
Traducteur : [http://www.les-traducteurs-agiles.org/traducteurs/ Nicolas Mereaux]&amp;lt;br /&amp;gt;&lt;br /&gt;
Date de traduction : 23/06/2019&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Product Owner role in LeSS is conceptually the same as in one-team Scrum. However, at scale the focus changes slightly toward keeping an overview and ensuring the maximum return on investment (ROI) in the product.&lt;br /&gt;
&lt;br /&gt;
Le rôle de Product Owner dans LeSS est conceptuellement le même que celui dans une équipe Scrum solo. Toutefois, à grande échelle la focale change légèrement pour aller vers quelque chose permettant de garder une vision globale et de s’assurer un retour sur investissement (ROI) maximum au niveau du produit.&lt;br /&gt;
&lt;br /&gt;
== Scaled Product Owner ==&lt;br /&gt;
&lt;br /&gt;
== Le Product Owner à grande échelle ==&lt;br /&gt;
&lt;br /&gt;
It’s common in large-scale product development for different people to pull in different directions and for subgroups to focus on local sub-optimizations. Maintaining one Product Owner with one Product Backlog supports [https://less.works/less/principles/whole-product-focus.html whole-product focus].&lt;br /&gt;
&lt;br /&gt;
S’il est une chose assez répandu dans le développement de produit à grande échelle c’est que différentes personnes tirent dans différentes directions et pour des sous-groupes de se focaliser sur des sur-optimisations au niveau local. Avoir un seul Product Owner avec un seul Backlog de Produit permet de maintenir un [http://www.les-traducteurs-agiles.org/2018/10/11/less-focus-sur-le-produit-global.html focus sur le produit global].&lt;br /&gt;
&lt;br /&gt;
In traditional large-scale product groups, there’s a group (often product managers) that focuses outward and a group (usually developers) that focuses inward — and never the twain shall meet. In LeSS, the one Product Owner has lots of free time to focus outward on customers and their priorities while also being able to spend some time looking inwards to the teams. She acts as a connector, bringing teams and customers/users together so the teams become more [https://less.works/less/principles/customer-centric.html customer focused].&lt;br /&gt;
&lt;br /&gt;
Dans les groupes produit à grande échelle rencontrés traditionnellement, nous trouvons d’une part un groupe (souvent des responsables produits - &#039;&#039;product managers&#039;&#039; -) focalisé vers l’extérieur et d’autre part un groupe (généralement les développeurs) focalisé vers l’intérieur - et jamais aucun des deux ne se rejoignent. Dans LeSS, le Product Owner unique dispose de beaucoup de temps pour se focaliser vers l’extérieur - les clients et leurs priorités - tout en étant aussi en capacité de prendre du temps pour se focaliser vers l’intérieur - les équipes. Il agit en tant que connecteur, faisant se réunir ensemble les équipes et les clients/utilisateurs afin que les équipes deviennent encore plus [orientées clients]https://less.works/less/principles/customer-centric.html).&lt;br /&gt;
&lt;br /&gt;
In contrast with other scaled Scrum approaches, it’s possible in LeSS to effectively scale the Product Owner role with just one person because there are fewer roles and positions, and less complexity.&lt;br /&gt;
&lt;br /&gt;
Par rapport à d’autres approches de Scrum à grande échelle, il est possible avec LeSS de passer à grande échelle le rôle de Product Owner avec une seule personne parce qu’il y a moins de rôles, de positions et moins de complexité.&lt;br /&gt;
&lt;br /&gt;
== Prioritization over Clarification ==&lt;br /&gt;
&lt;br /&gt;
== Priorisation plus que clarification ==&lt;br /&gt;
&lt;br /&gt;
There are two key information flows in Scrum related to the Product Owner: (1) prioritizing (ordering) items in the Product Backlog and (2) clarifying items in the Product Backlog. In the first flow (prioritization), information related to profit drivers, strategic customers, business risks, and other business concerns is sought and analyzed. In the second flow (clarification), information is sought to detail the behavior and qualities of items, the user experience, and other feature design concerns.&lt;br /&gt;
&lt;br /&gt;
Il y a deux flux d’informations-clés dans Scrum liés au Product Owner : (1) la priorisation (ordonnancement) des éléments dans le Backlog de Produit et (2) la clarification des items dans le Backlog de Produit. Dans le premier flux (priorisation), les informations liées aux centres de profits, aux clients stratégiques, aux risques métiers, et à d’autres préoccupations business sont recherchées et analysées. Dans le second flux (clarification), l’information est recherchée pou détailler le comportement et les qualités intrinsèques des items, l’expérience utilisateur, et à d’autres préoccupations sur la conception des fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
A LeSS Product Owner focuses on thinking hard about prioritization but collaborates with the teams on clarification. Further, she encourages and helps the teams enter into a direct conversation with true users and customers for clarification. She acts as a connector, not an intermediary.&lt;br /&gt;
&lt;br /&gt;
Un Product Owner LeSS porte une réflexion accrue sur la priorisation mais collabore avec les équipes sur la clarification. De plus, il encourage et aide les équipes à entrer en communication directe avec les vrais utilisateurs et les vrais clients pour plus de clarification. Il agit en tant que connecteur, pas en tant qu’intermédiaire.&lt;br /&gt;
&lt;br /&gt;
Why emphasize direct interaction between teams and customers/users? Reasons include: (1) avoiding information loss from handoffs, (2) fostering co-creation of solutions to real customer problems, and (3) improving motivation and empathy for customers by having developers collaborate with them directly.&lt;br /&gt;
&lt;br /&gt;
Pourquoi mettre l’emphase sur une interaction directe entre les équipes et les clients/utilisateurs ? Voici quelques raisons : (1) éviter la perte d’informations par le passage de relais, (2) encourager la co-création de solutions aux problèmes des vrais clients, et (3) améliorer la motivation et l’empathie envers les clients en ayant des développeurs qui collaborent directement avec eux.&lt;br /&gt;
&lt;br /&gt;
It’s worth noting that when the teams do most of the clarification work the Product Owner has more time and energy to focus on the big picture, continuously prioritizing and exploring new and strategic opportunities.&lt;br /&gt;
&lt;br /&gt;
Il est important de noter que lorsque les équipes font le gros du boulot de clarification, le Product Owner dispose de plus de temps et d’énergie pour se focaliser sur la vision globale, pour prioriser de manière continue et pour explorer de nouvelles opportunités ou stratégiques.&lt;br /&gt;
&lt;br /&gt;
== Find a Product Owner Given Your Type of Development ==&lt;br /&gt;
&lt;br /&gt;
== Trouver un Product Owner selon votre type de développement ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Know Your Development Type ===&lt;br /&gt;
&lt;br /&gt;
=== Étape 1 : connaître votre type de développement ===&lt;br /&gt;
&lt;br /&gt;
Finding the right Product Owner depends on knowing the type of development you are doing:&lt;br /&gt;
&lt;br /&gt;
Trouver le bon type de Product Owner dépend de la connaissance du type de développement que vous faîtes :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Product development&#039;&#039;&#039;—For external customers or a market.&lt;br /&gt;
* &#039;&#039;&#039;Internal (product) development&#039;&#039;&#039;—For one or more users within the company. The development group is usually called IT or Systems Development.&lt;br /&gt;
* &#039;&#039;&#039;Project development&#039;&#039;&#039;—Usually for one external customer. The work is organized and contracted as a project of some kind although that does not necessarily mean a fixed scope/date/cost project contract. The development company is usually an outsourcer or systems-integrator. The customer, or client company, includes both the purchasing entity and the users, who are not always in the same department.&lt;br /&gt;
* &#039;&#039;&#039;Développement de produits&#039;&#039;&#039; pour des clients externes ou un marché&lt;br /&gt;
* &#039;&#039;&#039;Développement (de produit) à usage interne&#039;&#039;&#039; pour un ou plusieurs utilisateurs à l’intérieur de l’entreprise. Un tel groupe de développement s’appelle généralement Développement des Systèmes d’Informations ou l’Informatique&lt;br /&gt;
* &#039;&#039;&#039;Développement d’un projet&#039;&#039;&#039; généralement pour un client externe. Le travail est organisé et contractualisé sous la forme d’un projet quel qu’elle soit bien que cela ne signifie pas pour autant un contrat pour le projet avec un(e) périmètre/date/coût fixe. L’entreprise de développement est généralement un prestataire extérieur ou un intégrateur-système. Le client, ou l’entreprise cliente, englobe à la fois l’entité acheteuse et les clients, qui ne sont pas nécessairement dans le même département.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Finding the right Product Owner ===&lt;br /&gt;
&lt;br /&gt;
=== Étape 2 : trouver le bon Product Owner ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Product development&#039;&#039;&#039;—The company will have either (1) a business unit driving the product initiative (e.g., Retail Banking), or (2) a Product Management department driving the initiative. Traditional Product Management is responsible for customer and competitor analysis, product vision, coarse-grained feature selection and prioritization, product roadmap, and other non-technical activities. They don’t manage the work of a traditional development group.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Développement de produits&#039;&#039;&#039; - l’entreprise aura soit (1) une unité opérationnelle métier pilotant l’initiative produit (exemple : la banque de détails), ou (2) un département de gestion produits pilotant l’initiative. Traditionnellement, la gestion de produits est responsable de l’analyse des clients et de la concurrence, de la vision produit, de la sélection et de la priorisation des fonctionnalités à grosse maille, de la feuille de route produit, ainsi que d’autres activités non techniques. Il ne gère pas non plus le travail d’un groupe de développement traditionel.&lt;br /&gt;
&lt;br /&gt;
Where to find a Product Owner for a group adopting LeSS? If there’s a Product Management department, then a Product Manager can be a good choice. Otherwise, look for a person from the business unit that’s driving the initiative. The important thing to keep in mind is that the Product Owner for product development should come from the business side.&lt;br /&gt;
&lt;br /&gt;
Où donc trouver un Product Owner pour un groupe adoptant LeSS ? S’il y a un département de gestion produits alors un responsable produit peut être un bon choix. Sinon, il faut chercher une personne du côté d’une unité opérationnelle métier qui puisse piloter l’initiative. La chose importante à garder à l’esprit est que le Product Owner pour le développement d’un produit devrait venir du côté métier.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal (product) development&#039;&#039;&#039;—A good Product Owner for internal product development in LeSS is (1) from within the group that will use the system, and (2) is closely involved in and deeply experienced in doing the real work that the system will support. They are very close to the real users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Développement (de produits) à usage interne&#039;&#039;&#039; - un bon Product Owner pour le développement de produits à usage interne dans LeSS est (1) quelqu’un provenant d’un groupe qui utilisera le système, et (2) est étroitement impliqué et a une grande expérience sur le boulot réel que le système prendra en charge. Une telle personne est très proche des vrais utilisateurs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project development&#039;&#039;&#039;—The key point is that a Product Owner is from the company receiving the system and, as with internal development, is involved in and deeply experienced in the hands-on work, close to users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Développement d’un projet&#039;&#039;&#039; - Ici le point-clé est que le Product Owner vient de l’entreprise qui bénéficiera du système et, comme pour le développement interne, qui est impliqué et dispose d’une grande expérience sur le travail opérationnel, et proche des utilisateurs.&lt;br /&gt;
&lt;br /&gt;
A common variant for both internal and project development is when the system will be used by many departments. Then, a good choice is an experienced, hands-on individual from one of the major user departments who is interested in taking on the role and has political savvy.&lt;br /&gt;
&lt;br /&gt;
Une variante que l’on rencontre habituellement à la fois dans le développement à usage interne et dans le développement d’un projet est lorsque le système sera amené à être utilisé par plusieurs départements. Un bon choix est alors de trouver un individu expérimenté au niveau opérationnel provenant de l’un des départements où se trouve les utilisateurs les plus importants et qui est intéressé par prendre le rôle et qui sait naviguer au niveau politique au sein de l’organisation.&lt;br /&gt;
&lt;br /&gt;
The following figure shows the Product Owner in different organizations:&lt;br /&gt;
&lt;br /&gt;
L’illustration suivante montre le Product Owner dans différentes organisations :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure class&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/framework/who-is-the-product-owner-in-different-types-of-development.png.pagespeed.ce.yMQPDhMzEA.png|Who is the Product Owner in Different Types of Development]]&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
[https://less.works/img/framework/who-is-the-product-owner-in-different-types-of-development.png [Download PNG]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Who-is-the-po-fr.jpg.jpg|600px|Qui est le PO]]&lt;br /&gt;
&lt;br /&gt;
In all cases, a great Product Owner has a passion for the product.&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, un grand Product Owner est une personne ayant une passion pour le produit.&lt;br /&gt;
&lt;br /&gt;
When it is impossible to find the right Product Owner immediately, you can quickly start a LeSS adoption with a &#039;&#039;temporary&#039;&#039; Product Owner who understands what’s going on and can perform the mechanics of the role but is not from the business side. Let the teams complete several Sprints under the temporary Product Owner until the major kinks are worked out and — this is important — the development teams can deliver a truly ‘done’, shippable increment (or something close) every Sprint. Why? The product teams will be more likely to find and inspire the right longterm Product Owner if they can show a compelling new capability that offers very tangible business benefit. It’s terribly important that everyone understand that the temporary Product Owner is a placeholder. We often use the term “fake Product Owner” to indicate just how damaging this temporary Product Owner can be. Because the fake PO is not only not the best Product Owner but also she can cause damage trying to fill a role for which she is not qualified. She must be replaced as soon as possible to avoid the risk of creating a second-class product.&lt;br /&gt;
&lt;br /&gt;
Lorsqu’il est impossible de trouver le bon Product Owner immédiatement, vous pouvez tout de même démarrer une adoption de LeSS avec un Product Owner &#039;&#039;temporaire&#039;&#039; qui soit en mesure de comprendre ce qu’il se passe et prendre en charge les mécanismes du rôle mais qui n’est pas du côté métier. Laissons ensuite les équipes dérouler plusieurs Sprints avec le Product Owner temporaire jusqu’à ce que les problèmes majeurs soient résolus et - c’est important - jusqu’à ce que les équipes de développement puissent livrer un incrément vraiment ‘terminé’, livrable (ou quelque chose d’approchant) à chaque Sprint. Pourquoi ? Les équpes produits trouveront plus probablement et inspireront le bon Product Owner à plus long terme si elles peuvent montrer une nouvelle capacité qui soit attrayante et qui offre un bénéfice métier très tangible. Il est - terriblement - important que tout le monde comprenne que le Product Owner temporaire est un bouche-trou. Nous utilisons régulièrement le terme “faux Product Owner” pour indiquer à quel point il peut être dommageable que ce poste de Product Owner temporaire se pérénise. Non seulement parce qu’un faux PO n’est pas le meilleur Product Owner mais également parce qu’il peut provoquer des dégâts en essayant de remplir un rôle pour lequel il n’est pas qualifié. Il doit être remplacé dès que possible pour éviter le risque de voir aboutir à la création d’un produit de seconde classe.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Give Authority and Responsibility to a Real Product Owner ===&lt;br /&gt;
&lt;br /&gt;
=== Étape 3 : donner l’autorité et la responsabilité au vrai Product Owner ===&lt;br /&gt;
&lt;br /&gt;
Product Owner is not a new name for a traditional project manager who delivers a scope and date contract of work. Rather, a Product Owner must have the independent authority to choose and change content, release dates, priorities, vision, etc. Of course she collaborates with stakeholders, but a real Product Owner has final decision-making authority.&lt;br /&gt;
&lt;br /&gt;
Le terme Product Owner n’est pas un nouveau nom donné à un responsable de projet traditionnel dont le travail est de livrer le résultat d’un travail basé sur un périmètre et une date donnée contractualisés. Au lieu de cela, un Product Owner est une personne qui doit avoir l’autorité pour choisir et changer le contenu, les dates de livraisosn, les priorités, la vision, etc. Bien sûr, il collabore avec les parties prenantes, mais un vrai Product Owner est la personne qui détient l’autorité pour la prise de décision finale.&lt;br /&gt;
&lt;br /&gt;
== Five Relationships ==&lt;br /&gt;
&lt;br /&gt;
== Cinq types de relations ==&lt;br /&gt;
&lt;br /&gt;
The Product Owner needs to understand and work to improve five key relationships that are affected by LeSS adoption:&lt;br /&gt;
&lt;br /&gt;
Le Product Owner doit être en mesure de comprendre et travailler pour améliorer les cinq types de relations clés impactées par l’adoption de LeSS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure class&amp;gt;&lt;br /&gt;
[[File:https://less.works/img/framework/xproduct-owner-relationships.png.pagespeed.ic.xwDr0aHR79.webp|Product Owner Relationships]]&lt;br /&gt;
&amp;lt;figcaption&amp;gt;&lt;br /&gt;
[https://less.works/img/framework/product-owner-relationships.pdf [Download PDF]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Les différents types de relation du Product Owner.png|600px|Les différents types de relation du Product Owner]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner&amp;amp;lt;–&amp;amp;gt;Teams&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;lt;-&amp;amp;gt; équipes&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The teams are there to help the Product Owner create the best possible product for the customer. They need to know what to build next and whether or not what they have already built has hit the mark. The Product Owner needs to know what the teams need and how she can help them.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les équipes sont là pour aider le Product Owner à créer le meilleur produit possible pour le client. Elles doivent savoir quoi construire par la suite et si oui ou non ce qu’elles ont déjà réalisé a déjà fait mouche. Le Product Owner doit savoir ce dont les équipes ont besoin et comment il peut être en mesure de les aider.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner&amp;amp;lt;–&amp;amp;gt;Customers&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;lt;-&amp;amp;gt; Clients&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Product Owner and teams are trying to create the best possible product for the customer. The customer needs to know when they will have features they care about, and perhaps the reasoning behind the priorities. Involve them as much as possible by being transparent. The Product Owner needs to learn their real goals or problems with them (or envision something beyond their vision) and collect the information that will help him prioritize well.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Le Product Owner et les équipes essayent de créer le meilleur produit possible pour le client. Le client a besoin de savoir lorsqu’il aura les fonctionnalités qu’il souhaite, et peut être aussi quelles sont les raisons sous-jacentes aux priorités. Impliquez-les le plus possible en étant transparent. Le Product Owner doit apprendre leurs vrais objectifs ou leurs vrais problèmes avec eux (ou prévoir quelque chose au-delà de leur vision) et collecter l’information qui les aidera à bien prioriser.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Teams&amp;amp;lt;–&amp;amp;gt;Customers&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;équipes &amp;amp;lt;-&amp;amp;gt; clients&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The teams are trying to create the best possible product for the customer. They need to know the context for features and have detailed domain knowledge. Ideally, teams co-create solutions directly with customers by grasping the customers’ essential (rather than superficial) goals and problems. Teams need to confirm with customers that they fully understand the requirements they are clarifying together.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les équipes essayent de créer le meilleur produit pour le client. Elles doivent connaître le contexte des fonctionnalités et avoir une connaissance détaillée du domaine. Idéalement, les équipes co-créent les solutions directement avec les clients en capturant l’essence même (plutôt que le seul côté superficiel) des objectifs et des problèmes des clients. Les équipes doivent confirmer avec les clients qu’elles ont bien compris les exigences clarifiées ensemble.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner&amp;amp;lt;–&amp;amp;gt;Higher Management&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;lt;-&amp;amp;gt; encadrement plus haut dans la hiérarchie&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Higher management beyond the product group (portfolio managers, C-level executives, etc.) should view the Product Owner as having the final accountability and responsibility for product success. She is responsible for making the development status visible and realizing higher management’s (perhaps implicit) mandate to optimize desired impacts (e.g., ROI and market share). The Product Owner, with support from Scrum Masters, engages higher management’s help to improve the organizational design.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les supérieurs hiérarchiques au-dessus du groupe produit (responsables portefeuilles, cadres dirigeants, etc.) devraient considérer le Product Owner comme étant la personne qui a la responsabilité finale quant à la réussite du produit et qui doit en rendre compte. Il est responsable pour rendre le statut du développement visible et concrétiser le mandat des supérieurs hiérarchiques (qui est peut être implicite) pour optimiser les impacts souhaités (par exemple, le ROI et la part de marché). Le Product Owner, avec le support des Scrum Masters implique ces supérieurs hiérarchiques dans l’aide qu’ils peuvent apporter pour améliorer la structure de l’organisation.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner&amp;amp;lt;-&amp;amp;gt;Scrum Masters&#039;&#039;&#039;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;Product Owner &amp;amp;lt;-&amp;amp;gt; Scrum Masters&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The relationships above are directly related to “product ownership,” but this one is different. It relates to Product Owner knowledge and behavior. The Scrum Masters need to know the Product Owner’s concerns, questions, and obstacles so they can help. A good Scrum Master can be a friendly ear or a shoulder to cry on. Scrum Masters educate and feed back so Product Owners can adapt.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Les relations décrites ci-dessus font partie intégrante de l’art d’être Product Owner (ou “product ownership”), mais celle-ci est différente. Elle concerne les connaissances et le comportement du Product Owner. Les Scrum Masters doivent connaître les préoccupations, les questions et les obstacles du Product Owner afin d’être en mesure de l’aider. Un bon Scrum Master doit être une oreille bienveillante ou une épaule amicale sur laquelle pleurer. Les Scrum Masters éduquent et donnent des retours d’informations au Product Owner afin qu’il puisse s’adapter en conséquence.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LeSS Meetings ==&lt;br /&gt;
&lt;br /&gt;
== Les réunions LeSS ==&lt;br /&gt;
&lt;br /&gt;
When we introduce LeSS, a frequent question is, “How is one Product Owner going to manage all of those meetings with all of those teams?” Fortunately, the concern behind that question is based on a misunderstanding. The one Product Owner in LeSS only attends single meetings even though there are multiple teams. And the number of team members at those single meetings is manageable. If there are just two teams, everyone can effectively attend and participate. If there are many teams, only two representatives from each team may attend.&lt;br /&gt;
&lt;br /&gt;
Lorsque nous présentons LeSS, une question qui revient souvent est : “Comment un seul Product Owner peut-il gérer toutes ces réunions avec toutes ces équipes ?”. Fort heureusement, l’inquiétude qui se cache derrière cette question est qu’elle est basée en fait sur un malentendu. Le seul et unique Product Owner en LeSS assiste uniquement à des réunions individuelles même si c’est avec plusieurs équipes. Et le nombre d’équipiers dans ces réunions est gérable. S’il y a seulement deux équipes, tout le monde peut effectivement être présent et participer. S’il y a plusieurs équipes, deux représentants seulement de chaque équipe peut être présent.&lt;br /&gt;
&lt;br /&gt;
What LeSS meetings does the Product Owner attend and what is their average duration in a typical two-week Sprint?&lt;br /&gt;
&lt;br /&gt;
Quelles sont les réunions LeSS auxquelles un Product Owner assiste et quelles sont les durées moyennes dans un Sprint type de deux semaines ?&lt;br /&gt;
&lt;br /&gt;
* [https://less.works/less/framework/sprint-planning-one.html Sprint Planning One] - 1 hour.&lt;br /&gt;
* [https://less.works/less/framework/product-backlog-refinement.html Overall Product Backlog Refinement (PBR)] - 4 hours&lt;br /&gt;
* [https://less.works/less/framework/sprint-review.html Sprint Review] - 2 hours.&lt;br /&gt;
* [https://less.works/less/framework/overall-retrospective.html Overall Retrospective] - 1.5 hours.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
* [http://www.les-traducteurs-agiles.org/2017/03/09/less-la-planification-du-sprint-1ere-partie.html La Planification du Sprint (1ère partie)] - 1 heure.&lt;br /&gt;
* [http://www.les-traducteurs-agiles.org/2018/01/26/less-l-affinage-du-backlog-produit.html L’Affinage du Backlog Produit] - 4 heures&lt;br /&gt;
* [http://www.les-traducteurs-agiles.org/2017/08/30/less-la-revue-de-sprint.html La Revue de Sprint] - 2 heures.&lt;br /&gt;
* [http://www.les-traducteurs-agiles.org/2017/04/13/less-la-retrospective-globale.html La Rétrospective Globale] - 1.5 heures.&lt;br /&gt;
&lt;br /&gt;
So the total time spent in LeSS events is, on average, about eight hours in a two-week Sprint.&lt;br /&gt;
&lt;br /&gt;
Donc le temps total passé dans les évènements LeSS est, en moyenne, d’environ huit heures dans un Sprint de deux semaines.&lt;br /&gt;
&lt;br /&gt;
The Product Owner does not attend the team-specific meetings: [https://less.works/less/framework/sprint-planning-two.html Sprint Planning Two], [https://less.works/less/framework/daily-scrum.html Daily Scrums], [https://less.works/less/framework/product-backlog-refinement.html team PBRs], [https://less.works/less/framework/retrospective.html team Retrospectives].&lt;br /&gt;
&lt;br /&gt;
Le Product Owner ne participe pas aux réunions spécifiques d’équipe que sont : [http://www.les-traducteurs-agiles.org/2017/03/10/less-la-planification-du-sprint-2eme-partie.html La Planification du Sprint (2ème partie)], [http://www.les-traducteurs-agiles.org/2017/04/17/less-la-melee-quotidienne.html La Mêlée Quotidienne], [http://www.les-traducteurs-agiles.org/2018/01/26/less-l-affinage-du-backlog-produit.html les affinages de backlog faits par l’équipe], [http://www.les-traducteurs-agiles.org/2017/04/15/less-la-retrospective.html les rétrospectives d’équipe].&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Who-is-the-po-fr.jpg.jpg&amp;diff=11252</id>
		<title>Fichier:Who-is-the-po-fr.jpg.jpg</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Who-is-the-po-fr.jpg.jpg&amp;diff=11252"/>
		<updated>2019-06-23T15:47:58Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PO&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Les_diff%C3%A9rents_types_de_relation_du_Product_Owner.png&amp;diff=11251</id>
		<title>Fichier:Les différents types de relation du Product Owner.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Les_diff%C3%A9rents_types_de_relation_du_Product_Owner.png&amp;diff=11251"/>
		<updated>2019-06-23T15:38:23Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les différents types de relation du Product Owner&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=11250</id>
		<title>Catégorie:Portail LeSS</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Cat%C3%A9gorie:Portail_LeSS&amp;diff=11250"/>
		<updated>2019-06-23T15:09:49Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;addthis /&amp;gt;&lt;br /&gt;
[[Catégorie: Portails Thématiques]]&lt;br /&gt;
[[Category: Agilité à grande échelle]]&lt;br /&gt;
[[Fichier:LeSS-logo 72.png]] À la découverte de LeSS, ce framework de mise à l&#039;échelle de l&#039;élégance de Scrum.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LeSS-overview-diagram_fr.png|LeSS-overview-diagram_fr.png]]&amp;lt;br /&amp;gt; [http://less.works/less/framework/introduction.html introduction]&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;Depuis 2005, nous avons travaillé avec des clients pour mettre en oeuvre le framework LeSS (Large-Scale Scrum) de mise à l&#039;échelle du développement Scrum, agile et lean pour les groupes produit de grande taille. Nous partageons cette connaissance à travers LeSS pour que, vous aussi, vous puissiez réussir lorsque vous passez à l&#039;échelle.&amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;lt;br /&amp;gt;  - Craig Larman &amp;amp; Bas Vodde&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color: #ffffff; font-size: 18.2px&amp;quot;&amp;gt;Articles thématiques&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Framework|Portail Framework LeSS (fr)] - 95%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/framework/introduction.html Introduction à LeSS]&lt;br /&gt;
** [[Pourquoi%20LeSS%20%3F|Pourquoi LeSS (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Produit|Le Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Product%20Owner|Le Product Owner (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20backlog%20du%20produit|Le Backlog du Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Les%20%C3%89quipes|Les Équipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Sprint|Le Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%281%C3%A8re%20partie%29|La Planification du Sprint (1ère partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Planification%20du%20Sprint%20%282%C3%A8me%20partie%29|La Planification du Sprint (2ème partie) (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Backlog%20du%20Sprint|Le Backlog du Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20M%C3%AAl%C3%A9e%20Quotidienne|La Mêlée Quotidienne (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coordination%20%26%20Int%C3%A9gration|Coordination &amp;amp; Intégration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Incr%C3%A9ment%20Produit%20Potentiellement%20D%C3%A9ployable|L&#039;Incrément Produit Potentiellement Déployable (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20D%C3%A9finition%20du%20Fini|La Définition du Fini (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20Revue%20de%20Sprint|La Revue de Sprint (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective|La Rétrospective (fr)]]&lt;br /&gt;
** [[LeSS%20-%20La%20R%C3%A9trospective%20Globale|La Rétrospective Globale (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20du%20Backlog%20Produit|L&#039;Affinage du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20L%27Affinage%20Initial%20du%20Backlog%20Produit|L&#039;Affinage Initial du Backlog Produit (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20ScrumMaster|Le ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Principes|Portail Principes (fr)] - 63%]]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Pr%C3%A9sentation%20des%20principes|Présentation des principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Scrum%20%C3%A0%20grande%20%C3%A9chelle%20reste%20du%20Scrum|Scrum à grande échelle reste du Scrum (fr)]]&lt;br /&gt;
** [[Less_-_Plus_avec_LeSS|Plus avec LeSS (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/lean-thinking.html Pensée Lean]&lt;br /&gt;
** [http://less.works/less/principles/systems_thinking.html Approche systémique]&lt;br /&gt;
** [[LeSS%20-%20Contr%C3%B4le%20du%20processus%20empirique|Contrôle du processus empirique (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Transparence|Transparence (fr)]]&lt;br /&gt;
** [http://less.works/less/principles/continuous-improvement-towards-perfection.html Amélioration continue vers la perfection]&lt;br /&gt;
** [[Less_-_Centré_client|Centré client (fr)]]&lt;br /&gt;
** [[Less_-_Focus_sur_le_produit_global|Focus sur le produit global (fr)]]&lt;br /&gt;
** [https://less.works/less/principles/queueing_theory.html Théorie des files d&#039;attente]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Structure|Portail Structure (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Equipes|Equipes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Organisation%20en%20fonction%20de%20la%20valeur%20client|Organisation en fonction de la valeur client (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Equipes%20Feature|Equipes Feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle|Structure organisationnelle (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Communaut%C3%A9s|Communautés (fr)]]&lt;br /&gt;
** [[LeSS%20-%20ScrumMaster|ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Excellence%20technique|Portail Excellence Technique (fr)]] - 30%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Sp%C3%A9cifications%20par%20l%27exemple|Spécifications par l&#039;exemple (fr)]]&lt;br /&gt;
** [[Less - Intégration continue|Intégration Continue (fr)]]&lt;br /&gt;
** [https://less.works/less/technical-excellence/continuous-delivery.html Livraison Continue]&lt;br /&gt;
** [[LeSS - Tests d&#039;Acceptation|Tests d&#039;Acceptation (fr)]]&lt;br /&gt;
** [http://less.works/less/technical-excellence/architecture-design.html Architecture &amp;amp; Conception]&lt;br /&gt;
** [http://less.works/less/technical-excellence/clean-code.html Ecrire du Code Propre]&lt;br /&gt;
** [http://less.works/less/technical-excellence/unit-testing.html Tests unitaires]&lt;br /&gt;
** [http://less.works/less/technical-excellence/test-driven-development.html Développement piloté par les tests]&lt;br /&gt;
** [http://less.works/less/technical-excellence/thinking-about-testing.html Réflexions à propos des tests]&lt;br /&gt;
** [http://less.works/less/technical-excellence/test-automation.html Automatisation des tests]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Management|Portail Management (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20R%C3%B4le%20du%20Manager|Rôle du Manager (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Enseigner%20la%20r%C3%A9solution%20de%20probl%C3%A8me|Enseigner la résolution de problème (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Aller%20Voir|Aller Voir (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Auto-gestion|Auto-gestion (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Service%20d%27am%C3%A9lioration|Service d&#039;amélioration (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Le%20Manager%20en%20tant%20que%20ScrumMaster|Le Manager en tant que ScrumMaster (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20LeSS%20Huge|Portail Less Huge (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Domaines%20d%27exigences|Domaines d&#039;Exigences (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Backlog%20Produit%20de%20Domaine|Backlog Produit de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Product%20Owner%20de%20Domaine|Product Owner de Domaine (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Structure%20organisationnelle%20pour%20LeSS%20Huge|Structure organisationnelle pour LeSS Huge (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;[[LeSS%20-%20Portail%20Adoption|Portail Adoption (fr)]] - 100%&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [[LeSS%20-%20Les%20trois%20principes|Trois principes (fr)]]&lt;br /&gt;
** [[LeSS%20-%20D%C3%A9marrer|Démarrer (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Coaching|Coaching (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Am%C3%A9lioration%20continue|Amélioration Continue (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Sch%C3%A9ma%20d%27adoption%20des%20%C3%A9quipes%20feature|Schéma d&#039;adoption des équipes feature (fr)]]&lt;br /&gt;
** [[LeSS%20-%20Rester%20sain%20d%27esprit|Rester sain d&#039;esprit (fr)]]&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 15.6px&amp;quot;&amp;gt;LeSS Test&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** [http://less.works/less/test/pre-course.html LeSS Test]&lt;br /&gt;
** [http://less.works/less/test/scrum.html Scrum Test]&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=LeSS_-_Tests_d%27Acceptation&amp;diff=10570</id>
		<title>LeSS - Tests d&#039;Acceptation</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=LeSS_-_Tests_d%27Acceptation&amp;diff=10570"/>
		<updated>2019-01-08T22:11:36Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : Page créée avec « Auteur : The LeSS Company B.V.  Source : [https://less.works/less/technical-excellence/acceptance-testing.html Acceptance Testing]  &amp;lt;hr/&amp;gt;  Traducteur : Nicolas Mereaux  Re... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auteur : The LeSS Company B.V.&lt;br /&gt;
&lt;br /&gt;
Source : [https://less.works/less/technical-excellence/acceptance-testing.html Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Traducteur : Nicolas Mereaux&lt;br /&gt;
&lt;br /&gt;
Relecture : Fabrice Aimetti&lt;br /&gt;
&lt;br /&gt;
Date : /01/2018&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
Traduction :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don’t confusing acceptance and user-acceptance test ==&lt;br /&gt;
&lt;br /&gt;
== Ne confondez pas tests d&#039;acceptation et tests d&#039;acceptation utilisateur ==&lt;br /&gt;
&lt;br /&gt;
In the ideal situation, acceptance test and user-acceptance test are the same, but… Agile development literature uses the term “acceptance tests,” where we use the term “customer-facing tests.” However, in traditional development, “acceptance test” often means “user-acceptance test,” which might be different. Avoid misunderstandings.&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;idéal, les tests d&#039;acceptation et les tests d&#039;acceptation utilisateur sont identiques, mais … la littérature du développement Agile utilise le terme de « tests d&#039;acceptation » là où nous utilisons le terme de « tests orientés utilisateur ». Toutefois, en développement traditionnel, les « tests d&#039;acceptation » veulent souvent dire « tests d&#039;acceptation utilisateur » ce qui pourrait s&#039;avérer différents. Évitons donc les malentendus.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Less-xacceptance vs uat-en.png|vignette|UAT is a subset of acceptance tests]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Less-xacceptance vs uat-fr.png|vignette|Les tests d&#039;acceptation utilisateur sont un sous-ensemble des tests d&#039;acceptation]]&lt;br /&gt;
&lt;br /&gt;
Diagram 1: UAT is a subset of acceptance tests&lt;br /&gt;
&lt;br /&gt;
Illustration 1 : Les tests d&#039;acceptation utilisateur sont un sous-ensemble des tests d&#039;acceptation&lt;br /&gt;
&lt;br /&gt;
The above figure expresses the relationship in a diagram. User-acceptance test (UAT) is a part of acceptance testing in agile development. But acceptance test might also include non-UAT tests such as traditional functional or system test created by the team.&lt;br /&gt;
&lt;br /&gt;
L&#039;illustration ci-dessus montre ce qui relie ces 2 types de tests. Les tests d&#039;acceptation utilisateur (TAU) ne sont qu&#039;une partie des tests d&#039;acceptation en développement agile. Mais les tests d&#039;acceptation peuvent aussi inclure des tests qui ne soient pas des tests d&#039;acceptations utilisateur tel que les traditionnels tests fonctionnels ou les tests systèmes faits par l&#039;équipe.&lt;br /&gt;
&lt;br /&gt;
Ideally, all the acceptance testing—including UAT—is done within the iteration. However, getting the UAT in the iteration may be difficult because it requires active end-user involvement and not all customers are ready for that. In that case, UAT is excluded from the Definition of Done until the product group improves their relationship with the customer so that they can expand their Definition of Done.&lt;br /&gt;
&lt;br /&gt;
Idéalement, tous les tests d&#039;acceptation - y compris les tests d&#039;acceptation utilisateurs - sont faits dans l&#039;itération. Toutefois, faire les tests d&#039;acceptation utilisateur dans l&#039;itération peut s&#039;avérer difficile parce que cela demande une implication active de l&#039;utilisateur final et tous les utilisateurs finaux ne sont pas prêts à ça. Dans ce cas, les tests d&#039;acceptation utilisateur sont exclus de la Définition du Fini jusqu&#039;à ce que le groupe produit améliore sa relation avec l&#039;utilisateur final afin qu&#039;il puisse étendre sa Définition du Fini.&lt;br /&gt;
&lt;br /&gt;
== Show tests in Sprint Review ==&lt;br /&gt;
&lt;br /&gt;
== Montrer les tests en Revue de Sprint ==&lt;br /&gt;
&lt;br /&gt;
In a [https://less.works/less/framework/sprint-review.html Sprint Review], the team demonstrates visible progress to the Product Owner by showing the output of the iteration.&lt;br /&gt;
&lt;br /&gt;
Lors d&#039;une [[LeSS - La Revue de Sprint|Revue de Sprint]], l&#039;équipe montre des avancées visibles au Product Owner en montrant ce qui a été produit pendant l&#039;itération.&lt;br /&gt;
&lt;br /&gt;
We worked with some groups that defined the demo steps during the Sprint planning. The team would spend an inordinate amount of time in demo preparation. A complete waste.&lt;br /&gt;
&lt;br /&gt;
Certains des groupes avec lesquels nous avons travaillé préparaient à l&#039;avance les différentes étapes pendant la Planification de Sprint. Dans ces cas-là, l&#039;équipe passe un temps démesuré en préparation de démo. Un véritable gâchis.&lt;br /&gt;
&lt;br /&gt;
During [https://less.works/less/framework/sprint-planning-one.html Sprint Planning], an alternative is to define the examples that need to pass and show the progress by using these tests in the Sprint Review.&lt;br /&gt;
&lt;br /&gt;
Lors de la [[LeSS - La Planification du Sprint (1ère partie)|Planification du Sprint]], une alternative possible est de définir les exemples passants et montrer l&#039;avancement des travaux en utilisant ces tests lors de la Revue du Sprint.&lt;br /&gt;
&lt;br /&gt;
== Use acceptance test-driven development ==&lt;br /&gt;
&lt;br /&gt;
== Utiliser le développement piloté par les tests d&#039;acceptation ==&lt;br /&gt;
&lt;br /&gt;
[https://less.works/less/technical-excellence/specification-by-example.html Acceptance test-driven development (A-TDD) or Specification by Example] is a collaborative requirements discovery approach where examples and automatable tests are used for specifying requirements—creating executable specifications. These are created with the team, Product Owner, and other stakeholders in requirements workshops.&lt;br /&gt;
&lt;br /&gt;
[[LeSS - Spécifications par l&#039;exemple|Le développment piloté par les tests d&#039;acceptation (A-TDD) ou Spécifications par l&#039;exemple]] est une approche collaborative de découverte des exigences dans laquelle des exemples et des tests automatisés sont utilisés pour spécifier les exigences, créant ainsi des spécifications exécutables. Elles sont créées conjointement par l&#039;équipe, le Product Owner, et les autres parties prenantes lors d&#039;ateliers d&#039;exigences.&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
	<entry>
		<id>https://wikiagile.coach/index.php?title=Fichier:Less-xacceptance_vs_uat-fr.png&amp;diff=10569</id>
		<title>Fichier:Less-xacceptance vs uat-fr.png</title>
		<link rel="alternate" type="text/html" href="https://wikiagile.coach/index.php?title=Fichier:Less-xacceptance_vs_uat-fr.png&amp;diff=10569"/>
		<updated>2019-01-08T21:59:56Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Mereaux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;schéma tests d&#039;acceptation en français&lt;/div&gt;</summary>
		<author><name>Nicolas Mereaux</name></author>
	</entry>
</feed>