- zgodność szacowania z oczekiwaniami
- pokrycie testami i ich skuteczność
- ilość błędów znalezionych w fazie testów
- czytelność kodu
Ponieważ praca szła wyjątkowo sprawnie, sponsor zespołu począł rekrutować kolejnych programistów i kolejnych i kolejnych. Pierwsi członkowie zespołu zostali liderami, potem kierownikami. Wszystko szło sprawnie. Naturalnie nowe osoby w dziale (tak, tak zespół stał się Działem, a jakże!) były zapoznawane z obowiązującymi i sprawdzonymi standardami i zobligowane do ich przestrzegania.
Po jakimś czasie nasi kierownicy zauważyli, że standardy są kiepsko przestrzegane. Trudno im było zmobilizować programistów do ich stosowania. Długo zastanawiali się jak zaradzić tej sytuacji. Ponieważ byli wytrawnymi inżynierami, podeszli do sprawy stricte analitycznie. Wykombinowali wcale skomplikowany wzór, który uzależniał dodatek premiowy od stopnia przestrzegania standardów. Na przykład: za 80% pokrycia testami +2%premii, za każde 50 błędów zgłoszonych przez testerów + 1,3%premii, za utrzymanie szacowania +3,2% premii....pomysł genialny...
i wtedy zaczęła się GRA.
Zasady gry
Intencją kierowników było nagradzanie osób z zespołu za przestrzeganie standardów i zachęcanie do ich stosowania. Jednak zupełnie nieświadomie stworzyli GRĘ, o następujących zasadach:- uczestnikami gry są członkowie zespołu projektowego
- wygrywasz wtedy, gdy zdobywasz jak największą ilość pieniędzy
- reguły zdobywania pieniędzy określone są poprzez standardy obowiązujące w zespole
- pokrycie testami było idealne, lecz: testowane były gettery, settery, testy bardziej przeszkadzały niż pomagały
- programiści szacowali idealnie co do dnia, lecz bardzo, ale to bardzo pesymistycznie
- testerzy znajdowali tysiące błędów, lecz większość z nich dotyczyła nadmiarowych spacji w labelkach, braku kropek itp
- standard kodowania był przestrzegany, lecz tam gdzie było można programiści i tak pisali po swojemu
- retrospekcje upadły; standardy przestały się rozwijać, w końcu stały się nieadekwatne do obecnej sytuacji i przeszkadzały w pisaniu
Konflikt wartości
Znajomy metodolog zajmujący się badaniem hierarchii wartości u pracowników (bywa, że firmy chcą wiedzieć co jest dla Ciebie ważne: rozwój, profesjonalizm, bezpieczeństwo, kariera i w jakiej kolejności) wyłożył mi cierpliwie, że w żadnym poważnym teście nie zestawia się wartości istotnych w miejscu pracy z wartościami typu: rodzina, zdrowie, gdyż te pierwsze zawsze muszą przegrać. Gdy test nie szanuje tej zasady, to otrzymujemy zafałszowane dane, gdyż wyniki testu będą "skrzywione" w kierunku właśnie rodziny, zdrowia itp. W sumie logiczne, że gdy mam do wyboru karierą versus trwały uszczerbek na zdrowiu, to motywowany samozachowawczym instynktem, będę chronił swoje zdrowie, nawet kosztem kariery.W omawianym wyżej zespole, kierownicy popełnili właśnie ten metodologiczny błąd No, bo jeśli wybieram między zmieszczeniem się w szacowaniach (nawet jeśli trzeba by ociupinkę je zawyżyć), a gwiazdkowymi prezentami dla rodziny, to szacowanie będzie idealne - choćby nie wiem co! I wcale nie w tym rzecz, że jesteśmy źli, upadli, oszuści. Nic z tych rzeczy. Tak jesteśmy skonstruowani, a granica między rzetelnym oszacowaniem a nieco zawyżonym jest tak płynna, tak rozmyta, że bardzo łatwo i bardzo szybko racjonalizujemy sobie drobne jej przekroczenia. Myślę, że większą winę ponosi ten, kto doprowadził do sytuacji sprzyjającej takiemu postępowaniu, niż ten kto rzeczywiście tak postępuje.
Opłakane skutki
Ponieważ przestrzeganie standardów było tylko środkiem do celu, standardy przestały się rozwijać, przestały żyć. W niczyim interesie nie było modyfikowanie standardów i ulepszanie ich. Po zmieniać i komplikować sposób na zarabianie, skoro już mam opracowane sposoby wygrywania?Motywowanie pieniędzmi jest w porządku, gdy w działaniu ludzi o pieniądze przede wszystkim chodzi. Weźmy takich na przykład sprzedawców. W uproszczeniu: sprzedawca sprzedaje produkt/usługę i przynosi pracodawcy fakturę, od której otrzymuje procent. To będzie działać. Ale jeśli sprzedawca będzie dostawał premię za ilość spotkań, to znów zaczyna się GRA. Bo oto może się okazać, że spotkania są i owszem, ale z firmami, które prawdopodobnie nigdy nie zostaną naszymi klientami. Kto za to ponosi odpowiedzialność? Przede wszystkim ten, kto stworzył GRĘ.
Gdy Twoi pracownicy pracują kreatywnie (tu programiści) i zasady pracy muszą dojrzewać i ulepszać się wraz z nimi, to nigdy przenigdy nie wolno uzależniać wynagrodzenia od ich przestrzegania. Takie działanie zabije kreatywność i zasady pracy szybko się usztywnią.
3 komentarze:
Trochę błędów językowych, ale mimo to czytało się wspaniale! Proszę o więcej historyjek. Proszę.
Bardzo ładne, dodam do tego, iż może te standardy były przestrzegane właśnie dlatego, iż to obecni kierownicy 'nauczyli się na własnych błędach'.
Zawsze człowiek jest w stanie o wiele więcej pracować (w sensie samych godzin, jak i 'dorzucania' sobie pracy by przestrzegać standardów), jeśli to ON SAM doszedł do takiego wniosku i przekonania. W związku z tym, iż obecni kierownicy sami stworzyli standardy bo zauważyli, że podnoszą one ich wydajność, przestrzegają ich z chęcią i mają z tego 'fun'.
Jednakże wdrożenie nowego programisty w przestrzeganie standardów (danych na zasadzie 'tak sie u nas koduje') jest... trudne. I może gdyby któryś z tych kierowników usiadł z takim koderem i pokazał na przykładach dlaczego te standardy są OK to byłoby łatwiej. Ale to takie moje gdybanie.
Dwa bardzo luźne skojarzenia:
1. "W organizacji hierarchicznej każdy awansuje aż do osiągnięcia własnego progu niekompetencji." Programiści być może powinni zostać programistami i w ten sposób prowadzić i inspirować zespół.
2. Całe programowanie to gra, ale należy pamiętać że to gra zespołowa, a pierwszym i najważniejszym celem jest dobry produkt (wiadomo co to "dobry" oznacza). (polecam http://helion.pl/ksiazki/agile-software-development-gra-zespolowa-wydanie-ii-alistair-cockburn,agilsd.htm)
Prześlij komentarz