Über unsMediaKontaktImpressum
Christian Everke 22. Februar 2022

Was Softwareentwicklung und Psychologie gemeinsam haben

Informatik und Psychologie – zwei vermeintlich vollkommen verschiedene Wissenschaften. Während die freie Enzyklopädie Wikipedia die Informatik als Wissenschaft der systematischen Darstellung, Speicherung, Verarbeitung und Übertragung von Informationen mit Hilfe von zumeist Digitalrechnern beschreibt, definiert sie die Psychologie als eine empirische Wissenschaft mit dem Ziel, menschliches Erleben und Verhalten zu beschreiben und zu erklären. In der Psychologie geht es somit um die Sammlung und Auswertung von Daten, um mit Hilfe von statistischen Methoden Verhaltensmuster zu erkennen und zu begründen. Dabei gibt es viele Themengebiete, in denen Psychologinnen und Psychologen tätig sind und ihre Disziplin anwenden – etwa die Wirtschafts- oder Verkehrspsychologie.

Dass die angewandte Informatik ideale Hilfsmittel zur Unterstützung der empirischen Arbeit bereitstellt, ist trivial und nicht Thema dieses Artikels. An dieser Stelle wird der umgekehrte Fall betrachtet: Wie findet Psychologie Anwendung in der Informatik – speziell in der Softwareentwicklung? Denn: Die Psychologie beschäftigt sich auch mit Einflussfaktoren auf menschliche Verhaltens- und Reaktionsweisen. Derartige Einflüsse sind häufig bewusste oder unbewusste psychische Vorgänge, die auch Auswirkungen auf die Arbeit von Softwareentwicklerinnen und Softwareentwicklern haben. Insbesondere bei unbewussten Vorgängen spielen die Erkenntnisse über kognitive Verzerrungen eine besondere Rolle, wie im Folgenden aufgedeckt wird.

Die tägliche Arbeit in der Softwareentwicklung ist Denkarbeit. Sie ist mit hohen kognitiven Ansprüchen und Fähigkeiten verbunden, bei denen Wahrnehmung und Aufmerksamkeit eine besondere Rolle spielen. Das Problem dabei: Die menschliche Denkweise kann verzerrt sein. Eine verzerrte Denkweise führt zu Denkfallen und infolgedessen zu Fehlern. Leider merken Menschen nicht, wenn ihre Denkweise verzerrt ist – dieser Prozess im Kopf geschieht meist unbewusst, sodass die Aufmerksamkeit bei der betroffenen Person eine ganz andere ist und diese gar nicht merkt, dass sie gerade dabei ist, einen gegebenenfalls schweren Fehler zu machen. Im Software-Engineering führen Denkfehler so zu Folgeproblemen, wie etwa schlechte Softwarequalität oder Verzögerungen im Projekt usw. Eine schlechte Nachricht sei an dieser Stelle vorweggenommen: Denkfehler lassen sich nicht gänzlich vermeiden. Die gute Nachricht: Wer ein paar wahrnehmungspsychologische Grundlagen beherrscht, kann seine Arbeitsweise und insbesondere seinen Programmierstil so anpassen, dass Denkfallen vermieden werden und Fehler schneller erkannt werden.

Denkfallen im Alltag

Wie schnell wir Denkfehler machen oder auf Denkfallen hereinfallen, zeigt das folgende Beispiel, das in seiner Grundversion von Daniel Kahneman übernommen wurde [1]. In einem Softwareprojekt gilt es, eine digitale Speisekarte beziehungsweise eine digitale Menüanzeige zu implementieren. Eine Fachabteilung gibt vor, dass das Menü "Currywurst mit Pommes" heute zum Angebotspreis von 1,10 Euro auf der digitalen Menüanzeige angezeigt werden soll. Um den Lagerbestand aber nachvollziehen zu können, müssen Pommes und Currywurst getrennt auf der später zu erstellenden Rechnung aufgeführt werden. Die Fachabteilung ergänzt, dass die Currywurst einen Euro mehr kostet als die Pommes. Mit welchem Betrag wird die Pommes auf der Rechnung aufgeführt?

Eine einfache Denkaufgabe, wie sie uns in dieser Art täglich in unserem Alltag begegnen kann. Mit der Beantwortung der Frage tun wir uns leicht: Wenn eine Currywurst und eine Pommes insgesamt 1,10 Euro kosten und die Currywurst einen Euro mehr kostet als die Pommes, dann kostet die Pommes laut Rechnung logischerweise 10 Cent.

Wir machen Fehler, sogar sehr einfache.

Die meisten Menschen tun sich leicht, diese Aufgabe zu lösen und haben den Wert von 10 Cent auch unmittelbar im Kopf und würden gar nicht revidieren, wenn man den Wert so im Raum stehen lassen würde. Der springende Punkt an der Stelle ist, dass die Antwort "10 Cent" schlichtweg falsch ist. Kostet die Pommes 10 Cent und die Currywurst einen Euro mehr als die Pommes, so wie es die Fachabteilung vorgegeben hat, dann kostet die Currywust 1,10 Euro. Die Gesamtkosten wären dann aber 1,20 Euro. Korrekterweise darf die Pommes nur 5 Cent kosten, denn dann kostet die Currywurst 1,05 Euro und die Gesamtkosten sind, wie gefordert, bei 1,10 Euro.

Das Beispiel zeigt: Wir machen Fehler, sogar sehr einfache. So manch ein Leser oder eine Leserin wird sich gerade bestimmt die Hand vor den Kopf geschlagen haben und diesen eher "dummen Fehler" eingestehen müssen. Vergleichbare Fehler machen Menschen in vielen Situationen des Lebens. Beim Einkaufen etwa werden wir bewusst durch Verlaufs- und Marketingpsychologen manipuliert, um einen gewissen Reiz für bestimmte Produkte oder Dienstleistungen zu empfinden. Auch beim Autofahren werden Fehler gemacht. Der Klassiker hier: Unfälle, weil man ein Hindernis oder einen anderen Verkehrsteilnehmer nicht "gesehen" hat. Etwas im Straßenverkehr zu übersehen ist physiologisch betrachtet vermutlich gar nicht mal möglich, denn gesunde Augen von Menschen nehmen circa 5 Millionen Reize pro Sekunde war. Lediglich ein Wahrnehmungsfilter leitet die vermeidlich wichtigen Informationen an unser Denksystem weiter. Wer im Straßenverkehr etwas "übersieht", der hatte die Aufmerksamkeit oder die Gedanken einfach in einem Moment ganz woanders – das Denksystem war mit anderen Sachen beschäftigt. Solche Denkfallen und Situationen verzerrter Wahrnehmung gibt es nicht nur im Straßenverkehr, sondern auch bei der täglichen Arbeit als Softwareentwicklerin und Softwareentwickler.

Der unsichtbare Gorilla

Ein mittlerweile bekanntes wahrnehmungspsychologisches Experiment stammt von den Harvard-Psychologen Christopher Chabris und Daniel Simons. Sie zeigten in einem Experiment ihren Probanden eine (Video-)Szene von etwa einer halben Minute, in dem sich zwei Teams mit jeweils weißen und schwarzen Trikots Bälle zuspielen [2]. Aufgabe der Probanden war es, die Anzahl der Ballwechsel im Team mit den weißen Trikots zu zählen. Das Ergebnis: Fast alle Probanden haben die Anzahl der Ballwechsel des weißen Teams, nämlich 16, richtig erkannt. Die Hälfte der Teilnehmenden aber erkannte nicht, dass sich ein bedeutsames Ereignis in der Szene abspielte. Nach einigen Sekunden nämlich betritt ein Gorilla offensichtlich die Szene und posiert für einen verhältnismäßig langen Zeitraum in der Mitte. Da die Teilnehmerinnen und Teilnehmer aber dazu angehalten wurden, die Ballkontakte zu zählen, war ihre Aufmerksamkeit auf eben diese Tätigkeit gerichtet und entsprechend bei 50 Prozent der Teilnehmenden so stark, dass sie den Gorilla einfach nicht wahrgenommen haben.

Wer selbst das Experiment der Wahrnehmungspsychologie an dieser Stelle nachvollziehen möchte, liest diesen Text zunächst nicht weiter, schaut sich entsprechende Videosequenz an und überzeugt sich selbst, dass Team Weiß 16 Ballwechsel hatte und ein Gorilla durch die Szene gelaufen ist.

Video geschaut? Waren es wirklich 16 Ballwechsel (ja) und ist wirklich ein Gorilla durch die Szene gelaufen (auch ja)? Wenn man weiß, was einen erwartet, ist es kein Wunder, dass der Gorilla nicht mehr "unsichtbar" ist. Auch das Zählen der Ballwechsel ist keine große Schwierigkeit. Aber sind noch weitere Dinge passiert, die man einfach nicht wahrgenommen hat, weil die Aufmerksamkeit nicht darauf gerichtet war? Ändert sich die Farbe des Hintergrundes möglicherweise? Verlässt ein Spieler im schwarzen Trikot die Szene? Es ist sehr ratsam, an dieser Stelle das Video erneut zu schauen.

Zwei Denksysteme klassifizieren unsere Denkweisen

In der Psychologie wird das Denkverhalten in zwei Denksysteme eingeteilt: Das automatische System und das willentliche System. Aus Gründen der Einfachheit wird das automatische System auch als System 1 und das willentliche entsprechend als System 2 klassifiziert [1]. Worin unterscheiden sich die beiden Systeme?

Wie bereits erwähnt, nimmt das menschliche Gehirn pro Sekunde mehrere Millionen Reize oder "Eingangssignale" auf, von denen aber nur einige bewusst oder unbewusst wahrgenommen werden. Wer sich die genannte Videosequenz für "The Monkey Business Illusion" wirklich angesehen hat, kann ähnlich wie das "Nicht-Sehen" von Hindernissen und Gefahren im Straßenverkehr, nicht behaupten, er oder sie habe den Gorilla nicht gesehen. Die Aussage ist im physiologischen Sinne falsch, denn das Gehirn hat sehr wohl erfasst, was die Szene dargestellt hat. Der Gorilla wurde nur nicht wahrgenommen.

Viele der Gehirnaktivitäten passieren automatisch und somit schnell und mühelos, ohne dass man diese willentlich steuert. Der Mensch tut sich leicht zu erkennen, ob beispielsweise ein Gegenstand weiter entfernt steht als ein anderer. Wir brauchen nicht lange überlegen, wie viel 2+2 ist und auch einfache Wörter auf großen Reklameflächen lesen wir mühelos. Auch Gestik und Mimik sind häufig automatische Reaktionen auf Ereignisse. So dreht man sich automatisch der Quelle eines Geräusches zu oder zeigt in bestimmten Situationen ein angewidertes Gesicht.

Das System 2, also das willentliche System, lenkt die Aufmerksamkeit auf die anstrengenden, mentalen Aktivitäten. Hierzu zählen beispielsweise komplexe Berechnungen oder der bewusste Fokus auf bevorstehende Ereignisse. In dem Moment, wo sich der Betrachter oder die Betrachterin auf die Anzahl der Ballwechsel konzentriert, aktiviert er oder sie genauso das System 2, wie wenn man auf den Startschuss für einen Wettlauf wartet.

Rückwärts einparken erfordert unsere volle Konzentration und bedarf daher willentlicher Handlungen.

Viele Situationen kommen in den Sinn, in denen man sein Gehirn bewusst aktivieren muss oder den Eindruck erfährt, angestrengt zu sein. Zu diesen Situationen zählt beispielsweise, sich im überfüllten Raum auf die Stimme einer Person zu konzentrieren, nach einer Person mit zum Beispiel weißen Haaren Ausschau zu halten oder in eine schmale Lücke einzuparken. Viele PKW haben mittlerweile das Feature eingebaut, dass sich das Soundsystem automatisch leiser stellt, sobald der Rückwärtsgang eingelegt ist. In Autos, in denen dieses Feature nicht vorhanden ist, neigen viele Fahrerinnen und Fahrer unbewusst dazu, das Radio manuell leiser zu stellen, wenn man rückwärts einparkt. Der Grund für dieses meist unbewusste Verhalten ist einfach: Rückwärts einparken erfordert unsere volle Konzentration und bedarf daher willentlicher Handlungen: Das System 2 wird aktiviert. Da es für den normalen Menschen zu viel ist, Musik in gewohnter Lautstärke zu hören und gleichzeitig rückwärts in eine schmale Lücke einzuparken, eliminiert man alle Störquellen und Reize, die Einfluss auf die Handlung nehmen. Das Fahren auf einer leeren Straße und das gleichzeitige Hören von Musik oder Führen von Telefonaten ist hingegen wieder (im Regelfall) dem automatischen System 1 zugeordnet.

In der Psychologie wird nicht nur die Existenz der beiden Systeme beschrieben, sondern auch ein ziemlich bedeutsamer Zusammenhang, denn im automatischen System entstehen spontan die Eindrücke und Gefühle, die die Hauptquellen der expliziten Überzeugungen und bewussten Entscheidungen des willentlichen Systems sind. Kurz gesagt: Das willentliche System beeinflusst das automatische System. Um sich davon zu überzeugen, muss man sich nur an seine Fahrschulzeit erinnern. Fährt man das erste Mal Auto auf einer leeren Straße, benötigt dies die volle Aufmerksamkeit, alle Aspekte des Autofahrens richtig anzuwenden, schließlich ist alles neu und das gleichzeitige Bedienen der Pedale, diverser Schalter und des Lenkrads müssen erstmal erlernt werden. System 2 leistet somit volle Arbeit. Nach einigen Jahres Fahrpraxis gehen diese Tätigkeiten in Fleisch und Blut über oder anders gesagt: Man macht sie automatisch und somit durch System 1. Ähnlich geht es Kindern im ersten Schuljahr, die lernen, handschriftlich zu schreiben. In den ersten Lernjahren klassische Aufgabe von System 2, während man als Erwachsender meist mühelos, also auf System 1 basierend, einfache Texte schreibt.

Mit dem Wissen um System 1 und System 2 kann man nun auch begründen, warum man den Gorilla oder andere Veränderungen der Videosequenz übersehen hat. Die Aufgabe "Zählen der Ballwechsel von Team weiß" hat das willentliche System aktiviert und somit einen klaren Fokus auf die scheinbar wichtigen Details gelegt. Um das Gehirn nicht zu überlasten, werden andere Details ausgeblendet. Die Einteilung der Informationen in die Kategorien "wichtig" und "unwichtig" erfolgt im Alltag meist unbewusst. Die Problematik dabei: Häufig sind scheinbar unwichtige Informationen doch wichtig. Als Konsequenz daraus entstehen Denkfallen und Irrtürmer, die letztlich Ursachen für Fehler sind.

Priming – ein besonderes Phänomen

Es gibt viele Arten von wahrnehmungspsychologischen Verzerrungen. Das Scheinwerfermodell besagt, dass nur ein kleiner Ausschnitt in der Aufmerksamkeit von Personen liegt [3]. Im Gorilla-Experiment war der Scheinwerfer im übertragenden Sinne auf das Zählen der Ballwechsel gerichtet – doch viele andere Ereignisse, die sich in der Szene abgespielt haben, sind für die Betrachtenden im Dunkeln geblieben. Im alltäglichen gibt es viele Situationen, in denen die Wahrnehmung auf unwichtige Dinge gelenkt wird und man den Fokus für das Wesentliche verliert.

Das Denken der Menschen wird von vorherigem Denken beeinflusst.

Ein weiteres Phänomen auf dem Gebiet der Wahrnehmungspsychologie ist das sogenannte Priming. Es sagt aus, dass das Denken von Menschen von vorherigem Denken beeinflusst wird. Dieses Phänomen wird beispielhaft an einem Experiment beschrieben, das im englischsprachigen Raum durchgeführt wurde [1]. Dabei sollten Probanden das Wortfragment SO*P vervollständigen. Zuvor hatte man die Probanden in zwei Gruppen unterteilt, bei denen jeweils im Rahmen des Experiments bei der einen Gruppe eine unbewusste Assoziation mit "Essen" aufgebaut wurde und in der anderen Gruppe eine Assoziation mit "Haushalt". Das Ergebnis: Personen, die eine Assoziation mit "Essen" aufgebaut hatte, vervollständigten das Wort in der Mehrheit zu SOUP (Suppe), während die andere Gruppe mehrheitlich dazu tendierte, das Wort SOAP (Seife) zu kreieren.

Begründet wird dieses Verhalten durch das sogenannte Priming. Unbewusst werden dabei vorangegangene Denkweisen durch Reize wieder aktiviert und beeinflussen somit das Handeln oder im Allgemeinen die Kognition. Viele weitere verblüffende Experimente zeigen, wie diverse Reize menschliches Verhalten beeinflussen. Wenn man beispielsweise "geprimt" ist, an ein hohes Alter zu denken, neigt man zu "seniorentypischem" Verhalten (langsamer Gang etc.) [1].

Untersuchungsergebnisse nach politischen Wahlen in Arizona (USA) aus dem Jahr 2000 zeigten ebenfalls Interessantes. In Wahllokalen, die in einer Schule eingerichtet waren, wurden Parteien bevorzugt gewählt, die Erhöhung von Bildungsausgaben im Wahlprogramm aufgeführt hatten. Diesen statistischen Zusammenhang führen Wissenschaftlerinnen und Wissenschaftler ebenfalls auf Priming zurück. 

Priming im Experiment

Man kann das Priming-Phänomen leicht auf der Arbeit mit Kolleginnen und Kollegen oder privat im Freundeskreis als Probanden selbst erfahren. Dazu muss die folgende Aufgabenstellung gelöst werden: Gegeben sei die Figur, wie sie in Abb. 1 dargestellt wird.

Aufgabe der Teilnehmenden des Experiments ist es nun, diese Figur in vier deckungsgleiche Teile zu unterteilen. Eine angemessene Zeitspanne, etwa von fünf Minuten, sollte vorgegeben werden. Man wird schnell feststellen, dass es nicht gerade einfach ist, vier deckungsgleiche Teile herauszuschneiden (im Gegensatz zu drei Teilen, das wäre aber zu leicht). Man muss also nachdenken und somit das willentliche System, das als System 2 vorgestellt wurde, aktivieren. Möglicherweise brauchen die Probanden des Versuches auch länger als fünf Minuten. An dieser Stelle sei noch erwähnt, dass viele Faktoren Einfluss auf die Kognition haben können, etwa persönliche Eigenschaften wie Aufmerksamkeit, Erwartung oder Gewöhnung oder situative Eigenschaften, die die Reizintensität beeinflussen. Entsprechend sollte das Experiment in einer ruhigen Umgebung durchgeführt werden, bei gutem Licht und nicht gerade zum Ende eines anstrengenden Tages.

Des Rätsels Lösung ist nicht leicht – zumindest ist es nicht intuitiv. Es ist in Abb. 2 dargestellt.

Nun soll eine weitere Aufgabe gelöst werden. Diese ist noch schwieriger – das sollte auch den Teilnehmenden fairerweise im Vorfeld so kommuniziert werden. Nun ist es die Aufgabe, die in Abb. 3 dargestellte Figur in fünf deckungsgleiche Teile zu unterteilen. Aufgrund des erhöhten Schwierigkeitsgrades sollte ebenfalls mehr Zeit vorgegeben werden, es empfehlen sich sieben bis acht Minuten.

Schon bald nach Beginn wird man die umfangreichen und gescheiterten Lösungsversuche der Probanden erkennen und in das ein oder andere verzweifelte Gesicht schauen. Bereits nach wenigen Minuten wird man ebenfalls feststellen, wie sich der "Ah-ja"-Effekt im Kreis der Probanden zeigt. Denn im Gegensatz zu den Ankündigungen handelt es sich tatsächlich um eine leichte Aufgabe. Abb. 4 zeigt die entsprechende Lösung. Der Grund für das anfängliche Scheitern und Nichtfindung einer Lösung liegt wieder in Priming. Durch die erste Aufgabe aus Abb. 1 wird System 2 angeworfen, und zwar so, dass es in einer bestimmten Art und Weise "kompliziert" zu denken beginnt. Dieses komplizierte Denken wird in der zweiten Aufgabe in Abb. 3 schlichtweg fortgesetzt.

Welche Einflüsse gibt es in der Softwareentwicklung?

Bislang wurden einige Phänomene vermittelt, die zeigen, wie schnell die Wahrnehmung des menschlichen Gehirns verzerrt sein kann. Nun werden die gewonnenen Informationen auf die tägliche Arbeit in der Softwareentwicklung transferiert. Bereits im Jahr 1990 setzte sich Timm Grams mit dem Thema "Denkfallen und Programmierfehler" auseinander [3]. Dabei geht er zunächst der Fehlerkultur des Programmierens auf den Grund und sieht die Ursache für etwaige Denkfallen ebenfalls in wahrnehmungspsychologischen Effekten, wie sie hier vorgestellt wurden. Abb. 5 visualisiert die Klassifizierung von Programmierfehlern.

Grams unterscheidet zunächst zwischen Irrtürmern und Schnitzern. Bei letzteren handelt es sich um kleine Fehler des "täglichen Lebens", zum Beispiel Versprecher oder Tippfehler. In der Programmierung begegnet man Schnitzern sehr häufig. Das Semikolon am Ende einer Anweisung in Java oder das Vergessen von Variableninitialisierungen sind typische Beispiele dieser Kategorie. Irrtümer sind schon etwas komplexer. Grundsätzlich lässt sich ein Fehler als Irrtum bezeichnen, wenn ein Programmierer oder eine Programmiererin einen Fehler auch beim wiederholten Durchlesen nicht erkennt. Die Ursache kann individuell sein, etwa durch mangelnde Fähigkeiten und Begabung oder einfach durch die falsche Ausbildung. Wer nicht weiß, dass am Ende einer Anweisung in Java ein Semikolon kommt, wird unter Umständen lange nach dem Fehler suchen. Überindividuelle Fehler sind Fehler, die nicht auf eine einzelne Person zurückzuführen sind, sondern auf eine größere Population – wie auf Informatikerinnen und Informatiker oder andere Berufsgruppen. Unterschiedliche Berufsgruppen haben in mancherlei Hinsicht unterschiedliche Denkweisen. Denkt ein Informatiker oder eine Informatikerin an einen "Prozess", so hat er oder sie möglicherweise automatisierte Geschäftsprozesse oder Unix-Systemprozesse im Kopf. Juristinnen und Juristen assoziieren mit einem Prozess eine Verhandlung vor Gericht. Für Küchenpersonal hat "Gericht" wieder eine andere Bedeutung als im Rechtswesen. Das Hintergrundwissen ist also unterschiedlich bzw. das Hintergrundwissen einer Population ist nicht angemessen für die Aufgabenstellung einer anderen Population. Es kommt zu typischen Denkfallen und folglich zu Fehlern.

Die kennengelernten Denkfallen, die aufgrund verzerrter Kognition entstehen, können wiederum typisch für eine Personengruppe sein. So neigen Softwareingenieurinnen und Softwareingenieure in gleicher Weise dazu, Fehler zu machen. Sowohl das Scheinwerfermodell und Priming sind angeborenes Verhalten, denn alle Menschen neigen dazu, auf diese Denkirrtümer "hereinzufallen". In manchen Fällen führt auch erlernte Tradition zu Fehlern, etwa wenn ein jahrelang praktiziertes Vorgehen plötzlich keine Anwendung findet. Wer es von Java gewohnt ist, ein Semikolon ans Ende einer Anweisung zu schreiben, wird es auch in den ersten Gehversuchen mit Kotlin machen, auch wenn es syntaktisch optional ist und per Konvention nicht vorgesehen ist.

Als Softwareentwicklerin oder Softwareentwickler ist man häufig in komplexen Problemräumen unterwegs. Ist eine aufwändige Lösung für ein komplexes Problem einmal gefunden, steht man meist vor dem nächsten Problem. Durch das Prinzip des Primings ist das Verhalten angeboren, das komplizierte Denken fortzusetzen – auch wenn die Lösung wesentlich einfacher ist. Wer kennt nicht die Situation, in der er bis abends spät an einer Lösung sucht, frustriert und ergebnislos den Tag beendet und am Folgetag nach nur wenigen Minuten mit "klarem Kopf" die Einfachheit des Problems erkennt und direkt die Lösung implementieren kann?

So manch eine Programmiererin oder ein Programmierer dürfte auch schon "Opfer" des Scheinwerferprinzips geworden sein. Treten zur Java-Entwicklungszeit Exceptions auf, dienen die Stacktraces mit entsprechendem Verweis auf den Befehl inklusive Zeilenangaben zu Diagnosezwecken, um den Fehler bzw. dessen Ursache rekonstruieren zu können. Der "Scheinwerfer" leuchtet präzise auf die Stelle, wo die Exception aufgetreten ist. Doch nicht immer liegt an der ausgeleuchteten Stelle auch die Ursache für das Problem. Eine fehlende Annotation oder eine fehlende Initialisierung an ganz anderer Stelle könnte auch ausschlaggebend sein.

Vermeiden von Denkfallen und Fehlern

Eine bereits erwähnte Erkenntnis muss an dieser Stelle in Erinnerung gerufen werden: Denkfallen und Fehler kann man nicht vollständig vermeiden – aber mit Wissen über die im Text vorgestellten Probleme kann man dazu beitragen, Denkfallen zu reduzieren. Menschen haben unterbewusst eine sogenannte Strukturerwartung. Daher ist es wichtig, sich in der täglichen Arbeit in der Softwareentwicklung auch an definierte und bekannte Strukturen zu halten. Das kann und wird im Regelfall auf verschiedenen Ebenen stattfinden. Auf Code-Ebene ist es wichtig, dass der Code von guter Qualität ist und Good Practices, Coding-Konventionen sowie im Team vereinbarte Regeln eingehalten werden. Ist dies schon initial nicht der Fall, mag sich jemand, der den Code lesen und verstehen möchte, schwertun. Liest ein Programmierer oder eine Programmiererin ein Code-Fragment, das unnötigerweise kompliziert entwickelt wurde, wird er oder sie auch bei anderen Code-Fragmenten ebenfalls die Annahme treffen, es sei "mit der Kirche um’s Dorf" entwickelt worden. Es ist empfehlenswert, ungewöhnliche oder komplizierte Programmierweisen, wenn möglich, zu vermeiden.

Würde man das Szenario mit einem Unit-Test abdecken, würde der Fehler sehr wahrscheinlich auffallen.

Auch auf den übergeordneten Ebenen oberhalb der Code-Ebene sollen bekannte Strukturen angewendet werden, also Entwurfsmuster auf Klassenebene und Architekturmuster auf (Makro-)Architekturebene. Eine umfangreiche Dokumentation ist ebenso erforderlich. Hier gilt es zu beachten, dass diese auf potenzielle Denkfallen hinweist, wenn es sich abzeichnen lässt, das welche existieren. Das kann zum Beispiel der Fall sein, wenn von bestimmen Strukturen aus bestimmten Gründen abgewichen wurde oder vielleicht sogar bekannte Muster vermeintlich falsch, anders oder unter einem anderen Namen umgesetzt wurden. Ein Glossar sollte zu jeder Softwaredokumentation gehören, um das Begriffschaos zu vermeiden.

Kommen neue Entwicklerinnen oder Entwickler zum Projekt hinzu, sollten sie den Code sowie sämtliche Funktionalitäten kritisch hinterfragen. Insbesondere sollte man keine impliziten Annahmen treffen oder stille Erwartungen haben, die womöglich auf beispielsweise erlerntem Verhalten (Tradition) aus vorherigen Projekten basieren und somit möglicherweise falsch sind. Auch sollten Tests auf verschiedenen Ebenen der Testpyramide vorhanden sein. Man erinnere sich an das eingangs erwähnte Beispiel mit der Currywurst und der Pommes: Würde man das Szenario mit einem Unit-Test abdecken, würde der Fehler sehr wahrscheinlich auffallen.

Um Fehler basierend auf Denkfallen zu vermeiden, muss das Hintergrundwissen für eine Aufgabenstellung angemessen sein. Wechselt man die Domäne, für die man tätig ist, beispielsweise durch den Wechsel eines Arbeitgebers, des Projektteams oder der Fachabteilung, muss das Hintergrundwissen angepasst werden. Gute Dokumentation ist dafür ebenso Voraussetzung wie die Erfüllung von Struktur- und Kausalitätserwartungen auf allen Ebenen des Software- und Architekturentwurfs sowie der Implementierung.

Fazit

Menschen "leiden" naturgemäß unter kognitiven Verzerrungen. Auch wenn dieser Umstand zum natürlichen Leben gehört, führt er dazu, dass Menschen Fehler machen. Daraus folgt, dass Fehler und irrtümliche Entscheidungen oder irrtümliches Handeln ebenso Teil unseres natürlichen Lebens und somit unvermeidbar sind. An seinen individuellen Fehlern kann man arbeiten, zum Beispiel durch regelmäßige fachliche Weiterbildungen oder Trainings, die Fähigkeiten verbessern. Mit dem Wissen über Denkfallen kann man überindividuellen Fehlern vorbeugen. In der Softwareentwicklung beispielsweise durch gute und vollständige Dokumentation, sinnvolle Tests und hohe Testabdeckung sowie durch strikte Einhaltung von Erwartungen im Hinblick auf die Strukturen des Systems sowie von Kausalitäten (Ursachen für Ereignisse sind klar). Insgesamt gilt dabei der Grundsatz: Es ist wichtiger, Richtlinien zu haben und zu befolgen, als dass die Richtlinien perfekt sind.

Quellen
  1. D. Kahneman: Schnelles Denken, langsames Denken. München: Siedler Verlag, 2012.
  2. Youtube: D. Simons: The Monkey Business Illusion
  3. T. Grams: Denkfallen und Programmierfehler. Berlin Heidelberg New York: Springer-Verlag, 1990.

Autor

Christian Everke

Christian Everke (M.Sc.) leitet ein Team von Entwicklerinnen und Entwicklern in der Line of Business "Manufacturing Industry" der adesso SE.
>> Weiterlesen
Das könnte Sie auch interessieren
Kommentare (0)

Neuen Kommentar schreiben