Um die soziale Dynamik von komplexen Softwareentwicklungsprozessen zu verstehen, ist es notwendig, zu analysieren, in welche Strukturen die handelnden Personen eingebunden sind und wie diese Einbindung ihre Arbeit beeinflusst. Damian Tamburri hat in den letzten Jahren in einer Reihe von Veröffentlichungen die relevanten sozialen Strukturen ermittelt, analysiert und auf ihre Wirkung hin eingeordnet. Er unterscheidet zunächst vier Grundtypen: Communities, Netzwerke, Gruppen und Teams. Communities und Netzwerke existieren im Wesentlichen außerhalb von konkreten Softwareprojekten, Teams und Gruppen findet man unmittelbar in den Projekten.
In Communities wird geteilt
Communities werden dazu gebildet, etwas zu teilen: Ein Interesse, Wissen, Erfahrungen. Diese Communities sind somit für den Alltag unterstützend, ohne direkt in die tägliche Arbeit einzugreifen. Allerdings wissen gerade Entwickler, welche große Rolle sie heute beim schnellen Finden von Problemlösungen spielen können. Für Organisationen kann es deshalb ein Produktivitätsgewinn sein, den Mitarbeitern die Möglichkeit der Teilnahme an Communities zu geben. Andererseits befürchten manche Unternehmen zu recht, dass Know How abfließen könnte, welches einen Wettbewerbsvorteil darstellt. (Dieses Thema werde ich demnächst bei der Diskussion eines weiteren Papers aus diesem Umfeld aufgreifen).
Eine Ausnahme bilden Communities of Practice, darunter werden diejenigen Strukturen verstanden, die gemeinsam an offenen Systemen arbeiten, etwa an Open Source Projekten.
Allen Communities gemeinsam ist, dass die Mitglieder recht einfach und ohne Zutrittsregeln Mitglied werden können, und dass sie die Community genauso einfach wieder verlassen können. Entscheidungsprozesse sind in einer Community, wenn überhaupt, nur durch die Ausbildung einer impliziten Kultur möglich.
Netzwerke nutzen Technik
Das wichtigste Merkmal eines Netzwerkes ist die Sicherstellung einer gegenseitigen Erreichbarkeit. Tamburri verweist deshalb darauf, dass Netzwerke zumeist an Technologien (E-Mail, Soziale Medien, Kollaborationsplattformen) gebunden sind. Netzwerke bilden letztlich die Infrastruktur für andere kollektive Strukturen. Andererseits, und das ist für die Frage der kollektiven Entscheidungsfindung bedeutsam, erlauben Netzwerke, vorgegebene und definierte Entscheidungswege zu umgehen, Entscheidungsmechanismen, die unserer eigenen Forschung nach die Rationalität der Organisation ausmachen, können durch Netzwerke ausgehebelt werden.
Teams und Gruppen
Die eigentliche Arbeit wird in Teams und Gruppen durchgeführt, diese werden überhaupt zu dem Zwecke gebildet, die Projektarbeit zu organisieren. Tamburri unterscheidet zwischen ihnen: Gruppen werden projektunabhängig und langfristig gebildet, sie bieten den Rahmen, in dem die Arbeit organisiert wird. Abteilungen, aber auch Entwickler- und Testteams können dazu gezählt werden. Das, was Tamburri als Teams, oder Projektteams bezeichnet, sind kollektive Strukturen, die innerhalb des Projekts aus Personen zusammengesetzt werden, die gemeinsam eine bestimmte Aufgabe innerhalb des Projekts lösen sollen.
Entscheidungsfindung und Rationalität
Für unsere Forschung bei INDAL ist diese Klassifikation insofern interessant, dass die verschiedenen kollektiven Strukturen jeweils eine bestimmte Art von Rationalität in der Entscheidungsfindung zeigen, deshalb können sie in der Perspektive der ökonomischen Theorie unterschiedlich als rationale Akteure angesehen werden, für deren Beschreibung und Erklärung ökonomische Theorien herangezogen werden können. Gruppen haben durch ihre langfristige Struktur feste kulturelle regeln der Entscheidungsfindung, die entweder durch Autorität von Führungspersonen oder durch Regelwerke abgesichert sein können. Allerdings kann ihre Rationalität durch Netzwerke, aber auch durch Communities unterlaufen werden. Teams bilden selten eine kollektive Rationalität aus, da sie zu kurzzeitig existieren und die Teilnehmer oft aus unterschiedlichen Kulturen kommen. Ihre Entscheidungen sind deshalb im Sinne der ökonomischen Theorie selten als rational zu betrachten.
Auch für die unmittelbare Unternehmenspraxis können die Ergebnisse sinnvoll genutzt werden, indem auf ihrer Basis eine systematische Analyse der kollektiven Strukturen im Unternehmen und in Projekten durchgeführt wird. Letztlich ist das immer ein Teil der Anforderungsanalyse für komplexe Individualsoftware. Im Ergebnis können Schwachstellen erkannt und Optimierungen in den Entscheidungsstrukturen vorgenommen werden.
Tamburri, D., Lago, P., & Vliet, H. (2013). Organizational social structures for software engineering ACM Computing Surveys, 46 (1), 1-35 DOI: 10.1145/2522968.2522971