paint-brush
Théorie de Windows cassée dans le développement de logiciels : pourquoi les détails sont importantspar@aferreira
1,715 lectures
1,715 lectures

Théorie de Windows cassée dans le développement de logiciels : pourquoi les détails sont importants

par André Ferreira, MSc10m2023/02/27
Read on Terminal Reader

Trop long; Pour lire

La théorie des fenêtres brisées suggère que les troubles environnementaux encouragent les comportements criminels, antisociaux ou civils. Cet article propose une réflexion et tente d'encourager le changement en faisant comprendre aux lecteurs l'impact de leurs actions sur les environnements auxquels ils participent. Certains problèmes dans le monde du développement logiciel peuvent sembler sans conséquence, ils peuvent avoir de graves effets secondaires et des coûts pour les personnes et la société.
featured image - Théorie de Windows cassée dans le développement de logiciels : pourquoi les détails sont importants
André Ferreira, MSc HackerNoon profile picture
0-item


Bien que certains problèmes dans le monde du développement de logiciels puissent sembler sans importance, ils peuvent avoir de graves effets secondaires et des coûts pour les personnes et la société. Cet article propose une réflexion et tente d'encourager le changement en faisant comprendre aux lecteurs comment leurs actions ont un impact sur les environnements dans lesquels ils participent et comment même certaines petites choses finissent par coûter des fortunes.

Fenêtres brisées

En tant que jeune garçon, avant mon premier ordinateur, j'étais toujours sur mon vélo. En face de chez moi, il y avait une petite forêt avec quelques sentiers pédestres étroits où je faisais régulièrement du vélo.


Je fantasmais souvent que mon vélo BMX était une Formule 1 et que je rivalisais avec Nigel Mansell, Alain Prost ou Ayrton Senna. Puis, près de la ligne d'arrivée, j'effectuais des dépassements suprêmes et remportais la courte victoire.


A l'autre bout de la forêt, il y avait un vieil entrepôt. Il y avait de petites fenêtres sur le dessus près du toit pour laisser entrer la lumière. Pourtant, celles-ci étaient suffisamment hautes pour qu'on puisse les utiliser pour jeter un coup d'œil à l'intérieur.


Je n'ai jamais oublié la première fois où je me suis arrêté pour me reposer et contempler le bâtiment. Je me souviens avoir pensé : « Bizarre ! Pourquoi n'est-il pas près d'une route ?... Quelqu'un a jeté des pierres et cassé des vitres… Pourquoi n'ont-elles pas été réparées ? Il a l'air mystérieux, mais sombre. Je ferais mieux de rester à l'écart, quelque chose ne va pas ». Je me serais alors éloigné à vélo et je ne me serais plus jamais aventuré dans cette région.


Les années ont passé et finalement la forêt a été coupée par une route et lentement, de nouveaux bâtiments ont poussé le long de celle-ci. Mais pendant un certain temps au moins, l'ancien entrepôt a perduré. Pourtant, d'année en année, de plus en plus de fenêtres étaient contraintes de céder sous les pierres qu'on leur lançait.


Pour être juste, celui qui a cassé les vitres n'aurait pas été hanté par le remords. Certains étaient déjà cassés et non réparés, alors qui se soucierait d'en avoir quelques-uns de plus ? Après tout, les coûts de remplacement seraient les mêmes car ils avaient tous besoin d'être réparés.


En tant que telles, les anciennes fenêtres de l'entrepôt offraient l'occasion de former son objectif et de célébrer le succès de l'aide à la démolition prématurée (une autre fenêtre s'est cassée), comme j'ai observé des gars plus âgés le faire une fois.


Pour moi et quelques autres collègues, la route permettait un trajet plus court vers l'école. Néanmoins, nous préférerions tous l'itinéraire plus ancien et un peu plus long, car c'était un chemin connu et cela nous permettait d'éviter le bâtiment délabré qui nous mettait étrangement mal à l'aise. C'était quelque chose de moins à penser ou à s'inquiéter.


Je partage cette histoire, d'une époque antérieure aux téléphones portables, dans le but de vous transporter dans votre propre enfance, et d'essayer de récupérer des sentiments similaires que vous avez pu ressentir dans votre enfance en observant un bâtiment ou une zone délabrée, et de présenter le Théorie des fenêtres cassées .


En un mot, la théorie des fenêtres brisées suggère que les troubles environnementaux encouragent les comportements criminels, antisociaux ou civils. Aucune fenêtre brisée n'égale moins de risque de désordre, favorisant la tranquillité et la légalité. Comme pour les vitres brisées de l'ancien entrepôt, lorsqu'il y a déjà beaucoup de désordre, il est plus facile d'en rajouter.


J'ai découvert la théorie des fenêtres brisées pour la première fois, il y a de nombreuses lunes, en lisant le programmeur pragmatique . Si vous êtes nouveau dans le monde du développement logiciel, c'est une lecture qui en vaut la peine.


La sagesse de la théorie des fenêtres brisées me vient souvent à l'esprit. Les criminologues et les experts en comportement auraient sûrement beaucoup plus à dire à ce sujet, mais pour moi, c'est une illustration gravée de la façon dont l' environnement influence le comportement humain.


Et tandis que certains chercheurs plus récents affirment que la théorie ne tient plus, même sans lire leurs articles ou leurs affirmations, je contesterais déjà : « Mes excuses. Je comprends que vous êtes un expert, mais d'après mon expérience, cela tient ».


Si vous aimez l'émission télévisée "Bing Bang", alors vous savez que même les experts peuvent se tromper et se tromper même par des amis.


J'espère que vous avez compris que les vitres brisées de cet ancien étage d'entrepôt, invitaient à un comportement antisocial qui conduirait également les passants, comme guidés par une prémonition automatisée du trouble, à s'en éloigner et à le retirer de l'esprit.

Technologie et criminalité

Pour que vous ne pensiez pas que je suis trop vieux, permettez-moi d'utiliser le défi TikTok Kia comme autre exemple (qui, à réaliser, peut également inclure le bris de la vitre du véhicule).


Si vous ne le connaissez pas, il s'agit d'une vidéo partagée sur cette plate-forme qui a conduit à une série de vols de véhicules à moteur ciblant Kia et Hyundai, principalement par des adolescents, qui ont entraîné des dommages matériels, des chagrins, des pertes de vie et d'autres actes néfastes. conséquences, toutes négatives… à l'exclusion des gains de TikTok et de la notoriété supplémentaire de la plate-forme.


Étant une décision de conception intentionnelle ou malheureuse de ces constructeurs automobiles, il s'agissait néanmoins d'une fragilité du système, qui a été exploitée avec succès via un câble USB commun.


Une image d'une usine automobile


L'adulte, ou du moins la chose responsable à faire, aurait été de divulguer ladite vulnérabilité aux deux marques et d'espérer qu'elles prendraient des mesures pour la corriger. Bien sûr, cela aurait signifié que les auteurs de la vidéo ne deviendraient très probablement jamais célèbres, ni ne s'amuseraient à le faire.


Il est intéressant pour moi que les jeunes d'aujourd'hui préfèrent être des influenceurs, même en tant qu'ambassadeurs du mal, plutôt que des pompiers, des médecins ou des astronautes. Bravo les médias de masse ! (ma tentative de sarcasme pour ceux qui ont du mal à avoir du sarcasme).


Ainsi, dans cet exemple, nous pouvons reconnaître que même involontairement, une fenêtre cassée (et un câble USB) peut entraîner des conséquences plus dramatiques que le simple bris de verre.


Les deux sociétés ont depuis pris des mesures pour tenter de minimiser et de lutter contre le comportement criminel, ou en d'autres termes, de réparer la fenêtre brisée, mais pas avant d'avoir subi une atteinte à la réputation et une perte financière.

Conception du développement logiciel : l'exemple d'en-tête HTTP Referer

Un exemple du monde du logiciel qui a été une fenêtre brisée pendant de nombreuses années est l'en-tête HTTP Referer, une faute d'orthographe du mot référent. Cela m'a causé des problèmes, peut-être à vous et à des centaines, voire des milliers de personnes également.


Comme moi, vous vous êtes probablement moqué (faites des remarques grossières et moqueuses, généralement à haute voix) des auteurs aussi. Vous avez peut-être aussi cherché à qui était la faute et potentiellement aussi conclu que, même après tant d'années, l'excuse d'être trop occupé ou que "je finirai par arranger ça"... est très humain, comme vous l'avez fait pour bien sûr entendu un raisonnement similaire avant, pour d'autres fenêtres cassées.


Qui se soucie du fait que les autres perdent du temps alors qu'il est facile d'enseigner que vous devez faire quelque chose de mal, parce que c'est la bonne façon de le faire ? Ou, voici une pensée amusante, pourquoi ne changeons-nous pas le dictionnaire ? Alors ce ne sera plus une erreur.


Ouvrez l'éditeur de texte de votre choix et écrivez une phrase avec la version mal orthographiée ayant le dictionnaire en anglais. Le mot est-il signalé comme une faute de frappe ?

Les résultats pourraient vous surprendre.


Une fenêtre cassée, laissée non réparée, conduit à plus de fenêtres cassées, mais si même les experts ne s'en soucient pas, pourquoi le reste d'entre nous devrait-il le faire ? Pourquoi ne pas casser plus de vitres ? Sûrement un jour, tout doit être réparé.


Voici une raison potentielle ! Il s'agit de chiffres, il est donc facile de se tromper, mais essayons.


Utilisons le salaire moyen d'un programmeur aux USA en 2021 qui était de 93 000 $ selon cette source . Supposons 40 heures par semaine et 52 semaines de travail pour obtenir la valeur horaire de 44,71 $ (les Américains ne sont apparemment pas très friands de vacances).


Étant donné que, Aux États-Unis seulement, il y a 4,3 millions de programmeurs selon cette source . Même si nous ne prenions que 5% de ceux-ci (j'ai choisi la valeur arbitrairement), nous obtiendrions 215 000 programmeurs qui, d'une manière ou d'une autre, ont rencontré la faute de frappe et ont dû prendre des mesures pour la comprendre et la résoudre.


Si chacun de ces programmeurs ne perdait en moyenne qu'une heure à gérer les effets secondaires et à comprendre pourquoi ils sont là, le coût de leur première rencontre aurait été de 9,6 millions de dollars . S'il était de 30 % (1 290 000 personnes), la valeur serait de 57,7 millions de dollars . Encore une fois : États-Unis uniquement .


Même si vous sélectionnez un autre pourcentage arbitraire, le gaspillage sera toujours immense.


Une image d'une personne tenant de l'argent dans les deux mains comme si elle comptait


Et s'il vous plaît, n'oubliez pas que je n'ai pas tenu compte du fait que les problèmes détectés plus tôt dans un cycle de développement coûtent beaucoup moins cher que ceux détectés en production. Je n'ai pas non plus ajouté d'ajustements à l'inflation, ni pris en compte différents pays ou étudiants et professeurs qui y consacrent du temps, ni ceux des personnes qui ont des sites Web et ne sont pas considérés comme des programmeurs, ni ceux qui ont pris leur retraite, ni aussi ceux qui ont encore pour l'apprendre.


Maintenant, extrapolez cette valeur pour inclure le monde. Selon vous, combien d'argent, combien de valeur, combien de vies ont déjà été perdues et seront perdues ?


J'attends avec impatience le jour où une âme bienveillante partagera quelque part: "Au fait, nous l'avons corrigé et l'ancienne méthode sera obsolète dans la version X". Parce que pour moi, à moins que les personnes responsables de l'erreur facile ne soient si méprisables qu'elles devraient être rappelées pour cette faute de frappe, alors le meilleur moment pour la réparer était hier. (Vous connaissez quelqu'un à la Fondation Apache ou qui travaille avec Nginx ? S'il vous plaît ! Niquez-le !)


"Commencer par la fin en tête", cela inclut ce que vous avez fait ou n'avez pas fait, pour les autres.


Pourtant, ce n'est qu'un exemple du monde du logiciel, pas une licorne, nous en avons plus.

Maturité de l'entreprise et fenêtres brisées

D'après mon expérience, plus la maturité, l'expérience des parties prenantes et la longévité du logiciel sont élevées, plus la probabilité que des fenêtres brisées persistent pendant de longues périodes ou ne soient jamais traitées est élevée.


Et non. Je ne suis pas derrière ni même à côté de ceux qui se contentent de sortir tôt et souvent, car cela se traduit régulièrement par moins de qualité et de soins. Savoir que vous publiez principalement des fenêtres cassées, des fonctionnalités complètes imprévues, ce n'est pas être Agile, c'est être bâclé.


Et oui, je suis conscient que de nombreuses raisons surgiront et contrediront la déclaration ci-dessus, mais je crois qu'aucune d'entre elles ne résistera à un changement de temps apporté par un cyber-adversaire qui décide de profiter. Plus clairement : les bases de code des startups sont régulièrement mûres pour le crime, en d'autres termes, ce sont des fruits à portée de main que les criminels peuvent cueillir.


Mais en ce qui concerne les organisations matures, les forces les plus fortes derrière la réalité de la maturité étreignant les fenêtres brisées sont le faible retour sur investissement et d'autres priorités pressantes dictant et imposant le besoin d'attention des ressources disponibles.


De plus, les organisations établies sont liées par des réglementations et une conformité qui les empêchent de prendre certains risques qui, s'ils se matérialisaient, auraient un large impact sociétal. C'est aussi pourquoi ces entreprises préfèrent incuber les startups, leur permettant d'accéder à certaines niches, puis attendre que la réglementation et les activités soient plus stables, avant d'acquérir.


Une image de plusieurs dossiers empilés


La société ne favorise pas ceux qui échouent, nous célébrons les gagnants ! Il est donc humain d'être sur la défensive lorsque l'on fait des erreurs ou que l'on échoue. Nous exigeons que tout le monde, sauf nous, ne manque jamais un penalty ou un coup franc d'ailleurs. De plus, les programmeurs ne sont certainement pas gentils les uns avec les autres, mais ce n'est pas un problème qui leur est propre.


Il n'est donc pas surprenant qu'une équipe, ou un individu, réponde par des raisonnements du type : "ce n'est pas vraiment un bug", "ce n'est pas vraiment un défaut", c'était une décision de conception", "nous n'aurions jamais pensé que cela pouvait être utilisé comme ça". », « personne ne ferait jamais ça », « ça ne fait de mal à personne », « ça marche comme prévu », etc.


Et quand les fenêtres cassées ne sont pas réparées, du moins de sitôt en tout cas, d'une manière humoristique et geek, les programmeurs les appellent : « une fonctionnalité ».


Cela semble idiot, n'est-ce pas ? Voyons ce qui peut se passer.


Si nous nous asseyons confortablement, essayant de résister à nos propres préjugés, peut-être que plus d'entre nous pourraient observer la même chose : un groupe d'humains qui vivent de la résolution de problèmes peuvent sûrement et facilement reconnaître les fenêtres brisées. Et parce que certains ne seront jamais réparés, les individus chercheront des moyens d'arrêter de s'inquiéter et de les retirer de l'arriéré de leur esprit.


Parce que comme tant d'autres choses dans la vie qui ne peuvent pas être contrôlées individuellement ou directement, celles-ci vous pèsent si vous continuez à dépenser de l'énergie pour y penser.

Conclusion

Quand est-ce alors que ce comportement commun porteur de négativité et indésirable devient inacceptable ? Est-ce seulement lorsque les gens s'écrasent et que la mort survient ?


Si c'est le cas, eh bien, il y a des choses qui ne seront jamais réparées… continuons à perdre, ou plus précisément, laissons les autres continuer à perdre.


Entre le verre brisé qui n'affectait que le propriétaire de l'entrepôt, les propriétaires de véhicules, les personnes qui les ont volés, et enfin les autres programmeurs, aborder les détails, même s'ils sont petits, fera la différence.


J'espère que la prochaine fois que vous ferez quelque chose de mal, vous envisagerez de le réparer immédiatement ou de permettre à la personne qui l'a fait de le modifier.


Et s'il vous plaît, arrêtez de jeter des ordures parce que d'autres le font aussi.


Et si ce sont des experts, défiez-les ! Ils sont humains, ils font des erreurs et ils n'ont peut-être même pas remarqué. S'ils réagissent comme des abrutis, répondez : « vous êtes les bienvenus ».


Si j'avais des pénalités à payer, pour toutes les fautes de frappe et autres bêtises que j'ai faites jusqu'à présent dans ma vie…


Mais j'essaie toujours de faire une chose : les réparer, une fois que j'en ai pris connaissance. Tu devrais aussi!


Les petites choses, elles comptent. Et si ce n'est pas exactement eux, que signifie leur présence.


Ne laissez pas les « fenêtres brisées » (mauvaises conceptions, mauvaises décisions ou mauvais code) non réparées. - Le programmeur pragmatique de Dave Thomas et Andy Hunt

(cela inclut les petits)