Biais cognitif dans le développement : comment cela se manifeste-t-il dans des environnements réels ?

Publié: 2023-03-17
cognitive bias dev 1

Le monde dans lequel nous vivons aujourd'hui repose sur la collecte et le traitement massifs de données. À un moment donné, les entreprises ont découvert qu'avec un ensemble de données suffisamment important et une bonne gestion, elles pouvaient trouver des informations incroyablement précieuses sur leurs clients et potentiellement en tirer parti. Pour ceux d'entre nous qui dépendent des technologies modernes dans leur vie quotidienne, il semble que presque tout ce que nous faisons est suivi et mesuré d'une manière ou d'une autre. Nous avons maintenant une quantité écrasante de données provenant de sources partout. En fin de compte, toutes ces informations doivent aboutir à un seul point de traitement : notre cerveau. Le monde de l'information se développe rapidement et le cerveau humain fait tout ce qu'il peut pour s'adapter et grandir avec lui, mais il ne peut pas faire grand-chose.

Que sont les biais cognitifs ?

Entrez les biais cognitifs; Ruhl de SimplyPsychology (2021) décrit les biais cognitifs comme « des erreurs inconscientes de pensée qui découlent de problèmes liés à la mémoire, à l'attention et à d'autres erreurs mentales ». Elle explique qu'il s'agit d'un "résultat des efforts de notre cerveau pour simplifier le monde incroyablement complexe dans lequel nous vivons". En d'autres termes, alors que de nouvelles informations nous sont continuellement présentées, notre cerveau tente de les traiter efficacement en faisant des hypothèses pour aider tout cela à avoir un sens - dont certains sont incorrects.

Comment les biais cognitifs apparaissent-ils dans le génie logiciel ?

Dans le contexte du génie logiciel, la technologie progressant à un rythme exponentiel, les ingénieurs doivent apprendre rapidement afin de pouvoir maintenir et mettre à jour les systèmes sur lesquels ils s'appuient. Pour maintenir un rythme productif, faire des hypothèses devient inévitable car savoir quoi que ce soit avec certitude prend du temps, qui est limité. Par conséquent, cela devient une partie du travail d'un ingénieur d'être en mesure d'identifier et d'examiner attentivement les hypothèses qui sont faites. Cela se fait généralement au cours du processus de conception de la solution et s'accompagne d'analyses des coûts potentiels des échecs. Cependant, la différence entre les hypothèses formulées de cette manière et celles résultant de biais cognitifs est que l'une est consciente tandis que l'autre est inconsciente. Donc, afin de prévenir ce dernier, nous devons être conscients de son existence.

En tant qu'ingénieur, être capable d'identifier ses propres biais cognitifs peut être très puissant car cela peut aider à éviter des erreurs coûteuses. Cependant, savoir comment développer cette compétence peut ne pas venir naturellement car elle est plus liée à la psychologie qu'à l'ingénierie. Heureusement, une quantité considérable de recherches ont été effectuées dans ce domaine et sont accessibles au public. Les organisations peuvent utiliser ces informations pour concevoir et mettre en œuvre des pratiques de développement utiles que les ingénieurs doivent suivre afin d'éviter les erreurs.

Chattopadhyay et al. (2020) de l'Université de l'Oregon ont mené une étude intitulée A Tale from the Trenches: Cognitive Biases and Software Development, avec des développeurs d'une startup dont les expériences professionnelles variaient de 1 à 23 ans. Cela impliquait d'observer les développeurs effectuer leurs tâches quotidiennes tout en verbalisant et en exprimant leurs pensées à haute voix ; essentiellement un exercice de programmation en binôme, sauf avec un chercheur silencieux à la place d'un collègue développeur. Après avoir observé 10 développeurs différents, les chercheurs ont compilé une liste de catégories de biais cognitifs et d'exemples d'erreurs qui en ont résulté, comme on peut le voir dans le tableau ci-dessous.

Catégorie de biais Les préjugés) Exemple
Idées préconçues Confirmation, Perception sélective P1 ajoutait continuellement des hashmaps lorsque d'autres structures de données étaient plus adaptées aux API de requête de données.
La possession Effet IKEA, effet dotation P8 a décidé de réutiliser son ancien fichier CSS au lieu des fichiers CSS prédéfinis du projet Bootstrap.
Fixation Ancrage et ajustement, Préservation des croyances, Réflexe de Semmelweis, Fixation P9 se concentrait sur la modification des définitions de fonctions lorsque l'environnement avait juste besoin d'être rechargé.
Recours par défaut Par défaut, statu quo, coût irrécupérable P2 a ouvert un nouveau fichier de code et a conservé le code de modèle inutilisé en haut du fichier.
Optimisme Effet Valence, Invincibilité, Vœux pieux, Suroptimisme, Trop de confiance P4 était fier de son nouveau code cartographique agrégé, mais une erreur s'est produite après son impression.
Commodité Actualisation hyperbolique, biais temporel, processus d'information avares, représentativité P2 a créé un code simplement trop verbeux qui répondait à ses besoins actuels, mais est devenu un code spaghetti qui a ralenti les progrès futurs.
Action subconsciente Informations trompeuses, effet de validité P6 s'est concentré sur la correction des fichiers répertoriés dans les messages d'erreur au lieu du fichier de dépendance principal provoquant des erreurs dans tout le système.
Bienheureuse ignorance Effet de normalité P10 a ignoré tous les avertissements du compilateur par habitude et n'a pas remarqué une nouvelle exception détaillant la cause de son échec de construction.
Sélection superficielle Effet de contraste, Effet de cadrage, Effet Halo P4 a copié et collé une fonction de sa documentation directement dans sa syntaxe sans l'examiner au préalable.
Biais de mémoire Primauté et récence, Disponibilité P1 a réutilisé un modèle de conception qui fonctionnait bien sur les tâches récentes, car il pouvait facilement se souvenir de la structure du code.
Recréé à partir de "A Tale in the Trenches: Cognitive Biases and Software Development" par Chattopadhyay et al., 2020, 23-29 mai. Extrait de https://dl.acm.org/doi/pdf/10.1145/3377811.3380330

Comprendre les préjugés pour rompre un cercle vicieux

J'ai définitivement reconnu certaines de ces erreurs dans mes propres expériences en tant que développeur. Si quelqu'un me demandait pourquoi j'ai fait ces erreurs, avant que je sache ce qu'étaient les biais cognitifs, je dirais probablement "parce que je pensais que c'était la bonne façon de le faire". Lorsqu'il s'agit d'un comportement inconscient, il est difficile de comprendre d'où il vient ou même qu'il existe. C'est apparemment innocent et inoffensif pour le moment, mais avec le temps, ces erreurs peuvent entraîner de graves impacts négatifs car de mauvaises habitudes se forment et deviennent difficiles à briser. Lorsqu'ils ne sont pas contrôlés, un nombre croissant de bogues sont introduits dans le système et les ressources sont drainées pour corriger ces bogues, potentiellement de manière incorrecte également - un cercle vicieux.

Avoir un point de vue extérieur, comme un chercheur silencieux, facilite grandement la détection de ces comportements. C'est encore plus utile si l'observateur sait que ces comportements existent et est autorisé à les signaler lorsqu'il est vu. Étant donné que ces erreurs affectent en fin de compte l'entreprise, il appartient à l'organisation de comprendre ces effets de la production à un rythme rapide. Cette compréhension peut justifier un investissement dans la mise en œuvre de procédures et de formations appropriées. Bien que je me sois concentré uniquement sur la façon dont les biais cognitifs apparaissent dans le développement de logiciels, on peut imaginer comment ils peuvent également survenir dans d'autres départements. Essentiellement, toute personne qui cherche à être productive dans son travail peut bénéficier de la compréhension des biais cognitifs.

Intéressé à poursuivre votre carrière au sein de cultures d'équipe comme celle-ci ? Consultez nos postes vacants ci-dessous pour être le premier informé des nouvelles opportunités.


nhu Nhu Tran”>
Nhu Tran

Nhu Tran est développeur de logiciels chez Rewind. Tran est un programmeur expérimenté familiarisé avec le cycle de vie complet du développement de logiciels, de la conception au développement en passant par la mise en œuvre et les tests. Lorsqu'elle n'est pas devant un écran, Tran peut être trouvée en train de dévaler une montagne en hiver ou de construire un confortable glamping en été.

Un merci spécial à nos amis de Rewind pour leurs idées sur ce sujet.
Partager
Tweeter
Partager
0 partages