Od testera do programisty
- Processes, standards and quality
- Technologies
- Others
Obecna sytuacja na rynku IT umożliwia nie tylko rozwój w obrębie własnej specjalizacji, ale i zmianę roli projektowej.
Prolog
To może zdarzyć się każdemu, w dowolnym momencie życia.
Zaczyna się niepozornie. Budzisz się rano i czujesz, że coś jest nie w porządku. Chociaż nic się nie zmieniło, to nic już nie jest jak przedtem. Czegoś brakuje.
Z resztką snu na powiekach wchodzisz do łazienki, ale twoja szczoteczka do zębów znajduje się na swoim miejscu – to nie to. Jedziesz do pracy, wchodzisz do biura, witasz się z koleżankami i kolegami. Wszyscy są. Uśmiechają się do ciebie, ktoś jak zwykle opowiada suchar na dzień dobry. Automatycznie unosisz kąciki ust, ale żart nie śmieszy cię tak jak zwykle. Uruchamiasz komputer, logujesz się do systemu z zadaniami związanymi z projektem, nad którym pracujesz wraz ze swoim zespołem. Sprawdzasz, co masz dzisiaj do zrobienia.
I nagle widzisz to wyraźnie. Już wiesz, czego ci brakuje.
Entuzjazmu.
Na myśl o zadaniach, które na ciebie czekają, nie czujesz niczego prócz znużenia. Nie przejmujesz się tym w pierwszej chwili – przecież nikt nie tryska energią dwadzieścia cztery godziny na dobę. Może to niewyspanie lub efekt niekorzystnego biometu. Pracujesz. Myśli ciągle ci uciekają, ale przywołujesz się do porządku i odhaczasz kolejne zadania. W końcu jesteś świetnym testerem. Słyszysz to od zadowolonego lidera lub klienta, ale powoli przestajesz się z tym identyfikować – masz się raczej za wyrobnika, który zapomniał, że kiedyś ukończenie zadania dawało przypływ endorfin i ciekawość kolejnego. Uff, w końcu mija osiem godzin. Nie wysiedzisz w pracy ani minuty dłużej, chociaż lubisz to miejsce i ludzi, którzy cię otaczają. A jednak opuszczasz je z ulgą – i nadzieją, że jutro będzie lepiej.
W końcu idziesz na urlop – zwykle mały reset niezawodnie przywracał ci energię, a ostatni dzień wolnego był radosnym oczekiwaniem na powrót do pracy. Jednak tym razem wcale nie chce ci się wracać, a myśl o powrocie do codziennych obowiązków jest zaskakująco przykra jak na to, że nie wymagają one od ciebie wysiłku. A może właśnie w tym problem?
Chcesz się rozwijać, działać. Nie żeby obecnie twoja wiedza była maksymalna, ale nie ciągnie cię już do zgłębiania tematów, którymi zajmujesz się na co dzień. Myślisz przez chwilę o zmianie pracy – ale czy to pomoże? Atmosfera jest dobra, warunki w pełni zadowalające. Po prostu chcesz robić coś innego. Chcesz tworzyć, a nie tylko sprawdzać efekty pracy innych. Przypominasz sobie, jaką satysfakcję sprawiało ci na studiach uruchomienie nawet najprostszego programu własnej produkcji. I w końcu nieśmiało kiełkuje w twojej głowie myśl – może przejść na programowanie?
Jak się za to zabrać?
Motywacja do zmiany może być oczywiście różna – niekoniecznie musi dojść aż do wypalenia w obecnej roli, chociaż to też się zdarza. Może od początku plan był taki, by zacząć od testowania i docelowo zostać programistą, a może spodobało ci się programowanie testów automatycznych i chcesz pójść o krok dalej. Konwersja z testera na programistę ma miejsce relatywnie często, ale warto pamiętać, że istnieją także przypadki odwrotne – zdarza się, że ktoś nie odnalazł się w programowaniu, za to spełnia się jako tester. Cokolwiek wzbudziło pragnienie zmiany roli, zarówno w jedną, jak i w drugą stronę, wymaga przemyślenia oraz przygotowania.
Czego naprawdę chcesz?
Na początek dobrze jest określić, czego tak naprawdę się chce. Specyfika pracy programisty i testera nieco się różni, dlatego istnieje ryzyko złudzenia, że lepiej jest tam, gdzie nas nie ma. Do podjęcia świadomej decyzji niezbędne jest skonfrontowanie swoich wyobrażeń z tym, jak naprawdę wygląda praca w roli, która nas interesuje. Zwłaszcza testerzy mogą ulegać złudzeniu, że praca programisty jest bardziej prestiżowa, lepiej płatna lub istotniejsza. W rzeczywistości role te są przede wszystkim inne, uzupełniają się i wymagają nieco odmiennych kompetencji – będą więc sprawiać satysfakcję różnym osobom. W momencie, kiedy nie widzi się już dla siebie pola do rozwoju w roli testera albo testowanie zwyczajnie nam się znudziło, można rozważyć rozwój w kierunku, w którym zdobyte doświadczenie będzie procentować – przykładowo jako test manager, lider techniczny czy analityk biznesowy. Jeśli jednak nie czujemy do tego powołania, natomiast odnajdujemy u siebie predyspozycje oraz chęci do zostania programistą – to nic, tylko działać!
Etap przejściowy – automatyzacja testów
Jeżeli pragnienie pisania kodu dopadnie testera, który dotychczas nie automatyzował testów, zaangażowanie w automatyzację wydaje się naturalnym krokiem na drodze do programowania. Pozwala przećwiczyć w praktyce znajomość podstaw danego języka, skonfrontować się z frustracją, kiedy coś nie działa, jak również nauczyć się obsługi narzędzi takich jak IDE czy system kontroli wersji. Umożliwia też rozwinięcie umiejętności rozwiązywania problemów, czy to przez debuggowanie, czy też szukanie informacji w branżowych artykułach autorstwa uznanych autorytetów.
Warto przy okazji zwrócić uwagę na dobre praktyki tworzenia oprogramowania i zapoznać się z tematyką wzorców projektowych oraz jakości kodu. Niestety niejednokrotnie zdarza się, że aspekty te są pomijane w procesie tworzenia testów, co w dalszej perspektywie prowadzi do narastających problemów z ich utrzymaniem. Być może wynika to z nieznajomości tematu wśród testerów, którzy nie mieli dotychczas do czynienia z tworzeniem kodu – niewątpliwie jednak warto potraktować automaty jak każdy inny projekt programistyczny i od początku dbać o jakość tworzonego kodu, a w procesie uwzględnić code review.
Jeżeli nie mamy w zespole doświadczonego testera automatyzującego, który posiada kompetencje niezbędne do zapewnienia odpowiedniej jakości tworzonych testów, warto poprosić o wsparcie programistów. Dzięki temu w przyszłości nie dopadnie nas (lub naszych następców) przeczucie, że łatwiej będzie wszystko napisać od nowa, niż dopisać cokolwiek do powstałego chaosu. Ponadto zyskamy szansę rozwoju i zapoznania się z dobrymi praktykami, co będzie procentowało, zarówno jeśli zdecydujemy się na przejście na programowanie, jak i w przypadku poprzestania na automatyzacji. Może bowiem zdarzyć się, że automatyzacja testów okaże się strzałem w dziesiątkę i zajęciem na tyle rozwojowym, że poszukujący nowych wyzwań tester postanowi zatrzymać się i doskonalić właśnie tutaj, na styku testowania i programowania.
Nauka i rekonesans
Internet pełen jest materiałów do nauki. Warto korzystać z tutoriali i darmowych kursów, a w usystematyzowaniu wiedzy przydają się (najczęściej płatne) szkolenia na platformach typu Udemy czy Pluralsight – szczególne przydatne na samym początku, kiedy jeszcze nie wiemy, czego właściwie nie wiemy. Najważniejsze jest, aby uczyć się systematycznie i w sposób praktyczny. Nie da się zostać programistą, nie programując. Efekty swoich działań warto wrzucić na GitHub, aby stworzyć swoje programistyczne portfolio. Nawet jeżeli nie będzie idealne, stanowi dowód na to, że rzeczywiście interesujemy się programowaniem i działamy w tym kierunku. Jesteśmy w stanie wykonać działający projekt. Przy okazji dobrze jest zrobić rozeznanie, których technologii wymagają pracodawcy, poszukujący ludzi na interesujące nas stanowisko (przykładowo – programiście Javy najczęściej potrzebna jest znajomość Springa i Hibernate, nie zaszkodzi też Docker czy podstawy technologii frontendowych).
Zmiana roli lub pracy
Najbardziej bezbolesną opcją wydaje się zmiana roli w obrębie firmy, w której już się pracuje – czy to przez wewnętrzną rekrutację, czy na przykład dołączenie do projektu, w którym wszyscy testują i programują jednocześnie. Plusem takiego rozwiązania jest komfort psychiczny, jaki daje znane już środowisko pracy, a także duża szansa na zachowanie dotychczasowego poziomu wynagrodzenia. Jeśli jednak pracodawca nie umożliwia takich konwersji, pozostaje rozejrzeć się na rynku pracy. I tutaj natrafiamy na kilka możliwości scenariuszy – niektórzy pracodawcy nie będą chcieli nas zatrudnić na stanowisku wyższym niż juniorskie, inni uznają chociaż częściowo doświadczenie w automatyzacji, a jeszcze inni określą poziom na podstawie wiedzy zaprezentowanej na rozmowie kwalifikacyjnej. Może się też zdarzyć, że otrzymamy propozycję rozpoczęcia pracy na stanowisku testera automatyzującego z perspektywą zmiany roli po upływie określonego czasu lub możliwość pracy na etacie podzielonym pomiędzy testowanie i programowanie.
Plusy i minusy
Udało się! Jesteś programistą. I co teraz? Poza satysfakcją z osiągniętego celu, może się to wiązać również z innymi konsekwencjami. Do tych mniej przyjemnych należy chwilowy spadek samooceny, kiedy natkniesz się na pierwsze problemy – co może być tym trudniejsze, im większe doświadczenie masz w testowaniu. Ze stanowiska w pełni samodzielnego specjalisty spada się na pozycję początkującego, który nie zawsze wie, jak poradzić sobie z zadaniem i potrzebuje pomocy bardziej doświadczonych kolegów. To może być niepokojące, ale jest normalne – każdy kiedyś zaczynał. Warto sobie przypomnieć, że początki przygody z testowaniem też nie były łatwe.
Inną nieprzyjemną konsekwencją zmiany roli może być spadek zarobków. Jeżeli okoliczności są sprzyjające, można tego uniknąć lub przynajmniej załagodzić, ale może też okazać się to bodźcem do refleksji, na czym nam w danym momencie najbardziej zależy. Spadek wypłaty do poziomu juniorskiego może zaboleć – jeśli jednak ktoś może sobie na to pozwolić, to powinien mieć w pamięci, z jakich powodów zdecydował się na zmiany i że niższa wypłata to sytuacja tymczasowa. Co więcej, bardziej korzystne może okazać się wybranie pracodawcy, który proponuje nieco niższe wynagrodzenie, ale stwarza lepsze warunki do rozwoju w nowej roli (specjaliści, od których można się uczyć, rozwojowe projekty, szkolenia). A jeżeli na zmianę ścieżki wpłynęła perspektywa przyszłych zarobków, które na nowym stanowisku są docelowo wyższe niż na poprzednim, chwilowe obniżenie pensji jest inwestycją również w sensie finansowym.
Do najszybciej odczuwalnych korzyści należy przypływ energii do działania i radość z najmniejszego sukcesu w nowej roli, a także możliwość rozwoju w wymarzonym kierunku. Dodatkowo, jeśli zmiana była ucieczką od wypalenia – odzyskanie satysfakcji z czynności, którym poświęca się najbardziej produktywną część dnia i prawdopodobnie będzie się to robiło jeszcze przez wiele lat, wydaje się wartością bezcenną.
Podsumowanie
Obecna sytuacja na rynku IT umożliwia nie tylko rozwój w obrębie własnej specjalizacji, ale i zmianę roli projektowej. Interdyscyplinarni specjaliści są coraz częściej doceniani, a nawet poszukiwani przez pracodawców – dlatego w razie zainteresowań wykraczających poza obraną specjalizację warto bez obaw angażować się w dodatkowe działania, a nawet spróbować swoich sił w innej roli niż dotychczas. Podstawą sukcesu jest determinacja do nauki nowych rzeczy, a doświadczenie zdobyte nawet w ramach całkowicie odmiennej specjalizacji poszerza horyzonty i procentuje – jeśli nie na co dzień, to w najmniej spodziewanych momentach.