Softwareentwicklung: Nur ein Spiel?

Continuous Architecture  –  77 Kommentare

Metaphern für Softwareentwicklung gibt es viele. Sie als Spiel zu begreifen, scheint zunächst respektlos. Wenn man tiefer gräbt, ergeben sich aber zahlreiche Parallelen.

Der Begriff "Spiel" steht erst mal für Spaß. Softwareentwicklung ist aber kein Spaß – es geht meistens um ernsthafte Geschäftsziele und oft hohe Budgets. So etwas ist kein Spiel.

Die Spieltheorie ist allerdings eine wissenschaftlich anerkannte Theorie, die sich mit Strategien für Spiele und andere Entscheidungssituationen beschäftigt. Diese Theorie hat viele Anwendungen. Auch Kriege oder Vorgehen in der Wirtschaft werden spieltheoretisch untersucht und so bessere Strategien entwickelt.

Spiele scheinen außerdem trivial zu sein. Schließlich spielen schon Kinder. Aber auch hier liegen bei näherer Betrachtung die Dinge anders. Einige Profis widmen ihr ganzes Leben Spielen wie Schach oder dem asiatischen Spiel Go. Es gibt viel mehr denkbare Go-Stellungen (ca. 10^170) als Atome im Universum (ca. 10^80). Das ist alles andere als trivial.

Softwareentwicklungsprojekte als Spiele zu betrachten, führt zu einigen Erkenntnissen:

  • Man spielt ein Spiel, um zu gewinnen. Wenn man ein Softwareprojekt als Spiel begreift, stellt sich die Frage nach den Bedingungen für einen Sieg. Das wiederum führt zu Fragen, die oft vernachlässigt werden: Was soll genau entwickelt werden? Neben den Anforderungen spielen dabei auch die Qualitätsziele eine Rolle. Soll das System besonders sicher sein? Oder benutzerfreundlich? Wie genau sind die Siegbedingungen – wann ist das System sicher oder benutzerfreundlich genug? Wie kann man den Sieg besonders einfach erreichen – was ist der minimale Aufwand, um die Anforderungen zu erfüllen? Was kann man alles weglassen? Das sind gute Ansätze, um ein Softwareprojekt wirklich gewinnbringend umzusetzen.
  • Jeder Zug in einem Spiel sollte auf den Sieg hinarbeiten. Bei Softwareprojekten sollte jede Aktivität ebenfalls auf das Ziel einzahlen. Das ist zwar eine offensichtliche Aussage, aber Softwareprojekte sind komplex. Dadurch ist es manchmal gar nicht so einfach zu entscheiden, ob die Maßnahme hilfreich ist. Und dann kommt noch die Priorisierung dazu. Sind die konkreten Schritte wirklich jene, die uns mit dem geringsten Aufwand dem Ziel am nächsten bringen?
  • Bei einem Spiel ist der Stand des Spiels jederzeit auf dem Spielbrett nachvollziehbar. Software ist leider virtuell, aber Feedbacks durch Tests, durch Kunden oder durch Monitoring zeigen den Stand der Software aus. Den Zustand der Software zu kennen und besseres Feedback zu erhalten, ist geradezu eine der wichtigsten Voraussetzungen für ein erfolgreiches Softwareprojekt.
  • Schließlich ist Softwareentwicklung kollaborativ. Alle am Projekt Beteiligten arbeiten gemeinsam auf das Ziel hin. Jeder hat dabei eine andere Rolle und andere Fähigkeiten. Das ist genau das Szenario von kollaborativen Spielen wie Pandemie. Ziel dieses Spiels ist es, den Ausbruch einer globalen Seuche zu verhindern. Jeder Spieler spielt eine andere Figur: Der Arzt kann bereits Infizierte besonders gut heilen, der Logistiker kann andere Figuren besonders gut in der Welt umherreisen lassen. Also sollte der Logistiker den Arzt umherschicken – oder gibt es andere Figuren, die noch dringender reisen müssen? So koordinieren sich die Spieler ständig, um durch die Synergien zwischen den Figuren das Spiel zu gewinnen. Das sollte in einem Softwareprojekt ähnlich sein: Jeder Beteiligte hat bestimmte Fähigkeiten und Erkenntnisse. Nur wenn wer diese zusammen möglichst gut nutzt, wird das Projekt erfolgreich beenden. Dabei spielt genau wie in einem Spiel auch die Kreativität eine wichtige Rolle – man muss die verschiedenen Möglichkeiten und Synergien eben geschickt ausnutzen.

tl;dr

Spiele haben Gewinnbedingungen. Jede Aktivität sollte auf die Gewinnbedingungen einzahlen und man muss kollaborieren. Das hilft auch bei Softwareentwicklung.

Vielen Dank an meine Kolleginnen und Kollegen Hanna Prinz, Tobias Erdle und Sonja Scheungrab für die Kommentare zu einer früheren Version des Artikels.