Ostatnio dużo myślałem o tym, jak zbudować szczupły zespół programistów. Ostatecznie chciałbym otworzyć własny mały program z małą liczbą podobnie myślących ludzi. Celem nie będzie stać się bogatym, ale raczej zdrowe środowisko pracy.
Do tej pory definiuję szczupły zespół jako:
- Mały;
- Samoorganizujący się;
- Wszyscy członkowie muszą mieć na uwadze kontrolę jakości;
- Członkowie muszą mieć możliwość wykonywania wielu ról
Ostatni punkt dotyczy mnie trochę, bo jak mówi mantra ...
Programiści tworzą złych testerów.
Chociaż rozumiem, że często programiści są „zbyt blisko” swojego kodu lub kodu współpracownika, aby dokonywać oceny jakości na wyższym poziomie, nie jestem przekonany, że są de facto złymi testerami. Przeciwnie, uważam, że cechy dobrego programisty w dużym stopniu pokrywają się z cechami dobrego testera.
Zakładając, że jest to poprawne, myślałem o różnych sposobach obejścia problemu dewelopera / testera i wierzę, że wymyśliłem realny model.
Mój model wymaga:
- Mały dom oprogramowania z ponad 2 projektami
- Zwinne (iteracyjne) podejście do rozwoju i dostarczania
- 1 zespół na projekt
- Wszyscy członkowie zespołu będą programistami
- Ich opis stanowiska wyraźnie określa obowiązki w zakresie rozwoju , zapewnienia jakości , testowania i dostawy
Jeśli wszystkie te warunki wstępne zostaną spełnione, projekty można zorganizować w następujący sposób (ten przykład będzie dotyczył dwóch projektów A i B ):
- Każdy członek zespołu będzie na przemian między rolą programisty a rolą testera
- Jeśli członek zespołu jest programistą w projekcie A , będzie testerem w projekcie B.
- Uczestnicy będą pracować tylko na 1 projektu w czasie, a zatem oczekuje się, że działa jako jednej z Dev lub Tester.
- Cyklu Rola składa się z 3 powtórzeń jako Dev i 2 iteracji Tester (ponownie, w dwóch różnych projektów)
- Zespoły projektowe miałyby zawsze 3 deweloperów i 2 testerów.
- Cykle roli członka powinny być poza fazą o 1 iterację.
- Minimalizuje to nagłe zmiany w zespole. Dla każdej iteracji 2 Devs i 1 Tester pozostaną takie same jak poprzednia iteracja.
Biorąc pod uwagę powyższe, widzę następujące zalety i wady:
Plusy
- Dystrybuuje wiedzę projektową w całej firmie.
- Zapewnia, że członkowie zespołu nie testują kodu, który pomogli napisać.
- Cykle ról poza fazą oznaczają, że żaden projekt nigdy nie ma przełącznika członka w 100%.
- Naprzemienne role przerywają monotonię nudnych projektów.
Cons
- Iteracje obu projektów są ściśle powiązane. Jeśli jeden projekt miałby anulować iterację w połowie i rozpocząć od nowa, oba projekty nie byłyby zsynchronizowane. Utrudniłoby to zarządzanie cyklem ról.
- Zależy od zatrudniania Deweloperzy również pracują jako testerzy.
Otrzymałem mieszane recenzje podczas omawiania tego podejścia z przyjaciółmi i współpracownikami. Niektórzy uważają, że niewielu programistów kiedykolwiek chciałoby zmieniać takie role, podczas gdy inni twierdzą, że osobiście chcieliby spróbować.
Więc moje pytanie brzmi: czy taki model mógłby działać w praktyce? Jeśli nie, to czy można go ulepszyć w działający model?
Uwaga: Ze względu na zwięzłość skupiłem się tylko na rolach deweloperów i testerów. W razie potrzeby rozwinę inne role.