Kognitive Belastung limitieren
Es hilft nicht, Komplexität herunterzureden. Die Belastung wird durch schlechte Performance und reduzierte Effektivität sichtbar. Zu gering eingeschätzte Komplexität hingegen, wirkt sich nicht negativ auf das Team aus.
Identifiziere die verschiedenen Domänen eindeutig und ordne sie nach folgenden Themen ein:
- simpel: der Weg ist meistens klar
- kompliziert: Änderungen müssen analysiert werden und können einige Interaktionen benötigen
- komplex: Lösung benötigt mehrere Experimente, Entdeckungen und Iterationen
Vor allem die Domänen gegeneinander einzuordnen, wird das Verständnis schärfen.
Folgende Heuristiken können helfen, die Domänen Teams zuzuordnen und sollten lediglich als Hilfen, jedoch nicht als Gesetze, verstanden werden:
- Weise jeder Domain ein einziges Team zu. Ist eine Domäne zu groß, wird sie zerlegt in Unterdomänen, welche jeweils einem Teams zugewiesen werden
- Jedes Team sollte fähig sein, 2-3 simple Domänen zu übernehmen, da sie wenig Belastung durch Kontextwechsel erzeugen.
- Ein Team, welches eine komplexe Domäne betreut, sollte keine weiteren Domänen betreuen, nicht mal eine simple. Dies folgt daraus, dass die teaminterne Priorisierung meist zugunsten der simplen ausfällt, sowie komplexe Domänen unüberschaubar sind.
- Verhindere, dass ein Team für 2 komplizierte Domänen verantwortlich ist. Das Team wird sich sonst aufspalten, was die kognitive Belastung erhöht. Dann zerlege das Team eher (Beachte: 5-9 Personen / Team).
Weitere Möglichkeiten die kognitive Belastung (v.a. intrinsisch und extrinsisch) zu reduzieren:
- Stelle eine team-first Umgebung bereit (physisch oder virtuell)
- Minimiere Teamablenkungen während der Arbeitswoche durch die Limitierung von Meetings, Mails, weise Supportanfragen dediziert Leuten oder Teams zu, ...
- Wechsel den Managementstil, indem Ziele und Outcomes kommuniziert werden, statt auf das "Wie" zu bestehen
- McChrystal nennt dies "Eyes on, Hands off" in Team of Teams
- Erhöhe die Qualität der Developer-Experience (DevEx) für andere Teams, welche deinen Teamcode verwenden und stelle gute Dokumentation für APIs bereit, erschaffe konsistente und gute User Experience und andere DevEx Praktiken
- Setze auf eine Plattform, welche explizit zur Reduzierung der kognitiven Belastung konzipiert ist und baue Teamsoftware darauf auf
"Minimize cognitive load for others" is one of the most useful heuristics for good software development.
Durch die Reduzierung der kognitiven Belastung und den Team-First Mindset bei der Bildung von Softwaregrenzen, wird das Team schneller ein gemeinsames mentales Modell entwickeln, welches nach Forschung ein guter Indikator für Teamperformance und weniger Fehlern ist.