Kasia Sołoducha zaczynała od pisania aplikacji do unit testów programów cobolowych. Podczas rekrutacji do Grupy OLX dostała dwie propozycje stanowisk: jako Software Engineer w Javie i w Go. Postawiła na Golanga — i jak sama mówi, był to strzał w dziesiątkę. Teraz opowiada o tym, jak przebranżowić się z jednego języka na drugi.
Czy to prawda, iż pracowałaś w COBOL-u? To język legendarny, ale wymierający — jestem interesująca Twojej opinii na temat jego użycia w praktyce
Dokładniej mówiąc, to nie pracowałam stricte w COBOL-u, ale pisałam aplikację do unit testów programów cobolowych. Do poprzedniej firmy dołączyłam w ramach talent programu dla studentów i świeżych absolwentów kierunków ‘okołoinformatycznych’. W ramach programu przeszliśmy dwumiesięczne szkolenie, z którego chyba około połowa dotyczyła COBOL-a i Mainframe’a.
COBOL nie jest do końca tak wymierający, jak mogłoby się wydawać (ku zgrozie co niektórych). Praktycznie cała bankowość stoi na COBOL-u. Przeniesienie logiki na ‘coś świeższego’ jest po pierwsze bardzo kosztowne, po drugie dość ryzykowne (Mainframe jest bezpieczny i niezawodny w porównaniu do innych rozwiązań).
Mam wrażenie, iż COBOL-em niesłusznie straszy się programistów. Wcale nie jest taki straszny, jak się wydaje. Co prawda większość programistów COBOL-a, z którymi pracowałam to osoby z długim już stażem w techu (wspaniali ludzie swoją drogą, dużo się nauczyłam podczas współpracy z nimi).
COBOL ma stosunkowo prostą składnię, kod pisany jest podobnie do języka mówionego (po angielsku). Na początku może być przez to mało intuicyjny dla osób, które wcześniej programowały, nie przypomina żadnego innego języka, z jakim miałam styczność. Dodatkową kwestią jest struktura samego programu (np. to, iż zmienne muszą być zadeklarowane na samym początku pliku, a nie dalej w kodzie).
‘Najstraszniejszą’ rzeczą podczas pracy z COBOL-em może być terminal. Na rynku jest bardzo mało IDE wspierających COBOL-a. Szczerze mówiąc, dla mnie była to świetna zabawa. Często na filmach hackerzy podczas włamywania się do systemów wklepują komendy na czarnym ekranie z zielonymi literami, podobnie wyglądaliśmy, wprowadzając komendy do Mainframe’a.
Praca w fintechu była dla mnie świetną okazją, żeby zobaczyć programowanie od trochę innej strony i szczerze mówiąc, praca z COBOL-em była dla mnie ekscytująca. Bardzo lubię niszowe i wręcz ‘egzotyczne’ czy ‘staromodne’ języki i technologie (na studiach na przykład jednym z moich ulubionych przedmiotów była technika mikroprocesorowa — programowanie w Assembly).
Pracowałaś nie tylko w COBOL-u, ale także w Javie. Co zadecydowało o zmianie na Go?
To była dosyć spontaniczna decyzja. Bardzo lubię uczyć się nowych rzeczy, a praca w techu jest do tego idealna. Podczas rekrutacji do Grupy OLX dostałam dwie propozycje stanowisk, jako Software Engineer w Javie i w Go. Kasia, która mnie rekrutowała, powiedziała, iż ewidentnie oczy mi się bardziej świeciły, kiedy został wspomniany Golang (i tak rzeczywiście było). Chciałam spróbować się w czymś innym — nowy język, nowe doświadczenie, nowe wyzwania. Wybrałam Golanga i to był strzał w dziesiątkę.
Wcześniej nie miałam styczności z Go. Dopiero w OLX nauczyłam się tego języka (tak naprawdę cały czas się uczę). Było to dla mnie duże wyjście ze strefy komfortu, ale bardzo cieszę się z tej decyzji. W zasadzie takie rzucenie się na głęboką wodę jest najlepszą sposobnością do nauki nowych rzeczy. Pracuję w Grupie OLX już 9 miesięcy i widzę, iż bardzo rozwinęłam się w tym czasie, co utwierdza mnie w przekonaniu, iż podjęłam dobrą decyzję.
Czy Go może być fajną alternatywą do takiego „przebranżowienia”?
Wydaje mi się, iż to bardzo indywidualna sprawa. Golang bardzo różni się od Javy, więc przebranżowienie się pozwoliło mi zobaczyć programowanie od nieco innej strony. Dodatkowo pracuję z całkiem innymi technologiami niż wcześniej (mainframe vs mikroserwisy i api w GraphQL).
Golang jest stosunkowo nowym językiem, pierwszy release miał w 2012 roku, podczas gdy np. Java w 1996. Jest to odczuwalne między innymi poprzez to, iż w Golangu wciąż brakuje pewnych bibliotek, dużo rzeczy musimy implementować sami. Z drugiej strony, Go bardzo prężnie się rozwija. Dodatkowo Golang developerzy są bardzo aktywni.
Myślę, iż takie przebranżowienie się może być z początku bardzo oporne, inna składnia, inne podejście, inne działanie. Ja miałam to szczęście, iż gwałtownie zaczęłam robić taski i takie podejście bardzo polecam, nauka nowego języka w ‘warunkach bojowych’ jest dużo bardziej efektywna niż kursy i tutoriale. Nie chcę umniejszać tym drugim oczywiście, dzięki nim nauczyłam się sporo teorii, która później przydała się w praktyce. Dużą rolę odegrali też bardziej doświadczeni koledzy i koleżanki, dzięki ich review mojego kodu zdobywam wiele dobrych praktyk, których ‘świeżak’ w nowym języku po prostu nie jest świadomy. Dodatkowym plusem była znajomość C jeszcze ze studiów, na pierwszy rzut oka Golang ma bardzo zbliżoną składnię.
Jakie zastosowanie ma Golang? Komu może przydać się nauka tego języka?
Golang wykorzystywany jest najczęściej w mikroserwisach, z nimi właśnie pracujemy na co dzień w OLX. Golang zyskuje coraz większą popularność na rynku, jednak wydaje mi się, iż wciąż jest dosyć niszowym językiem, więc nauka go może być dobrą inwestycją. Dzięki temu, iż jest nowy, jest stale i gwałtownie rozwijany.
Myślę, iż nauka Golanga może być też po prostu fajną zajawką. Mniejsza ilość gotowych bibliotek może być sposobnością do zbadania, jak niektóre rzeczy działają ‘pod podszewką’. Dodatkowo jest tu duże pole do popisu jeżeli chodzi o tworzenie tych bibliotek.
Czym zajmujesz się na co dzień w swojej pracy?
Na co dzień pracuję nad szeroko pojętym backendem Otodomu oraz jego odpowiedników w Rumunii — Storia i Portugalii — Imovirtual. Dokładniej pracuję w segmencie monetyzacji dla klientów indywidualnych wystawiających ogłoszenia w serwisie. Implementujemy nasze rozwiązania z wykorzystaniem mikroserwisów w AWS oraz wystawiamy GraphQL API dla frontendu. W całym naszym code base wykorzystujemy Golanga.
Z racji, iż wcześniej pracowałam jako Junior Software Engineer nowością było dla mnie planowanie implementacji. Szczerze mówiąc, z początku mnie to przerażało — jak raczkujący regular ma dobrze rozplanować skomplikowaną implementację? Okazało się jednak, iż takie rzucenie mnie na głęboką wodę bardzo przyspieszyło mój rozwój. Dodatkowo cały czas mam duże wsparcie ze strony współpracowniczek i współpracowników, w końcu wszyscy razem pracujemy nad jednym produktem.
Dodatkowo mamy bardzo duże pole do popisu jeżeli chodzi o własne inicjatywy w domenie, więc czuję, iż mam realny wpływ na to, jak wygląda nasz development.
W jaki sposób Twoja obecna firma umożliwiła Ci takie „przebranżowienie” z jednego języka na inny?
Zarówno moi rekruterzy, jak i manager wiedzieli, iż nie pracowałam wcześniej w Golangu. W pierwszych tygodniach w OLX miałam dużo czasu w przerobienie kursów i naukę. Każdy nowy członek dostaje też swojego buddy’ego, który pomaga w stawianiu pierwszych kroków w nowej pracy. Ja trafiłam pod skrzydła bardzo doświadczonego już seniora, który był bardzo pomocny na początku mojej przygody z OLX i pomaga mi często do tej pory.
Pierwsze taski, jakie brałam, polegały na dodawaniu np. testów integracyjnych, żeby zapoznać się z systemami i z samym językiem. Z czasem zaczęłam podłapywać poważniejsze zadania, potem choćby pomagałam w onboardingu nowego backend developera. Następnie przyszła pora na ‘grube’ rzeczy typu planowanie implementacji, inwestygacja istniejących rozwiązań czy wychodzenie z własnymi inicjatywami.
Dodatkowo mamy naprawdę świetne community, zawsze kiedy mam jakiś problem czy pytania, otrzymuję dużo wsparcia i pomocy.
Teraz czuję się już bardzo pewnie z naszymi projektami i nie boję się nowych wyzwań. W dużej mierze zawdzięczam to właśnie koleżankom i kolegom z pracy, od początku dołączenia do mojego zespołu (pozdrawiam cieplutko) czułam się bardzo profesjonalnie, a mimo to swobodnie.
W podejmowaniu nowych wyzwań bardzo pomógł mi też kolega, z którym pracowałam na projekcie w poprzedniej firmie. Na koniec wspomnianego talent programu mieliśmy 2 tygodnie na wspólne napisanie aplikacji. Podzieliliśmy się na backend i frontend. Z racji, iż zawsze wiedziałam, iż backend to coś dla mnie, chciałam nad nim pracować też tam, jednak ów kolega namówił mnie na dołączenie do frontendowej części zespołu. Chyba tylko jedna czy dwie osoby z całej grupy miały doświadczenie w pisaniu frontendu, więc pierwszy dzień spędziliśmy na wspólnej nauce. Potem wzięliśmy się za implementację i w efekcie stworzyliśmy projekt, z którego później byliśmy bardzo zadowoleni.
Muszę powiedzieć, iż jestem bardzo wdzięczna za to doświadczenie, bo dzięki niemu nabrałam pewności siebie jako programistka i po prostu dobrze się bawiłam.