Nutzer-getriebene Softwareentwicklung

In der Softwareentwicklung steht man vor der ständigen Herausforderung, dem Nutzer ein Produkt zu liefern, das ihn glücklich macht. Dies gelingt am besten Daten-basiert. Man fängt mit Hypothesen bei den Problemen der Nutzer an. Doch wie genau geht das, wenn alle Entscheidungen nicht auf eigenen Erwartungen basieren, sondern ausschließlich auf Nutzer-Feedback und -Interaktionen?

Ich möchte mich aus der Perspektive eines Softwareentwicklers dazu äußern, weil ich auch mit dem heutigen Wissen und Best Practices leider immer wieder erlebe, dass zu spät bemerkt wird, dass “am Nutzer vorbei entwickelt” wurde. Auch agile Entwicklung mit Scrum und Kanban hilft wenig, wenn nicht regelmäßig Feedback schon während der Entwicklung eingeholt und in die nächsten Milestones integriert wird. Methoden wie Prototyping, Acceptance-Tests, A/B-Testing und weitere helfen, Apps und Websites zu entwickeln, die Nutzer-zentriert und Usability-fokussiert Anforderungen erfüllen. Leider neigen viele Unternehmen, Product-Owner und Entwicklungs-Teams dazu, schnell Nutzer-betriebsblind zu werden und sich zu sehr auf Strategien, Prozesse, Geschäftsmodelle, KPIs und allgemein der ursprünglichen Idee zu konzentrieren, statt regelmäßig zu hinterfragen.

Hypothesen nutzen

Viele Silicon-Valley-Startup Ratgeber (wie das Buch “The Lean Startup”) sehen Produktentwicklung auf Basis von Hypothesen als die Grundlage für erfolgreiche Software. Die Lean Startup Methode beschreibt Hypothesen etwa so: Experimente und Nutzer-Tests sind wichtig, um Annahmen als zutreffend (oder nicht-zutreffend) zu bestätigen und durch diese Erkenntnisse Rückschlüsse zu ziehen, die das Produkt verbessern.

Von der Hypothese zum Experiment: Unsere eigenen Entscheidungen als Product-Owner oder Stakeholder stimmen nicht zwangsmäßig mit denen der Nutzer überein. Ein gängiger Lösungsansatz klingt einfach, erfordert jedoch Disziplin: Entscheidungsträger und Verantwortliche sollten, indem sie Hypothesen definieren, immer davon ausgehen, mit ihren Annahmen falsch zu liegen, und ihre Aussagen zuerst validieren.

Es geht darum, herauszufinden, worauf die Nutzer wirklich Wert legen und Entscheidungen stets auf Basis von Daten zu treffen. Denn nicht sie sollten geschult werden müssen, sondern die Software sich ihnen anpassen. Dabei sollten Hypothesen immer testbar und falsifizierbar sein. Diese können z.B. wie folgt formuliert werden. “Ich glaube, meine Zielgruppe X wird Lösung Y nutzen weil folgender: Grund”.
Nachfolgende mögliche Methoden, um vor und während der Entwicklung näher an die Nutzer heranzukommen und Insights gewinnen zu können. Das dient dem Ziel, sich auf die richtigen Features zu konzentrieren und zu verhindern, unnötig Aufwand, Zeit und Geld zu investieren.

Nutzer-Feedback Methoden

User Driven Software Development Workflow

1

Entwerfe klickbare Prototypen Ihrer App oder Website mit Mockup-Tools. Integriere dabei nur die Kernfunktionen (MVP) und sammele Feedback von Arbeitskollegen und Freunden. Verbessere deine Mockups in mehreren Iterationen. Jede Iteration wird helfen, sich auf Funktionen zu fokussieren, die noch nicht gut kommuniziert oder nicht intuitiv genug zu bedienen sind. Außerdem wird es aufzeigen, ob man auf gewisse Funktionen gänzlich verzichten kann. Es geht neben dem Optimieren der User Experience (UX) darum, die Priorisierung für das wirklich Wichtige zu finden. Erst nachdem dieser Schnitt abgeschlossen ist, darf man mit der Programmierung beginnen. Hier unterstützt eine Agentur für digitale Lösungen, um vor der Konzeption des Prototypen bis zur Programmierung gute Apps und Websites zu entwickeln.

2

Am besten führt man nach jedem Milestone oder Sprint Akzeptanztests (User-Acceptance-Tests) durch, indem man Projekt-fremde Personen, welche die Software bedienen müssen, zu einem persönlichen Interview einlädt. Diese Tests bringen die Einsicht, Features aus Sicht der Nutzer zu überprüfen. Nutzerfreundlichkeit und Bedienbarkeit stehen im Vordergrund, um Probleme von Usability, UX oder UI zu identifizieren. Man schreibt Feedback auf und nimmt die Interaktionen als Screenrecording auf. Nach jedem Interview nimmt man sich Zeit, mit seinem Team das Verhalten des Nutzers zu evaluieren. Dieser Ablauf wird regelmäßig mit Personen wiederholt, die die Software noch nie benutzt haben.

3

Über Umfrage-Plattformen wie Surveymonkey kann man gut A/B-Tests von Grafik-, Marketingmaterial und App/Web-Screenshots nutzen und dort die Teilnehmer direkt nach Verbesserungsvorschlägen fragen. Vorteil dieser nicht-direkten und persönlichen Möglichkeiten ist, dass Sie sehr einfach skalierbar sind (große Menge an Umfrage-Teilnehmern), sich spezifisch bestimmte Zielgruppen auswählen lassen und man statistische Auswertungen erhält. Bei Teilnahme-Kosten ab einem Euro pro Teilnehmer (oder für spezielle Zielgruppen ab zwei bis drei Euro) ist es auch in kleinen Ausmaßen möglich und verlangt keine Betreuung der Teilnehmer.

4

Das Durchführen eines Soft-Launch der App oder Website in ausgewählten Testmärkten erlaubt es Nutzern schon früh im Entwicklungsprozess, das reale Produkt zu erleben, bevor es fertig entwickelt wurde. So kann frühzeitig Feedback eingeholt werden ohne ggf. schlechte PR (bei dem Launch eines noch nicht ausgereiften Produktes) im Heimatmarkt zu riskieren. Echte Kunden können es nutzen und damit interagieren, um zu helfen, Erkenntnisse zu gewinnen und Insights zu erhalten, welche Features im noch laufenden Entwicklungsprozess priorisiert werden sollen.

5

Das Integrieren von Analytics- und Tracking-Tools in die Software ist wichtig und man sollte sich die Zeit nehmen, benutzerdefinierte Events zu erstellen und einzubauen. Auf die Anwendung zugeschnittene Charts ermöglichen, das Nutzerverhalten zu analysieren, um Bottle-Necks und Churn-Points zu identifizieren. So kann es z.B. in einer App sein, dass Nutzer an einer bestimmten Stelle nicht weiter wissen oder bei einer Website bestimmte Bereiche häufig, andere aber gar nicht besuchen. Heatmaps geben hier weitere Infos über die Beliebtheit von Bereichen auf den Seiten.

6

Nutze die A/B-Test-Funktionen der App-Stores für Mobile Apps oder über Tracking-Tools für eigene Websites. Hierüber kann man einfach die Conversion Rate verbessern. Nutzer werden nach dem Zufallsprinzip in verschiedene Gruppen aufgeteilt umgeleitet und sehen unterschiedliche Logos, Screenshots, Bilder, Texte oder Layouts. Der Einfluss dieser Tests auf das User-Engagement und die User Experience kann so leicht statistisch ausgewertet werden. Es gibt diverse Plattformen auf dem Markt, die einen dabei unterstützen, solche Tests laufen zu lassen.

7

Nutze Personas, um einen Überblick über Ihre Zielgruppen zu erhalten. Sie sind fiktive Nutzer einer Zielgruppe und wie die realen Nutzer haben sie Bedürfnisse, Fähigkeiten und Ziele. Man erstellt Personas, um die potentielle Zielgruppe besser einschätzen zu können und überprüft regelmäßig, ob die realen Nutzer noch den Erwartungen an die definierten Personas entsprechen. Wenn sich die Zielgruppe unbewusst verändert, muss sich vielleicht auch das Produkt anpassen. Oder man entscheidet sich dazu, Änderungen am UI / Design durchzuführen, um die ursprüngliche Zielgruppe wieder verstärkt zu erreichen.

8

Direktes Feedback: Habe ein offenes Ohr für App-Store Bewertungen und Kommentare sowie Feedback- und Support-E-Mails. Oftmals unterschätzt man, wie früh Nutzer bereits Usability-Probleme erkennen.

9

Biete einfache In-App-Feedback-Möglichkeiten wie ein Formular oder eine Sternebewertung an und geben Sie Anreize (z.B. Incentives), damit Nutzer Feedback senden können. Man belohnt Nutzer und lässt sie wissen, dass deren Meinung, das Produkt zu verbessern, wirklich ernst genommen wird, indem man regelmäßig mit ihnen kommuniziert und den Fortschritt (und Entscheidungen basierend auf Ihrem Feedback) zeigt.

10

Stelle der Community Kanäle zur einfacheren Kommunikation (wie Ticket-System, Forum, Support-E-Mail-Adresse oder Slack) zur Verfügung und pitche den Nutzern hierüber Ideen für kommende Features, um schon früh in Entwicklungsphasen um Feedback zu bitten. Vielleicht bedarf es auch gar nicht einem Pitch von Entwickler-Seite, weil sich die Community bereits in kreativen Ideen austobt, auf welche man dann eingeht und rege Diskussionen fördert.

11

Darf es ein bisschen experimenteller werden? Lasse Early-Adopter zu einem Teil Ihres Teams werden. Laden sie das interne Trello / Jira ein, und gebe ihnen direkten Kontakt zum Projektmanager und binde sie in den Entwicklungsprozess mit ein, während man sie regelmäßig über den Fortschritt und die Priorisierung informiert. Verstecke die Kommunikation nicht, sondern teile früh Infos und Priorisierung, um ihre Motivation zu maximieren, Ihnen bestmöglich Feedback zu geben und die Software zu testen. Auch wenn es im ersten Moment nach viel Aufwand klingt, wird das langfristige Engagement von Nutzern zu einem viel besseren Produkt führen und vielleicht gewinnt man dadurch sogar früher oder später einen festen Mitarbeiter.

12

Das Veröffentlichen von Teile der Software als Open Source fördert den Community-Gedanken, sodass technisch-versierte Nutzer an dem Projekt teilhaben und Feedback in Form von Bugfixing und neuen Funktionen direkt mit einbringen können. Nutzer, die Features unbedingt haben wollen, können diese dadurch leicht einbauen. Man erlangt nicht nur die Aufmerksamkeit von ggf. dringend benötigten, engagierten Softwareentwicklern, sondern fördert zugleich einen besseren Zugang zu Innovationen, durch die stärkere Einflussnahme verschiedener Personen zur umfangreichen Individualisierung.

13

Stellt APIs für die Software bereit, und erlaubt damit anderen Unternehmen und Entwicklern, das Ökosystem mit eigenen Ideen zu erweitern und so bereichern zu können (wie die Entwickler-APIs von Facebook oder APIs für verschiedene große Plattformen wie Google Suite, Github oder Slack). Dadurch wird das eigene Produkt zu einer Plattform, welches von anderen Tools erweitert und um neue Funktionen bereichert werden kann.

14

Wenn es sich bei der Software um ein Videospiel / Game handelt, fördere Modding, um das Ökosystem des Spiels zu erweitern. Unterstütze andere Spieler und Entwickler, indem man Tools, Level-Editoren und gute Dokumentationen bereitstellt. Auch eine Sandbox-Funktion mit bestimmten Regeln kann entwickelt werden, in der die Spieler ihre Kreativität ausleben können (z. B. Garry’s Mod oder Minecraft).

Benutzergesteuerte Softwareentwicklung: kurz und bündig

Benutzergesteuerte Entwicklung ist ein sehr einfaches Konzept, aber in der Realität gibt es einige Hindernisse, um es zu erreichen. Unternehmen lassen sich leicht von den Möglichkeiten neuer Technologien ablenken und verlieren aus den Augen, was ihre Kunden eigentlich wollen. Steve Jobs hat uns schon früh vor diesem Problem gewarnt, indem er eine seiner meistzitierten Einsichten über die Grundlagen des Erfolgs mit uns teilte: dass wir uns lieber fragen sollten, “wohin können wir die Kunden bringen”, anstatt “setzen wir uns mit den Ingenieuren zusammen…”.
Kunden sind viel mehr als nur der bloße Konsument des Endprodukts. Sie können - und sollten - die Inspiratoren, Unterstützer, sogar Mitgestalter von spannenden Produkten oder Dienstleistungen sein. Es kommt darauf an, dass Unternehmen ihren Kunden die Möglichkeit geben, zu den vertrauenswürdigen Kritikern und Beratern des Produkts zu werden, das sie selbst am meisten mögen. Die Intensität der Interaktivität und die gesteigerte Eigenverantwortung des Kunden bringt den Begriff “User Engagement” auf eine völlig neue Ebene.

Die benutzergesteuerte Softwareentwicklung ist nur ein kleiner Schritt in Richtung Produktperfektion. Wenn es um das ideale Kundenerlebnis geht, bringt ein solcher Ansatz das Produkt näher an das heran, was die Kunden erwarten. Gleichzeitig entsteht ein Teil des besten Kundenerlebnisses durch die aktive Beteiligung der Anwender an der Entwicklung und Fertigstellung ihrer Wunschsoftware. Das frühe Feedback der End-User erspart eine Menge Ärger, indem es sich auf anspruchsvolle Probleme konzentriert, sobald sie auftreten.

Autor

Stoil Shopov | Senior Softwareentwickler

Stoil ist ein erfahrener Software-Ingenieur mit 8 Jahren Erfahrung und einem starken Hintergrund in der Entwicklung mobiler Anwendungen in Java und Swift. Er ist außerdem ein erfahrener .net-Ingenieur mit DevOps-Kenntnissen in Azure und Amazon Web Services. Er liebt interdisziplinäre Arbeit und kann im Handumdrehen zwischen Technologien wechseln.
Wenn es darum geht, zu helfen, ist er bei allen Projekten, an denen er beteiligt ist, immer der Erste und eine echte Bereicherung für die Teams mit welchen er arbeitet!