Dążenie do wspólnego sukcesu:
W dobrym zespole powinniśmy wspólnie podejmować decyzje dotyczące działania aplikacji. To samo tyczy się rozwiązywania błędów w możliwie najlepszy sposób. Przykładowo, team front-endowy może borykać się z błędami powstającymi na back-endzie, jednak back-end jest tworzony przez jeszcze inny zespół. W takiej sytuacji tester napotykający się na przysłowiową Pięćsetkę w konsoli (błąd zwrócony z back-endu), powinien zrewidować, czy na pewno wysyłane są dobre dane do back-endu i, jeśli tak jest, powinien zgłosić błąd w odpowiedniej warstwie. Tester bez wiedzy technicznej albo z negatywnym podejściem, będzie zgłaszał każdy błąd dla zespołu GUI (no bo tam błąd zobaczył) bez zastanowienia, której warstwy on dotyczy. Z taką osobą współpracuje się bardzo trudno, pozostałym zespołom dodaje to też dodatkowej pracy.
Trzeba się zaem zastanowić co robić, by nie dokładać pracy innym członkom zespołu. Przykładowo, jeśli widać, że jakiś ekran zawierający formularz nie jest widoczny, bo np. nie pełnimy w organizacji określonej roli biznesowej, by go zobaczyć, to nie zgłaszajmy 20 błędów typu “brak pola A” i “brak pola B”. Wystarczy informacja że nie działa cały ekran.
Wiele pod tym względem można zarzucić także programistom. Czasem funkcjonalność może działać jedynie na pewnych środowiskach, a na innych już nie (słynne “u mnie działa”), co powinno zostać oczywiście sprawdzone przez odpowiednią osobę.
Dużym ułatwieniem dla zespołu są osoby, które radzą sobie samodzielnie z podstawowymi zadaniami technicznymi. Przykładowo, tester po informacji że kod jest gotowy do wgrania na środowisko, może zalogować się do Jenkinsa i samemu wgrać odpowiednią wersję na to środowisko, na którym jest mu ona potrzebna. Jest to o wiele prostsze niż sytuacja, gdy tester prosi programistę o jakąś akcję, która odciąga tego programistę od codziennych zadań. Dodatkowo, co w sytuacji, gdy żaden z programistów nie będzie aktualnie dostępny a tester nie potrafi zalogować się do podstawowych narzędzi CI by przygotować sobie pracę?
Programiści często przywiązują się do swojej pracy, uważają, że skoro poświęcili na jakieś rozwiązanie dużo czasu, to na pewno jest ono idealne. Niestety, ale w rzeczywistości rozwiązania stale się zmieniają, są ulepszane i dostosowywane do potrzeb klienta i nie należy brać do siebie tego, że tester zgłasza nam do nich uwagi. Bądźmy otwarci na feedback.
W wielu projektach kluczowym czynnikiem jest priorytetyzacja zadań. Z mojej perspektywy warto jest najpierw zająć się rozwiązaniem błędów, które powstały wcześniej, a następnie branie się za nowe funkcjonalności. Świadomość tego, co jest ważne musi mieć cały zespół.
Konieczne jest też wypracowanie w zespole wiedzy o tym, że niektóre błędy mają bardzo wysoki priorytet i gdy się pojawią, muszą być rozwiązane jak najszybciej.
Współpraca w projekcie nie powinna przeradzać się w rywalizację. Byłem świadkiem zachowań, kiedy tester zgłaszał codziennie kilkanaście zadań, z których treści wynikało, że nie zawsze rozumie działanie aplikacji. Następnie programiści odrzucali te zgłoszenia, ale wśród zadań odrzuconych były też wartościowe uwagi. Po jakimś czasie sytuacja została rozwiązana przez osoby zarządzające projektem.