Ich habe in letzter Zeit viel darüber nachgedacht, wie man ein schlankes Entwicklungsteam aufbaut. Letztendlich möchte ich mit einer kleinen Anzahl von Gleichgesinnten mein eigenes kleines Softwarehaus eröffnen. Das Ziel wird nicht sein, reich zu werden, sondern ein gesundes Arbeitsumfeld zu haben.
Bisher definiere ich ein schlankes Team wie folgt:
- Klein;
- Selbstorganisierend;
- Alle Mitglieder müssen die Qualitätssicherung berücksichtigen.
- Mitglieder müssen in der Lage sein, mehrere Rollen auszuführen
Der letzte Punkt ist, wo ich mir ein bisschen Sorgen mache, weil, wie das Mantra sagt ...
Entwickler machen schlechte Tester.
Obwohl ich verstehe, dass Entwickler häufig "zu nah" an ihrem Code oder dem Code ihres Kollegen sind, um Qualitätsbewertungen auf höherer Ebene vorzunehmen, bin ich nicht davon überzeugt, dass sie de facto schlechte Tester sind. Im Gegenteil, ich bin der Meinung, dass sich die Eigenschaften eines guten Entwicklers stark mit den Eigenschaften eines guten Testers überschneiden.
Unter der Annahme, dass dies richtig ist, habe ich über verschiedene Möglichkeiten nachgedacht, um das Entwickler- / Testerproblem zu umgehen, und ich glaube, ich habe ein tragfähiges Modell entwickelt.
Mein Modell erfordert:
- Ein kleines Softwarehaus mit 2+ Projekten
- Ein agiler (iterativer) Ansatz für Entwicklung und Bereitstellung
- 1 Team pro Projekt
- Alle Teammitglieder sind Softwareentwickler
- In ihrer Stellenbeschreibung werden Entwicklung , Qualitätssicherung , Prüfung und Lieferung eindeutig als Verantwortlichkeiten angegeben
Wenn alle diese Voraussetzungen erfüllt sind, können die Projekte folgendermaßen organisiert werden (dieses Beispiel bezieht sich auf zwei Projekte, A und B ):
- Jedes Teammitglied wechselt zwischen der Entwickler- und der Testerrolle
- Wenn ein Teammitglied ein Entwickler in Projekt A ist , ist es ein Tester in Projekt B.
- Die Mitglieder arbeiten jeweils nur an einem Projekt und werden daher voraussichtlich entweder als Entwickler oder als Tester fungieren .
- Ein Rollenzyklus besteht aus 3 Iterationen als Entwickler und 2 Iterationen als Tester (wiederum in zwei verschiedenen Projekten).
- Die Projektteams hätten jederzeit 3 Entwickler und 2 Tester.
- Mitgliedsrollenzyklen sollten um 1 Iteration phasenverschoben sein.
- Dies minimiert die Abruptheit der Teamänderungen. Für jede Iteration bleiben 2 Entwickler und 1 Tester gleich wie bei der vorherigen Iteration.
Vor diesem Hintergrund sehe ich die folgenden Vor- und Nachteile:
Vorteile
- Verteilt das Projektwissen im gesamten Unternehmen.
- Stellt sicher, dass die Teammitglieder den Code, den sie geschrieben haben, nicht testen.
- Außerphasige Rollenzyklen bedeuten, dass kein Projekt jemals einen 100% -Mitgliedswechsel hat.
- Wechselnde Rollen brechen die Monotonie langweiliger Projekte.
Nachteile
- Die Iterationen beider Projekte sind eng miteinander verbunden. Wenn ein Projekt eine Iteration zur Hälfte abbrechen und erneut starten würde, wären die beiden Projekte nicht synchron. Dies würde die Verwaltung des Rollenzyklus erschweren.
- Scharniere bei der Einstellung von Entwicklern, die auch als Tester arbeiten.
Ich habe gemischte Kritiken erhalten, als ich diesen Ansatz mit Freunden und Kollegen besprochen habe. Einige glauben, dass nur wenige Entwickler jemals solche Rollen wechseln möchten, während andere mir sagen, dass sie es persönlich gerne ausprobieren würden.
Meine Frage lautet also: Könnte ein solches Modell in der Praxis funktionieren? Wenn nicht, könnte es in ein funktionierendes Modell umgewandelt werden?
Hinweis: Der Kürze halber habe ich mich nur auf die Rollen Dev und Tester konzentriert. Ich werde bei Bedarf auf andere Rollen eingehen.