Menschen von oben fotografiert, die an einem Tisch sitzen.

adesso Blog

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 schlechter Softwarequalität oder Verzögerungen im Projekt. Die schlechte Nachricht: 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 und Fehler schneller erkannt werden.

So einfach entstehen Denkfehler – ein Beispiel

Wie schnell wir Denkfehler machen oder in Denkfallen tappen, zeigt das folgende Beispiel, das in seiner Grundversion von Daniel Kahneman – Autor des Buches „Schnelles Denken, langsames Denken“ – übernommen wurde. 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 im digitalen Menü 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 1 Euro mehr kostet als die Pommes. Mit welchem Betrag werden die Pommes auf der Rechnung aufgeführt?

Die meisten Menschen tun sich leicht, diese Aufgabe zu lösen, sie 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. Kosten die Pommes 10 Cent und die Currywurst 1 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 dürfen die Pommes nur 5 Cent kosten, denn dann kostet die Currywurst 1,05 Euro und die Gesamtkosten liegen, wie gefordert, bei 1,10 Euro.

Das Beispiel zeigt: Wir machen Fehler, sogar sehr einfache. 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, wenn es sich im Sichtfeld befindet und nicht entsprechend verdeckt ist, denn gesunde Augen von Menschen nehmen circa fünf Millionen Reize pro Sekunde wahr. Ein Wahrnehmungsfilter leitet die mutmaßlich 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.

Das Denkverhalten aus psychologischer Perspektive

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 eins und das willentliche entsprechend als System zwei klassifiziert. Worin unterscheiden sich die beiden Systeme?

Viele 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 zu überlegen, wie viel zwei plus zwei 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. All diese Beispiele sind dem automatischen System, also System eins, zugeordnet.

Das System zwei, 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, etwa wenn man auf den Startschuss für einen Wettlauf wartet.

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.

Leider ist es so, dass beim automatischen Denken durch System eins viele Fehler passieren, was auch durch das eingangs erwähnte Beispiel mit der Currywurst und der Pommes verdeutlicht wird. Davor ist man in keiner Lebenssituation geschützt, auch nicht der Softwareentwicklung. 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. Das Prinzip des Primings etwa führt dazu, dass kompliziertes Denken fortgesetzt wird. Wer kennt nicht die Situation, in der er bis abends spät an einer Lösung arbeitet, 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 manch 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 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. Details über typische Verzerrungen wie z. B. Priming und die Auswirkungen auf die Softwareentwicklung zeigen die Veröffentlichung im Online-Magazin Informatik Aktuell und der dazugehörige Konferenzbeitrag bei den IT-Tagen 2021.

Fazit

Die Psychologie beschäftigt sich unter anderem mit Einflussfaktoren für 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. Menschen „leiden“ naturgemäß hierunter und machen Fehler. Mit dem Wissen über Verzerrungen kann man Fehlern vorbeugen und so die Programmierqualität verbessern.

Weitere spannende Blog-Beiträge aus der adesso-Welt findet ihr in unseren bisher erschienenen Blog-Beiträgen.

Bild Christian  Everke

Autor Christian Everke

Christian Everke ist Softwareengineer bei adesso und am Standort Dortmund tätig. Seine Schwerpunkte liegen in der Backendentwicklung - basierend auf gängigen Java Frameworks (JEE, Spring) und Produkten aus der Red Hat JBoss Middleware Produktfamilie.

Diese Seite speichern. Diese Seite entfernen.