Articles

Le travail est le travail

Dans lequel les rendements diminuent.

12 Jan 2020

Chaque fois que j’ai écrit ou parlé de la conception organisationnelle, je l’ai regretté.Il y a quelque chose à propos de la prise de position sur elle qui parvient à me prouver que j’ai tort quelques années plus tard. Mais j’y ai à nouveau longuement réfléchi, et voici ce que j’en ai tiré. Attachez vos ceintures.

A un moment donné, toute organisation réalise qu’elle ralentit. Les fonctionnalités sont plus longues à lancer, les gens passent de plus en plus de temps en réunion, et tout le monde panique à propos de l’estimation et de la planification. Si nous avons intériorisé les conneries essentialistes du genre « les joueurs B embauchent les joueurs C », peut-être que nous devenons nerveux à propos de la barre et de l’embauche. Si nous sommes anxieux et incertains, nous pourrions devenir religieux à propos d’Agile, Scrum ou autre. Si nous sommes enclins aux envolées modernistes, nous pourrions décider de dépenser nos jetons d’innovation en essayant de perturber l’industrie vieille de 200 000 ans qui consiste à faire travailler les humains ensemble. Si nous sommes du genre à faire nos huit coups et à heurter la barrière, nous considérons que c’est le prix à payer pour réussir.

Ces approches donnent rarement des résultats.

Notre sommeil dogmatique

La plupart des explications du succès ou de l’échec d’une organisation sont merdiques. Les comptes émiques – c’est-à-dire ceux qui proviennent de l’organisation – sont limités aux concepts et aux récits qui existent au sein de l’organisation. Ils peuvent servir structurellement de récits personnels et favoriser un sentiment d’identité et d’objectif au sein du groupe, mais parce qu’ils proviennent de l’équivalent épistémologique d’un puits de gravité, leur pouvoir explicatif en dehors de cette organisation est généralement terrible.

Si nous adoptons la perspective etique – c’est-à-dire de l’extérieur de l’organisation – nous pouvons voir que les explications émiques du succès ou de l’échec d’une organisation ont des contrefactuels facilement disponibles dans d’autres organisations. Si les organisations agiles, plates, les revues de code, les monorepos, les bureaux ouverts, les systèmes de types fantaisistes, etc. étaient réellement les facteurs de causalité qu’ils sont censés être, alors pourquoi tant d’organisations adoptent-elles ces pratiques sans succès ? Pourquoi d’autres organisations prospères n’adoptent-elles pas ces pratiques ? Comment faire la différence entre des histoires de type cum hoc, ergo prompter hocjust so et des facteurs de causalité réels ?

Plus important encore, pouvons-nous déterminer la supervénience d’un certain ensemble de facteurs sur la performance organisationnelle, non seulement dans un contexte particulier mais dans toutes les organisations possibles ? En d’autres termes, existe-t-il des vérités nécessaires, a priori, sur la performance organisationnelle ?

Il se trouve qu’il y en a.

Si vous louchez suffisamment, une organisation qui travaille est tout simplement un processus parallèle, dynamique, distribué et incroyablement complexe. Nous disposons de très bons outils pour comprendre les grandes lignes de leur fonctionnement, depuis au moins le commentaire de Manabrea à Babbage en 1842 concernant sa machine analytique. Maintenant, je ne prétends pas avoir développé une psychohistoire et, étant donné la difficulté de prédire le comportement de systèmes dynamiques, même simples, un modèle entièrement prédictif du succès organisationnel semble certainement impossible.

Mais, comme Kant tentant de dériver les conditions préalables nécessaires de l’expérience subjective dans la Critique de la raison pure, nous pouvons esquisser les limites de ce qu’une organisation est capable de faire et la dynamique de cela à mesure qu’elle se développe. De la même manière que la connaissance a priori que dix livres pèsent plus que cinq livres informe sur la quantité de merde que nous pouvons espérer faire entrer dans un sac,la modélisation des organisations comme des processus parallèles peut informer la façon dont nous les concevons.

Ce qui se passe à l’intérieur de ces limites est une question d’exécution et d’effort ; ce qui se passe à l’extérieur de ces limites est impossible.

Le plafond est bas

La capacité de travail d’une organisation s’échelonne, au plus, linéairement à mesure que de nouveaux membres sont ajoutés.Chaque nouveau membre d’une organisation ajoute un nombre constant d’heures de travail possibles au total des heures de travail possibles des employés existants de l’entreprise. La loi d’Amdahl stipule qu’étant donné une tâche fixe, une solution parallèle utilisant NNN processeurs s’exécutera plus rapidement qu’une solution séquentielle par au plus un facteur de NNN.

A mesure que des ressources parallèles sont ajoutées, le temps total passé dans la partie parallélisable de la tâche s’amortit jusqu’à zéro ; en revanche, le temps total passé dans la partie séquentielle de la tâche ne descend jamais en dessous d’une valeur plancher. Ceci est aussi vrai pour un groupe de personnes essayant d’écrire un logiciel que pour un groupe de CPU essayant de modéliser le comportement des étoiles dans la galaxie. Notre intuition nous dit que les grandes organisations présentent des comportements superlinéaires, mais cela ne peut littéralement pas être le cas si le recrutement est la seule variable de l’équation. Par conséquent, notre seul espoir de productivité superlinéaire réside dans la modification de la tâche exécutée. Heureusement, la capacité de travail n’est pas la même chose que la productivité.

A mesure qu’une organisation embauche plus d’employés, le travail sur les améliorations de la productivité doit être une priorité constante. Des outils, des formations et des services internes doivent être développés et mis en place pour s’assurer que tous les membres sont capables de travailler sur des problèmes dont l’impact ne cesse de croître. La poursuite incessante des multiplicateurs de force est la seule voie possible vers des améliorations superlinéaires de la productivité à mesure qu’une organisation se développe.

Enfin, il faut souligner que cette limite linéaire de la capacité de travail est un plafond, pas un plancher.On ne peut pas faire mieux que linéaire, mais on peut certainement faire pire. Il existe de nombreux autres facteurs qui agissent comme un frein sur la capacité de travail, et les améliorations de la productivité à l’échelle de l’organisation sont essentielles pour les atténuer.

Le plancher est la lave

Les coûts de contention augmentent de façon superlinéaire à mesure que de nouveaux membres sont ajoutés. Les solutions parallèles aux tâches sont rarement parfaitement concurrentes (et en effet, de telles tâches sont à juste titre appelées « embarrassingly parallel »), et nécessitent souvent quelques sections critiques séquentielles. La file d’UCP ou de personnes attendant d’entrer dans une section critique peut être modélisée comme une file d’attente, ce qui nous permet d’utiliser la théorie de la file d’attente pour comprendre comment le temps de cycle de la file d’attente change au fur et à mesure que sa taille augmente. Si nous modélisons la file d’attente d’une section séquentielle comme une file d’attente G/G/1G/G/1G/G/1, c’est-à-dire sans faire d’affirmation sur le processus d’arrivée ou la distribution du temps de service, mais en supposant un seul serveur de file d’attente (c’est-à-dire qu’un seul CPU ou une seule personne peut tenir la file d’attente), nous pouvons utiliser la théorie des files d’attente. un seul CPU ou une seule personne peut détenir le verrou), nous arrivons à la formule de Kingman pour le temps d’attente moyen :

E(Wq)≈(ρ1-ρ)(ca2+cs22)τ\mathbb E(W_q) \approx \left( \frac{\rho}{1-\rho} \right) \left( \frac{c_a^2+c_s^2}{2}\right) \tauE(Wq)≈(1-ρρ)(2ca2+cs2)τ

Notamment, le temps d’attente d’une file d’attente augmente de manière non linéaire par rapport à ρ\rhoρ (utilisation) et de manière quadratique par rapport à cac_aca (le coefficient de variation des arrivées) et csc_scs (lecoefficient de variation des temps de service). (C’est la forme quantifiée de l’intuition selon laquelle les files d’attente sont soit vides, soit débordantes.)

La non-linéarité de ce phénomène devrait nous faire réfléchir, car augmenter le nombre de personnes qui se disputent une ressource partagée revient à augmenter ρ\rhoρ. Si la contention sur ces ressources n’est pas gérée, la croissance organisationnelle peut entraîner des augmentations catastrophiques du temps d’attente. À un moment donné, l’ajout de nouveaux membres peut entraîner une diminution de la productivité globale de l’organisation au lieu d’une augmentation, car l’augmentation du temps d’attente due à la contention est plus importante que l’augmentation de la capacité de travail. (C’est la version organisationnelle des pics de latence que nous observons lorsque les serveurs sont surchargés.)

Ces ressources partagées ne sont pas nécessairement des choses physiques, comme des salles de bain ou des imprimantes ; elles peuvent être numériques, comme des fichiers dans un dépôt de code source ou des tickets dans un bug tracker, ou organisationnelles, comme des revues de code ou des affectations de travail. Comme pour l’écriture d’applications hautement concurrentes, la mise en place d’organisations hautement performantes nécessite une recherche minutieuse et continue de ressources partagées, et le développement de stratégies explicites pour atténuer leur impact sur la performance.

Une stratégie couramment appliquée mais rarement couronnée de succès consiste à utiliser des ressources externes – par exemple, des consultants, des agences, l’augmentation du personnel – pour contourner la contention sur les ressources internes. Si les consultants peuvent effectivement agir rapidement dans un environnement à faible contention, la réintégration de leur produit de travail dans les ressources contestées a souvent pour effet de gonfler les csc_scs (la variation des temps de service, ou la durée de maintien d’une section critique). Cela produit un pic quadratique dans les temps d’attente, ce qui augmente l’utilisation qui, à son tour, produit un pic superlinéaire dans les temps d’attente (la théorie des files d’attente est une maîtresse sévère), ajouter des salles de bain au fur et à mesure que nous ajoutons des employés) et le développement d’heuristiques apatrides pour coordonner l’accès aux ressources partagées (par exemple, regrouper les employés en équipes).

Comme pour les applications fortement stratifiées, plus la distance entre ceux qui conçoivent l’organisation et le travail effectué est grande, plus le risque de points de contention non gérés est important. Les méthodes d’organisation descendantes peuvent conduire à des subdivisions qui semblent être des efforts parallèles lorsqu’elles sont énumérées sur une diapositive, mais qui sont, en réalité, très interdépendantes et imbriquées. Le fait de doter en personnel des efforts hautement séquentiels comme s’ils étaient entièrement parallèles mène à la catastrophe.

L’enfer, c’est les autres

Les coûts de cohérence augmentent de façon quadratique lorsque de nouveaux membres sont ajoutés.Travailler sur des tâches complexes en utilisant des ressources parallèles (ou avec un groupe de personnes) nécessite de lacommunication. Un groupe de 333 personnes a 333 dyades ; un groupe de 444 personnes a 666 dyades ; un groupe de 555 personnes a 101010 dyades ; un groupe de NNN personnes a N2-N2\frac{N^2-N}{2}2N2-N dyades possibles. La communication point à point (c’est-à-dire le fait de se parler) peut être modélisée comme l’activation d’un sous-ensemble de ces dyades.

Bien que certaines organisations soient plus bavardes que d’autres, cette communication est essentielle pour le partage de l’information et la coordination des actions. Mais elle n’est pas gratuite. La communication prend du temps. Si le pourcentage relatif de personnes qui ont besoin de se parler pour faire quelque chose reste constant à mesure que l’organisation grandit (c’est-à-dire x%x\%x% de toutes les dyades), le temps total passé à communiquer augmenteraquadratiquement alors que la capacité de travail de l’organisation croît linéairement.

On peut envisager les réunions de groupe comme une stratégie de regroupement pour réduire le nombre d’entités impliquées dans les communications point à point, mais l’efficacité de cette stratégie dépend fortement du chevauchement relatif des groupes et des structures de groupe. Le degré de chevauchement des groupes est essentiellement le même facteur que le pourcentage de dyades nécessaires à la communication. Si la taille des groupes est limitée, la croissance des coûts de cohérence sera réduite d’un facteur constant mais continuera à croître de façon quadratique. Il peut être tentant d’essayer de miser sur la cohérence et de se contenter de rouler à plat, mais même les formes les plus subtiles d’incohérence ont des coûts commerciaux considérables. La seule stratégie évolutive pour contenir les coûts de cohérence est de limiter le nombre de personnes auxquelles un individu doit parler pour faire son travail à un facteur constant.

En termes de conception organisationnelle, cela signifie limiter à la fois les types et le nombre de milieux consultés dans le processus de l’organisation. Chaque personne ou groupe supplémentaire dans une matrice d’attribution des responsabilités augmente géométriquement la surface de cette matrice. Chaque attribution de responsabilité supplémentaire dans cette matrice augmente géométriquement le coût de la cohérence organisationnelle.

Il convient également de noter que ces communications par paire n’ont pas besoin d’être formelles, planifiées ou même bien connues pour avoir des coûts. Ni votre manuel de l’employé ni votre calendrier ne sont des représentations exactes de la façon dont le travail est effectué dans l’organisation. À moins que votre organisation ne soit composée de zombies, les membres de l’organisation devront constamment contourner les procédures d’exploitation standard afin d’effectuer un travail réel. Même les fourmis improvisent. Une comptabilité précise de ces coûts cachés peut être développée via une analyse honnête, irréprochable et continue de bout en bout du travail tel qu’il se déroule.

Principes d’au-delà de l’espace et du temps

Gardez le travail parallèle, les groupes petits et les ressources locales.

Lorsqu’on nous présente un ensemble de problèmes qui deviennent intraitables de façon superlinéaire lorsque NNN augmente, notre meilleur pari est de garder NNN petit. Si l’intention de l’organisation est d’augmenter la prestation de valeur en embauchant plus de personnes, les efforts de travail doivent être aussi indépendants que possible. Les dirigeants doivent développer des pratiques et des processus pour s’assurer que les efforts de travail que leurs stratégies considèrent comme parallèles le sont réellement. Les ressources partagées doivent être gérées en permanence pour éviter les conflits et, dans la mesure du possible, les ressources dont un groupe a besoin doivent être affectées à ce groupe (par exemple, si le travail implique beaucoup de conception, il faut affecter un concepteur à ce groupe). La doctrine des armes combinées n’est pas seulement pour les soldats.

Prioriser le développement de multiplicateurs de force.

Si une organisation travaille en grande partie sur les mêmes types de problèmes que les années précédentes, il y a lieu de s’inquiéter. Les équipes dédiées à l’outillage interne devraient être dotées de personnel et recevoir la direction explicite de construire des outils et d’optimiser les processus pour aider à augmenter la productivité de leurs collègues. Si le pourcentage de l’organisation consacré à l’amélioration du fonctionnement de l’organisation commence à diminuer, demandez-vous si nous avons atteint un maximum global ou local. Allez long sur les outils à fort levier, mais restez ancré dans le sol pour savoir si oui ou non ils aident réellement.

Si possible, factorisez les produits de travail en modules indépendants ; sinon, grandissez lentement et optimisez.

Si votre produit de travail – par exemple, la base de code, les documents, etc – peut être factorisé en modules indépendants, doso. Le mot clé ici est indépendant. Découper votre merde en une centaine de microservices ne vous aidera pas si tout le monde doit en modifier dix pour arriver à quelque chose. Certains problèmes ne se prêtent pas particulièrement à la partition ; ce sont aussi des problèmes qui ne bénéficient pas beaucoup de travailleurs supplémentaires. Si le problème est un point fixe, cherchez des moyens d’optimiser la proportion séquentielle du travail. Sachez que jeter des corps sur ce problème produira un clusterfuck.

Échelonnez les efforts organisationnels sur un portefeuille de produits synergiques.

La plupart des entreprises intelligentes commencent avec un seul produit. Elles sont longues sur l’hypothèse de leur produit, mettent leurs œufs dans un seul panier et se lancent à l’assaut des barrières. Si elles sont assez chanceuses pour obtenir de la traction, elles doublent leur mise. Encore. Et encore. Et encore. À un moment donné, ils ont plusieurs bataillons de personnes qui s’agitent autour d’eux, tous essayant de comprendre qui possède l’interface utilisateur du turboencabulateur et si oui ou non les nouveaux marzelvanes seront entièrement antigraviques par la grande poussée marketing de l’automne.

Pour éviter cela, les dirigeants de l’organisation devraient garder le développement d’un portefeuille de produits comme un objectif explicite. Les idées de fonctionnalités ou de produits qui sont complémentaires à la stratégie commerciale globale de l’organisation mais qui ne coexistent pas naturellement avec le produit principal peuvent être développées comme des produits distincts par des équipes indépendantes. Nous avons la preuve que les calendriers de développement de logiciels peuvent être réduits, au maximum, de 25% ; il devrait être facile de choisir entre un seul produit en 18 semaines ou deux produits en 24 semaines.

Les nouveaux produits réussis peuvent être intégrés de manière incrémentale avec les produits existants lorsque cela a du sens, et les outils, les bibliothèques et les cadres peuvent être développés par des équipes multiplicatrices de force pour réduire à la fois le temps de mise sur le marché des nouveaux produits et les coûts de possession des produits existants. Les nouveaux produits qui ne réussissent pas peuvent être retirés du marché à un coût nettement inférieur à celui des fonctionnalités de complexité similaire. Après tout, le retrait d’une fonctionnalité d’un produit implique les mêmes coûts de contention et de cohérence que l’ajout d’une fonctionnalité. Il est rare qu’une fonctionnalité présente un coût de possession supérieur au coût de son retrait, d’où la prévalence des fonctionnalités de type Flying Dutchman.

Pour un exemple concret de la vertu d’un portefeuille de produits, imaginez Amazon Web Services comme un seul produit, doté de cent mille âmes condamnées et présenté par une interface utilisateur qui n’est qu’une série de boutons vous permettant de provisionner et d’exploiter des machines virtuelles, des bases de données, des lacs de données, des applications robotiques, des applications de réalité augmentée, des dingues IoT, etc. Une telle créature imploserait sous son propre poids.

Au contraire, Amazon Web Services est un portefeuille de produits synergiques. EC2 a son propre ensemble indépendant de fonctionnalités, développé et exploité par un ensemble indépendant d’employés. Lorsque ses besoins peuvent être satisfaits par un autre produit AWS (par exemple, le stockage des images de machines virtuelles sur S3, ou l’envoi de métriques àCloudWatch), une intégration inter-produits est introduite. Cette structure de produits permet la mise en place d’une structure organisationnelle hautement concurrentielle qui permet à Amazon de lancer un nombre effarant de nouveaux produits chaque année tout en continuant à soutenir et à développer les produits existants. Les services défaillants peuvent être supprimés ou réduits sans perturber le reste de l’organisation.

Gardez les matrices d’attribution des responsabilités petites, clairsemées et locales.

A mesure qu’une organisation mûrit, les rôles ad hoc sont souvent développés en équipes complètes. Cette spécialisation est souvent essentielle pour réaliser des économies d’échelle internes, mais la formalisation de nouveaux groupes d’intérêt doit être maîtrisée. Chaque colonne de votre matrice d’attribution des responsabilités élargit géométriquement l’ensemble possible des interactions requises ; chaque attribution dans la matrice est un point de coordination nécessitant une attente. Lorsqu’une matrice indique une relation très sensible entre deux groupes (par exemple, un groupe d’ingénieurs travaillant sur une fonctionnalité et les avocats essayant de garantir la conformité juridique de cette fonctionnalité), des efforts doivent être faits pour réduire le coût de cette interaction en colocalisant leurs membres (par exemple, intégrer un avocat aux ingénieurs), intégrer un avocat avec les ingénieurs).

Prioriser la distribution asynchrone de l’information par rapport à la distribution synchrone.

Une source importante de la demande d’échec pour les réunions et les mises à jour de statut est le désir des dirigeants organisationnels de se tenir au courant de qui fait quoi. Cette conscience situationnelle est en effet importante, mais essayer de la maintenir en convoquant des réunions, en envoyant des messages aux gens sur Slack et en rattrapant les gens dans les couloirs est un frein systémique important à la productivité organisationnelle.

Un meilleur modèle pour rester informé des développements à mesure que l’organisation évolue est que les groupes publient des mises à jour de statut dans le cadre de la cadence régulière de leur travail. Les dirigeants peuvent lire ces mises à jour de manière asynchrone et, si le besoin s’en fait sentir, engager des conversations synchrones supplémentaires pour poser des questions, fournir des commentaires, etc.

Les réunions synchrones devraient être réservées à la collaboration à faible temps de latence sur des questions complexes ; de même, la collaboration devrait être réservée aux réunions synchrones.

Ce qui se passe à l’intérieur des limites est important.

Le fait que nous connaissions certaines des limites de la performance organisationnelle et leur dynamique ne nous excuse pas d’utiliser notre empathie pour construire des organisations humaines. Les entreprises sont des groupes de personnes qui sont indemnisées pour avoir dû passer une partie de leur vie limitée sans être avec leur partenaire, leurs enfants, leurs animaux domestiques ou leurs passe-temps super bizarres. Ils méritent d’être membres d’organisations qui honorent ce temps en veillant à ce que leur travail ait une valeur et un sens. Il n’y a pas de modèle mathématique pour nous guider vers cet objectif.

Merciements aux différents Fiascans pour la révision de ce billet. Toute erreur dans cet article est la mienne, pas la leur.