Le blog d'Archiloque

“Décider dans l’incertitude” appliqué au développement logiciel

Décider dans l’incertitude est un exposé de la doctrine de commandement de l’armée française par Vincent Desportes, ancien directeur de l’École de Guerre.

J’ai été étonné que de nombreux éléments se rapprochent du monde du développement logiciel.

Je vais tenter d’éviter le syndrome « dresser son chat grâce à Sun Tzu » : je ne prétend pas que la pensée stratégique militaire vous donnera la clé pour réussir vos projets.

Même si les métaphores guerrières ont toujours du succès il ne faut pas oublier que développer un logiciel ça n’est pas faire la guerre  : résoudre un bug dans du code ça n’est pas descendre dans une tranchée.

Plus simplement, certains développements du livre m’ont été utiles pour identifier des phénomènes qui peuvent passer inaperçus, ou remettre en perspectives des difficultés récurrentes. Par contre ça ne veut pas dire qu’il faut appliquer ces idées car les militaires le font.

La contingence

Les militaires, comme les architectes informatiques ou les chefs de projets affectionnent les systèmes déterministes et prévisibles : dans la situation A il suffit de faire B.

Malheureusement cette approche ne fonctionne que pour les problèmes simples.

Dans le cas de systèmes complexes seules peuvent fonctionner des solutions contingentes à chaque cas particulier.

Il faut donc se refuser à l’envie des solutions toutes faites et concentrer son effort sur le fait de dégager des principes de base sur lesquelles les décisions pourront s’appuyer (tout en se laissant la liberté d’enfreindre ces principes quand la situation l’exige) et sur le fait d’avoir des personnes capables de les mettre en œuvre.

Imperfection de l’information

L’information dont on dispose est imparfaite : on connaît mal notre situation présente et il est difficile de prévoir le futur.

C’est la notion de « brouillard de guerre ».

De ce fait, prendre des décisions est difficile.

Contrairement à ce dont on pourrait rêver, augmenter la quantité d’information ne permet pas toujours d’améliorer les choses.

Permettre à un·e général·e de voir en direct sur un écran ce que capte la caméra montée sur le casque d’un éclaireur n’a pas transformé la guerre.

Au contraire, on risque de se noyer dans les informations contradictoires, de dépenser son énergie à les traiter, ou de perdre du temps et de laisser passer le moment favorable.

Diriger demande donc une capacité de synthèse permettant de saisir rapidement l’essence d’une situation au milieu d’une masse d’informations.

Décider dans l’incertitude

De ce fait, un·e chef·fe doit savoir décider dans l’incertitude, sans se reposer sur des solutions toutes faites.

Autrement dit il faut savoir qu’on ne sait et qu’on ne saura pas tout, mais tout de même faire des choix qu’on sait risqués, plutôt que de miser sur la sécurité qui mène généralement à l’échec.

Le meilleur moyen de formation à cela est l’expérience du passé, pas comme un livre de recettes mais comme source d’inspiration, et il faut donc beaucoup étudier.

Cela veut aussi dire que le système doit savoir identifier et miser sur ce type de personnes, alors même que l’histoire enseigne qu’elles ne sont pas toujours les plus dociles.

Initiative aux personnes du terrain

Face à une situation complexe il faut faire confiance aux personnes qui sont sur le terrain : elles possèdent la meilleure capacité à s’adapter aux difficultés et à exploiter les opportunités.

Il faut donc leur laisser l’initiative en refusant l’envie de tout piloter d’en haut.

Trois prérequis pour cela :

  • une stratégie et des ordres clairs qui précisent le quoi et le pourquoi permettant aux échelons inférieurs de comprendre ce qu’on attend d’eux et leur laisse la main sur le comment où ils sont le plus pertinents ;

  • une doctrine, c’est-à-dire des manières de faire et des interdits partagés, pour que les initiatives aillent dans le même sens, et éviter certaines erreurs ;

  • de la confiance, car prendre une initiative c’est prendre un risque, si une initiative qui échoue donne lieu à un blâme les personnes apprendront à s’en tenir aux ordres.

Adaptabilité

Les technologies progressent, les formations et les pratiques s’améliorent, mais les choses continuent à ne pas se dérouler au rythme prévu.

La stratégie doit l’accepter et le prendre en compte : un plan qui ne fonctionne que si tout se déroule sans accroc ne vaut rien. Plus une stratégie est simple et permet des ajustements et plus elle a de chances d’aboutir.

Le·a stratège doit accepter les limites de son pouvoir en n’ayant qu’une influence lointaine sur ce qui est fait.

De même des équipes autonomes et généralistes permettent de plus facilement adapter sa stratégie, à l’inverse d’une spécialisation qui peut être plus performante dans certaines situations mais plus fragile en cas de changement de plan.

Pour finir l’adaptabilité demande d’avoir des réserves : pour répondre à l’imprévu le mieux est d’avoir prévu des resources et des personnes facilement disponibles, plutôt que de devoir aller les chercher alors qu’elles sont déjà utiles.

Place de la planification

Suivre un plan détaillé ne sert à rien, mais planifier est utile.

Planifier permet de faire partager des manières de faire et d’entraîner les personnes à travailler ensemble dans un environnement simplifié.

Inutile en revanche de faire des plans trop détaillés, ou de prévoir tous les cas possibles : l’expérience enseigne que ces plans ne seront pas suivis.

Ne pas faire le plan qui nous arrange

La dernière tentation est celle de faire les plans qui nous arrange, en s’appuyant trop sur nos forces, ou en préférant se masquer nos faiblesses.

S’appuyer sur les domaines où on se sait performant est naturel, mais le faire au détriment de la réalité n’est pas une bonne idée.

Les grosses structures comme les USA ont ainsi tendance à miser sur des stratégies où c’est le nombre qui fait la différence, les systèmes ayant une forte expertise technologique miseront sur leurs outils.