Design Thinking als Katalysator im Requirements Engineering
Als eine der größten Herausforderungen innerhalb der Softwareentwicklung gilt das Requirements Engineering, also das Identifizieren von Anforderungen und Wünschen, die die Anwender beim Bedienen einer Software haben. Vor allem das Auffinden von den unter der Oberfläche liegenden Motiven ist eine der schwierigsten und auch zeitintensivsten Phasen im Software-Entwicklungsprozess. Jeder spricht heute von den Customer Insights, der Customer Journey und davon, dass man den Anwender verstehen muss. Sich aber wirklich in dessen Welt zu begeben und ihn oder sie zu verstehen, verlangt ein großes Maß an Empathie und auch Zeit.
Wie ein Designer denken
In diesem Zusammenhang bietet Design Thinking einen Ansatz, der auf nutzerzentrierte Lösungen setzt und sich dabei reichlich aus dem Werkzeugkasten eines Designers bedient. Im Gegensatz zu den meisten Vorgehensweisen aus der Wissenschaft und Praxis, die häufig die technische Machbarkeit in den Mittelpunkt stellen, stehen beim Design Thinking das nutzerzentrierte Entwickeln sowie der Mensch und dessen Bedürfnisse im Fokus.
Schon der Name Design Thinking verweist auf dessen Ursprung – also wie ein Designer zu denken. Ob in der Industrie, in Dienstleistungsunternehmen oder selbst für gemeinnützige Projekte: Dem Ansatz wird eine universelle Anwendbarkeit auf alle Arten von Problemen oder Herausforderungen zugeschrieben.
Eine Einsatzmöglichkeit von Design Thinking in der Softwareentwicklung stellt den Beginn des Prozesses, also das Anforderungsmanagement, dar. Hier unterstützt Design Thinking ganz gezielt die Entwicklung des Product Backlogs. In multidisziplinären Teams werden in aufeinanderfolgenden Phasen User Stories entwickelt, hinterfragt, verworfen oder neu erdacht. Zu welchem Zeitpunkt die User Stories in die Entwicklung gehen, entscheidet das Vorgehen zur Umsetzung. Bei sehr komplexen Problemstellungen bieten sich agile Entwicklungsmethoden wie beispielsweise Scrum an – bei klar strukturierten und weit vorausgedachten Anforderungen spricht hingegen nichts gegen klassische Softwareentwicklung nach dem Wasserfallmodell. Innerhalb von Scrum gehen die ersten User Stories zum Beispiel bereits in die Entwicklung, während das Team parallel an weiteren arbeitet.
Customizen erlaubt!
Design Thinking gibt hier aber lediglich ein Framework vor, das es je nach Problemstellung anzupassen und mit Leben zu füllen gilt. Ob der Prozess jetzt fünf oder sechs Phasen hat und ob den klassischen Phasen des Empathize, Define, Ideate, Prototype und Test das Understand noch vorgelagert ist, ist meiner Ansicht nach zu vernachlässigen. Wichtig ist nicht, dass die Phasen alle haarklein nach Lehrbuch durchlaufen werden, sondern welche Qualität die einzelnen Schritte haben. Durch den iterativen Approach von Design Thinking, bei dem man mit einem sehr simplen Prototyp, abgeleitet aus grundlegenden User Stories, startet und ihn mit Anwendern testet, nähert man sich schrittweise einer optimalen Lösung. Die Feedbacks von Nutzern sind wertvolle Impulse, die kontinuierlich in die Softwarelösung einfließen.
Was Design Thinking vielleicht von anderen Methoden der Anforderungserhebung unterscheidet, ist die starke Fokussierung auf die Exploration des Problems, der bewusste Wechsel divergenter und konvergenter Denkphasen und das Timeboxing, also die klare Struktur mit trotzdem sehr offenen und kreativen Anteilen.
Wer ein Softwareprojekt mit uns plant, sollte Design Thinking als Methode unbedingt in Betracht ziehen. In Kombination mit agilen Entwicklungsmethoden unterstützt Design Thinking bei der Gestaltung einer Lösung, die den Wünschen derer entspricht, die sie am Ende benutzen.
(Foto: HPI Academy)