Od COBOL-a do języka Golang, czyli o przebranżowieniu z jednego języka programowania na drugi
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 język Golang — 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.
Spis treści
Czy to prawda, że pracowałaś w COBOL-u? To język legendarny, ale wymierający — jestem ciekawa 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, że 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, że 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 Golang?
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, że 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ę, że bardzo rozwinęłam się w tym czasie, co utwierdza mnie w przekonaniu, że podjęłam dobrą decyzję.
Czy Go może być fajną alternatywą do takiego „przebranżowienia”?
Wydaje mi się, że 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, że 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ę, że 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, że szybko 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ę, że wciąż jest dosyć niszowym językiem, więc nauka go może być dobrą inwestycją. Dzięki temu, że jest nowy, jest stale i szybko rozwijany.
Myślę, że 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śli 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, że 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, że 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śli chodzi o własne inicjatywy w domenie, więc czuję, że 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, że nie pracowałam wcześniej w języku Golang. W pierwszych tygodniach w OLX miałam dużo czasu na 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 nawet 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, że zawsze wiedziałam, że 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ć, że 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.
Jak trafiłaś do OLX? Pamiętasz swoją rozmowę rekrutacyjną?
Do OLX trafiłam z polecenia kolegi (również cieplutko pozdrawiam i dziękuję). Jeśli chodzi o rekrutację, miałam w sumie cztery rozmowy (nie licząc złożenia oferty). Na początku miałam spotkanie z rektuterką, która przedstawiła mi proces rekrutacyjny i odpowiedziała na moje pytania. Druga rozmowa skupiała się na miękkich umiejętnościach i doświadczeniu z poprzedniej pracy.
Następnie odbyłam dwie rozmowy techniczne. Pierwsza z nich polegała na zaimplementowaniu prostej aplikacji w wybranym przeze mnie języku (wówczas była to Java). Bardziej niż na samej implementacji rekruter skupiał się na moim podejściu do rozwiązywanego problemu i moich pomysłach.
Ostatnia i najciekawsza dla mnie rozmowa polegała na zaprojektowaniu architektury systemu. Szczerze mówiąc, przed nią stresowałam się najbardziej, z racji tego, że nie miałam wcześniej doświadczenia w tej dziedzinie. W zaproszeniu do spotkania dostałam materiały, z którymi warto było się zapoznać w ramach przygotowań. Rzeczą, która najbardziej podobała mi się w tej rozmowie, było podejście rekrutera — nie na zasadzie odpytywania zgodnie z kluczem, a bardziej mentora i uczennicy. Kiedy przedstawiałam swoje pomysły architektury, podsuwał mi ciekawostki czy propozycje innych rozwiązań, jakie można by zastosować.
Naprawdę życzę wszystkim takich rekruterów, po zamianie kilku pierwszych zdań stres kompletnie zniknął. Nie czułam się jak na rozmowie rekrutacyjnej, a bardziej jakbym planowała jakąś rzeczywistą implementację rozwiązania pod okiem bardziej doświadczonego współpracownika. Okazuje się, że rekruterzy to też ludzie i do tego jacy świetni!
Masz dwa lata doświadczenia w programowaniu. Jak przez ten czas zmieniało się Twoje podejście do pracy? Co jest obecnie dla Ciebie najważniejsze, gdy programujesz?
Na początku mojej przygody jako programistki nowe rzeczy wydawały mi się przerażające. Kompletnie nie wierzyłam w swoje umiejętności i bałam się zabierać głos w dyskusjach, jeszcze dowiedzą, się jak mało umiem!
Z czasem okazało się, że brak wiedzy to nie powód do wstydu, a okazja, żeby nauczyć się czegoś nowego. Wychodzenie ze swojej strefy komfortu może wydawać się z początku straszne, ale właśnie dzięki temu możemy się rozwijać.
Podczas pracy bardzo ważna jest dla mnie jakość mojego kodu. Staram się, żeby w miarę moich możliwości była jak najlepsza. Oczywiście cały czas się uczę i cały czas może być lepiej.
Myślę, że ważne w pracy programistycznej jest znalezienie work-life balance. To dosyć popularny aktualnie temat i bardzo ważny. Od godz. 8.30 do 16.30 moim focusem jest praca, ale w momencie kiedy zamykam laptopa po południu, to jest czas dla mnie. Wydaje mi się, że będąc programistką/programistą bardzo łatwo się wypalić zawodowo, kiedy właśnie nie ma się tego balansu pomiędzy pracą a życiem prywatnym. Zresztą w sytuacji, gdy nie ma czasu na odpoczynek i regenerację, ciężko jest być produktywnym, w końcu pisanie kodu jest pracą umysłową.
Dodatkowo dzięki ludziom, z którymi pracuję, codziennie rano siadam z zapałem do pracy.
W naszej wstępnej rozmowie przekazałaś, że programowanie traktujesz bardziej jak grę logiczną, a nie stricte pracę. Rozwiniesz, proszę tę myśl?
Programowanie po prostu sprawia mi frajdę, więc moja praca jest dla mnie dobrą zabawą. Zawsze lubiłam gry logiczne i rozwiązywanie problemów. Moja mama jest nauczycielką matematyki i za czasów szkolnych przygotowywała mnie do konkursów i olimpiad (dzięki mamo!). To też była dla mnie forma gry — nie liczę jakichś abstrakcyjnych rzeczy, tylko rozwiązuję zadania logiczne. Lubię ‘ćwiczenie’ mojego mózgu, a praca programistyczna jest do tego idealna — nowe wyzwania, nowe pomysły.
Łączysz studia z pracą. Jak myślisz, czy studia są ważne z punktu widzenia pracy w IT? Jaką wartość za sobą niosą?
Wydaje mi się, że to znowu jest bardzo indywidualna kwestia. Przed studiami nie miałam za wiele styczności z programowaniem. Właściwie to zaczęłam studia na kierunku Lotnictwo i Kosmonautyka na Wydziale Mechanicznym Elektroniki i Lotnictwa Politechniki Warszawskiej. Tam właśnie mieliśmy zajęcia z programowania (w C). Szybko okazało się, że interesuje mnie to dużo bardziej niż samoloty, więc po pierwszym roku zdecydowałam się na zmianę kierunku i zaczęłam studiować Informatykę Stosowaną na Wydziale Elektrycznym tej samej uczelni.
Z racji tego, że na dobrą sprawę nie miałam żadnych podstaw, studia dały mi bardzo dużo, szczególnie na pierwszych czterech semestrach. Zdobyłam dużo bazowej wiedzy, która bardzo mi się przydała w mojej dalszej programistycznej przygodzie. Z drugiej strony, miałam tam też koleżanki i kolegów, którzy mieli już te podstawy w swoim arsenale, więc (cytując) z ich punktu widzenia była to strata czasu.
Po drugim roku studiów zaczęłam już pracę w branży i szybko okazało się, że rozwinęłam się o wiele bardziej niż gdybym tylko studiowała w tym czasie. Dodatkowo wiedza zdobyta w praktyce jest dużo łatwiej przyswajalna.
Podsumowując — studia dały mi bardzo dobrą podstawę, którą później mogłam rozwijać w pracy. Nie uważam tych semestrów za stracony czas, ale bardzo się cieszę, że tak szybko zaczęłam pracę w branży, ponieważ dzięki temu bardzo szybko się rozwinęłam i poczułam dużo pewniej.
Jak widzisz swoją przyszłość zawodową? W jakim kierunku chciałabyś się rozwijać?
W najbliższej przyszłości chciałbym się rozwijać jako Software Engineer. Wiem, że jeszcze długa droga przede mną i jest to bardzo ekscytujące. Bardzo lubię ‘brudzić sobie ręce’ kodem, więc planuję to dalej robić. Mam nadzieję w przyszłości zostać seniorką. Chcę pogłębiać swoją wiedzę i odkrywać nowe rzeczy, więc mam nadzieję, że właśnie to będę robić.
Kasia Sołoducha. Software Engineer w segmencie Real Estate w OLX od lipca 2022 roku. Zajmuje się monetyzacją dla użytkowników indywidualnych wystawiających ogłoszenia na otodom.pl oraz jego odpowiednikach w Rumunii (storia.ro) i Portugalii (imovirtual.pt). Na co dzień pracuje w języku Golang nad AWS-owymi serwisami. Używa też GraphQL w serwisie odpowiedzialnym za komunikację frontend<->backend.