Kognitive Verzerrung in der Entwicklung: Wie sie sich in realen Umgebungen zeigt

Veröffentlicht: 2023-03-17
cognitive bias dev 1

Die Welt, in der wir heute leben, basiert auf der Erfassung und Verarbeitung von Massendaten. Irgendwann entdeckten Unternehmen, dass sie mit einem ausreichend großen Datensatz und der richtigen Handhabung unglaublich wertvolle Erkenntnisse über ihre Kunden gewinnen und möglicherweise daraus Kapital schlagen konnten. Für diejenigen von uns, die in unserem täglichen Leben auf moderne Technologien angewiesen sind, hat es das Gefühl, dass fast alles, was wir tun, auf irgendeine Weise verfolgt und gemessen wird. Wir haben jetzt eine überwältigende Menge an Daten, die von überall her eintreffen. Am Ende des Tages müssen all diese Informationen an einem einzigen Verarbeitungspunkt landen – unserem Gehirn. Die Welt der Informationen wächst schnell und das menschliche Gehirn tut alles, um sich anzupassen und mitzuwachsen, aber es kann nur so viel tun.

Was sind kognitive Verzerrungen?

Geben Sie kognitive Verzerrungen ein; Ruhl von SimplyPsychology (2021) beschreibt kognitive Verzerrungen als „unbewusste Denkfehler, die sich aus Problemen im Zusammenhang mit Gedächtnis, Aufmerksamkeit und anderen mentalen Fehlern ergeben“. Sie erklärt, dass dies ein „Ergebnis der Bemühungen unseres Gehirns ist, die unglaublich komplexe Welt, in der wir leben, zu vereinfachen“. Mit anderen Worten, wenn uns ständig neue Informationen präsentiert werden, versucht unser Gehirn, diese effizient zu verarbeiten, indem es Annahmen trifft, die dazu beitragen, dass alles einen Sinn ergibt – von denen einige falsch sind.

Wie zeigen sich kognitive Verzerrungen im Software Engineering?

Betrachtet man dies im Kontext des Software-Engineering, müssen Ingenieure angesichts der exponentiellen technologischen Fortschritte schnell lernen, damit sie die Systeme, auf denen sie aufbauen, warten und aktualisieren können. Um ein produktives Tempo aufrechtzuerhalten, wird es unvermeidlich, Annahmen zu treffen, denn um etwas mit Sicherheit zu wissen, braucht es Zeit, die begrenzt ist. Daher wird es Teil der Arbeit eines Ingenieurs, in der Lage zu sein, zu erkennen und sorgfältig zu prüfen, welche Annahmen getroffen werden. Dies erfolgt in der Regel während des Lösungsdesignprozesses und wird von Analysen potenzieller Kosten für fehlgeschlagene Ergebnisse begleitet. Der Unterschied zwischen Annahmen, die auf diese Weise getroffen werden, und Annahmen, die sich aus kognitiven Verzerrungen ergeben, besteht jedoch darin, dass die eine bewusst ist, während die andere unbewusst ist. Um letzteres zu verhindern, müssen wir uns seiner Existenz bewusst sein.

Als Ingenieur kann es sehr hilfreich sein, die eigenen kognitiven Verzerrungen zu erkennen, da dies dazu beitragen kann, kostspielige Fehler zu vermeiden. Zu wissen, wie man diese Fähigkeit aufbaut, ist jedoch möglicherweise nicht selbstverständlich, da sie eher in der Psychologie als in der Technik verankert ist. Glücklicherweise wurde in diesem Bereich eine beträchtliche Menge an Forschung betrieben, die der Öffentlichkeit zugänglich ist. Organisationen können diese Informationen verwenden, um hilfreiche Entwicklungsmethoden zu entwerfen und zu implementieren, die Ingenieure befolgen können, um Fehler zu vermeiden.

Chattopadhyayet al. (2020) von der University of Oregon führten eine Studie mit dem Titel A Tale from the Trenches: Cognitive Biases and Software Development mit Entwicklern eines Startups durch, deren Berufserfahrung zwischen 1 und 23 Jahren lag. Dabei beobachtete man die Entwickler bei ihren täglichen Arbeitsaufgaben, während sie ihre Gedanken laut verbalisierten und ausdrückten; im Wesentlichen eine Programmierübung für Paare, außer mit einem stillen Forscher anstelle eines Entwicklerkollegen. Nachdem sie 10 verschiedene Entwickler beobachtet hatten, stellten die Forscher eine Liste von kognitiven Verzerrungskategorien und Beispielfehlern zusammen, die als Folge davon aufgetreten sind, wie in der folgenden Tabelle zu sehen ist.

Bias-Kategorie Voreingenommenheit(en) Beispiel
Vorurteile Bestätigung, selektive Wahrnehmung P1 fügte kontinuierlich Hashmaps hinzu, wenn andere Datenstrukturen besser für Datenabfrage-APIs geeignet waren.
Eigentum IKEA-Effekt, Endowment-Effekt P8 beschloss, ihre alte CSS-Datei anstelle der vorgefertigten CSS-Dateien aus dem Bootstrap-Projekt wiederzuverwenden.
Fixierung Verankerung und Anpassung, Glaubensbewahrung, Semmelweis-Reflex, Fixierung P9 war darauf fixiert, die Funktionsdefinitionen zu ändern, wenn die Umgebung nur neu geladen werden musste.
Zurückgreifen auf Standard Standard, Status Quo, versunkene Kosten P2 öffnete eine neue Codedatei und behielt unbenutzten Vorlagencode am Anfang der Datei.
Optimismus Valenzeffekt, Unbesiegbarkeit, Wunschdenken, Überoptimismus, Selbstüberschätzung P4 war stolz auf seinen neuen aggregierten Kartencode, aber nach dem Drucken trat ein Fehler auf.
Bequemlichkeit Übertriebene Diskontierung, zeitbasierte Voreingenommenheit, geizige Informationsprozesse, Repräsentativität P2 erstellte einfach übermäßig ausführlichen Code, der seine aktuellen Anforderungen erfüllte, wurde aber zu Spaghetti-Code, der zukünftige Fortschritte verlangsamte.
Unterbewusstes Handeln Irreführende Informationen, Gültigkeitseffekt P6 konzentrierte sich auf die Behebung der in Fehlermeldungen aufgeführten Dateien anstelle der Kernabhängigkeitsdatei, die Fehler im gesamten System verursachte.
Glückselige Ignoranz Normalitätseffekt P10 ignorierte aus Gewohnheit alle Compiler-Warnungen und bemerkte eine neue Ausnahme nicht, die die Ursache seines Build-Fehlers aufführte.
Oberflächliche Auswahl Kontrasteffekt, Rahmeneffekt, Halo-Effekt P4 kopierte eine Funktion aus seiner Dokumentation und fügte sie direkt in seine Syntax ein, ohne sie vorher zu untersuchen.
Erinnerungsverzerrung Primat und Aktualität, Verfügbarkeit P1 verwendete ein Entwurfsmuster wieder, das bei kürzlich durchgeführten Aufgaben gut funktionierte, da er sich leicht an die Struktur des Codes erinnern konnte.
Nachgestellt aus „A Tale in the Trenches: Cognitive Biases and Software Development“ von Chattopadhyay et al., 2020, 23.-29. Mai. Abgerufen von https://dl.acm.org/doi/pdf/10.1145/3377811.3380330

Voreingenommenheit verstehen, um einen Teufelskreis zu durchbrechen

Ich habe einige dieser Fehler in meinen eigenen Erfahrungen als Entwickler definitiv erkannt. Wenn mich jemand fragen würde, warum ich diese Fehler gemacht habe, bevor ich wusste, was kognitive Verzerrungen sind, würde ich wahrscheinlich sagen: „Weil ich dachte, dass dies der richtige Weg ist.“ Wenn es um unbewusstes Verhalten geht, ist es schwer zu verstehen, woher es kommt oder dass es überhaupt existiert. Im Moment scheint es harmlos und harmlos, aber im Laufe der Zeit können diese Fehler zu ernsthaften negativen Auswirkungen führen, da sich schlechte Gewohnheiten bilden und schwer zu brechen sind. Wenn diese Option nicht aktiviert wird, werden immer mehr Fehler in das System eingeführt und Ressourcen werden für die Behebung dieser Fehler aufgewendet, möglicherweise auch auf falsche Weise – ein Teufelskreis.

Eine Außenperspektive zu haben, wie ein stiller Forscher, macht es viel einfacher, diese Verhaltensweisen zu erkennen. Es ist noch hilfreicher, wenn der Beobachter weiß, dass diese Verhaltensweisen existieren, und die Erlaubnis erhält, darauf hinzuweisen, wenn er gesehen wird. Da sich diese Fehler letztendlich auf das Geschäft auswirken, liegt es an der Organisation, diese Auswirkungen einer schnellen Produktion zu verstehen. Dieses Verständnis kann Investitionen in die Implementierung geeigneter Verfahren und Schulungen rechtfertigen. Obwohl ich mich nur darauf konzentriert habe, wie kognitive Verzerrungen in der Softwareentwicklung auftreten, kann man sich vorstellen, wie diese auch in anderen Abteilungen auftreten können. Im Wesentlichen kann jeder, der bei seiner Arbeit produktiv sein möchte, davon profitieren, kognitive Verzerrungen zu verstehen.

Sind Sie daran interessiert, Ihre Karriere in solchen Teamkulturen voranzutreiben? Sehen Sie sich unten unsere offenen Stellen an, um als Erster von neuen Möglichkeiten zu erfahren.


nhu Nhu Tran“>
Nhu Tran

Nhu Tran ist Softwareentwickler bei Rewind. Tran ist ein erfahrener Programmierer, der mit dem gesamten Lebenszyklus der Softwareentwicklung vertraut ist, vom Design über die Entwicklung bis hin zur Implementierung und zum Testen. Wenn sie nicht vor einem Bildschirm sitzt, kann Tran im Winter einen Berg hinunterfahren oder im Sommer eine gemütliche Glamping-Anlage bauen.

Besonderer Dank gilt unseren Freunden bei Rewind für ihre Erkenntnisse zu diesem Thema.
Aktie
Twittern
Aktie
0 Aktien