Java, Security, Coffee driven Developer - czemu zaczęłam uczyć się Javy

z-zycia-programisty

Kiedy zaczynałam kilka lat temu na poważnie przygodę z programowaniem moim światem był WordPress, a zawodowe plany wiązałam z frontendem. Byłam dumna z tego, że mogę zdobywać pierwsze komercyjne doświadczenie w branży, do której ciągnęło mnie jeszcze zanim rozpoczęłam studia psychologiczne.

Od tego momentu minęły cztery lata. I choć na początku przyszłość zapowiadała się co najmniej dobrze, przyszły chude lata, nie omijając branży IT. Zostałam z pewną programistyczną wiedzą i pytaniem, co dalej. A potem rozpoczęła się walka o przetrwanie.

Miękkie skille i entuzjazm? Spasujemy.

Liczne rozmowy z przedstawicielami branży IT upewniały mnie w przekonaniu, że wykształcenie psychologiczne może być moim sporym atutem w rozmowach rekrutacyjnych. Po części było - rzeczywiście otrzymywałam relatywnie dużo zaproszeń na rozmowy w porównaniu ze znajomymi, którzy również się przebranżowili czy przebranżawiali i szukali swojej pierwszej pracy. Jednak żadna z tych rozmów nie pozwoliła mi osiągnąć ostatecznego celu, którym było znalezienie pracy. Umiejętności miękkie w porównaniu z konkrentym doświadczeniem projektowym przegrywały.

Z perspektywy czasu widzę, że to nie był jedyny czynnik. Brakowało mi wtedy wystarczająco przejrzystego CV, którym mogłabym rzeczywiście się pochwalić. Aby jednak powstało takie CV, potrzebowałam więcej projektów komercyjnych, nieco więcej doświadczenia, a także nieco lepszego określenia, w jakim kierunku chcę się rozwijać.

Ostatnie ponad dwa lata spędziłam pracując jako freelancer. To pomogło zapełnić CV kilkoma projektami dla osób indywidualnych czy dla firm. Spędziłam również wiele czasu testując różne opcje i zastanawiając się, w którą stronę chcę iść w IT. Zatrzymałam się przy najprostrzym dla mnie na tamten moment do opanowania stacku technologicznym: JavaScript, TypeScript, React, NodeJS. Wielokrotnie przepisywałam CV, by na końcu tego etapu być już w stanie dość sprawnie posługiwać się językiem korzyści, tak istotnym dla biznesu i dla pokazania, jaką wartość mogę wnieść do projektu. Do swojego stacku dorzuciłam rosnącą wiedzę o bezpieczeństwie aplikacji.

Nie raz słyszałam w informacji zwrotnej, że moje umiejętności w zakresie komunikacji, znajomość języka angielskiego, zagadnień z zakresu cyberbezpieczeństwa i entuzjazm stanowią sporą wartość - jednak brak odpowiedniego doświadczenia sprawiał, że kolejne rekrutacje kończyły się odrzuceniami, a ja coraz bardziej zamykałam się w sobie.

Z czasem, gdy ktoś po raz kolejny mówił, że moje doświadczenie może być ogromną wartością dla zespołu, zaczęłam kręcić głową i kontrować - może i jest ważne i wartościowe, lecz jest niewystarczające, by się przebić.

... a bez projektu - nie ma projektu!

W ostatnim roku, gdy zaczęłam aplikować na stanowistka bliżej poziomu "mid", często jednym z niepisanych wymogów było doświadczenie projektowe. W moim przypadku problemem było niewystarczające, tylko kilumiesięczne doświadczenie w tym zakresie. Chodziło konkretnie o pracę w projekcie z innymi programistami, w ramach zespołu, możliwość poznania specyfiki pracy z gitem w tym konktekście, a także praktyczną znajomość chociażby wzorców projektowych czy szerzej architektury oprogramowania, o testach automatyczych nie wspominając.

W mojej pracy głównie stawiałam na testy manualne, biorąc pod uwagę specyfikę tworzonych przeze mnie rozwiązań. Chcąc jednak załatać tę lukę w doświadczeniu dołączyłam do programu Tech Leaders, w ramach którego skupiłam się na napisaniu aplikacji i przećwiczeniu takich umiejętności jak pisanie testów czy praca z gitem by mieć nieco więcej ekspertyzy w tym temacie. Szukałam też możliwości dołączenia do jakiegoś teamu w ramach wolontariatu. To ostatnie doświadczenie jednak często kończyło się niezgodą na podpisanie rozbudowanego NDA, które już na wstępie stawiało mnie w niekorzystnej sytuacji, przykładowo ustanawiając jako rozstrzygający do spraw spornych sąd w jednym z azjatyckich krajów na drugim końcu świata. I choć nie sądziłam, by musiała zaistnieć konieczność sięgnięcia po prawne kroki, nie chciałam podpisywać takich umów.

Z perspektywy czasu nie dziwię się, że wiele firm decyduje się zatrudnić kogoś, kto ma już takie doświadczenie. Łatwiej jest pracować z kimś, kto był na projekcie i wie, jak pracować z chmurą, potokiem CI/CD, Dockerem i Kubernetesem czy chociażby równoległą pracą w zespole na wielu gałęziach jednocześnie. To mocno usprawnia komunikację w projekcie, a mając takie doświadczenie pewne rzeczy po prostu rozumie się bez słów.

Nie zmienia to faktu, że w moim przypadku okazało się to być ścianą nie do przebicia i nie do obejścia, skoro by pracować na projekcie potrzebowałam doświadczenia projektowego, którego inaczej niż bez pracy na projekcie nie szło zdobyć. Z kolei moje próby samodzielnego nauczenia się potrzebnych umiejętności rozbijały się o brak czasu, brak sił, brak zasobów - najbardziej o brak teamu, z którym mogłabym w praktyce zobaczyć, jak wygląda taka praca i na co zwracać uwagę. Nie bez przyczyny mówimy oddzielnie o nauce teorii i o doświadczeniu, czyli aspekcie praktycznym. Pewnych umiejętności nie da się zdobyć, nie pracując w grupie.

Stałam się więźniem pętli, z której nie za bardzo miałam jak wyjść, choć wiedziałam, co powinnam zrobić - dostać się na jakikolwiek projekt, by zdobyć doświadczenie. Ale jak zdobyć doświadczenie, jeśli nie można się z obecnym doświadczeniem dostać na żaden projekt?

Piekło informacji zwrotnych

Mówi się, że feedback to dar - dający możliwość rozwoju. Wiele osób narzeka na brak feedbacku. Wszyscy marzymy o tym, by był on konkretny, pokazywał mocne i słabe strony, może był wspierający, w skrócie - trafiał w punkt. A może raczej - trafiał w nasze obecne potrzeby...

Zdarza się, czasem, taka informacja zwrotna. Czasem. Doświadczyłam jednak nie raz tego, że często jest ona zupełnie nie osadzona w rynkowych realiach, z którymi się mierzę, a dodatkowo zachęca do podejmowania wysiłku, który w pewnym momencie staje się wysiłkiem ponad siły. W końcu jak długo można dawać z siebie wszystko? Najtrudniejsze jest zaś samodzielne szukanie własnej drogi w sytuacji, gdy mało który feedbak stara się, poza informacją "co" jeszcze potrzebujemy przerobić, wskazać "jak" możemy to zrobić z głową. Jeśli ktoś jest już biegły w technicznych sprawach jest w stanie sobie z tym poradzić. Gorzej, gdy przychodząc spoza branży IT wciąż, poza nauką technologii, uczymy się, jak się uczyć skutecznie.

Wielokrotnie byłam zachęcana do aktywności na LinkedIn, do udziału w konferencjach, networkingu, robienia kata i pet projektów, szukania projektu w ramach wolontariatu. Owszem, każda z tych rzeczy dawała pewne korzyści. Jednak rozwijanie własnych sociali czy wystąpienia na konferencjach, choć potrafiło być satysfakcjonujące, nie dawało konkretnych ofert zatrudnienia. Z kolei dalsza nauka miałaby sens, gdybym była w stanie lepiej określić, w jakim technologicznym stacku chcę pracować. Choć miałam określone preferencje i rozbudowywałam dotychczasowy stack o nowe elementy, to nie potrafiłam - widząc brak owoców dotychczasowych działań - poświęcić się wyłącznie pracy nad udoskonalaniem swoich umiejętności.

Może dobrze się stało, że nie trzymałam się sztywno wspomnianego wcześniej stacku i szukałam nowych możliwości, gdyż z czasem okazało się, że problemem jest sam stack technologiczny - jest on zbyt popularny, co przekłada się na zwiększoną konkurencję. Zanim jednak doszłam do tego miejsca, to problemem był brak własnej strony, brak ciekawych projektów w wybranym stacku, brak doświadczenia w zadaniach rekrutacyjnych...

Tak, miałam wiele lekcji do odrobienia. I wiele z nich odrobiłam, słuchając nawet najbardziej krzywdzącego feedbacku, który zrzucał na mnie pełną odpowiedzialność za brak stałej pracy, narzucając kolejne ciężary, nie do udźwignięcia, nie uwzględniając jednocześnie okoliczności. Gdy w końcu lista rzeczy do opanowania wydłuża się, a jedyne, czego można się spodziewać na końcu działnia, to zachęta i konieczność do dalszego rozwoju - przychodzi moment bolesnego zderzenia ze ścianą.

Po ponad dwóch latach samorozwoju, pracy freelancera, wdrażania kolejnych informacji zwrotnych, a w pewnym momencie również punktowania, że czyjeś przekonania o tym, co działa nie zawsze się sprawdzają w praktyce życiowej innych ludzi, stanęłam na rozdrożu.

Zaczęłam zrezygnowana planować kolejną zmianę. Po pierwsze - złapanie jakiejkowiek pracy, by nie wypalić się tu, gdzie jestem. A potem - refleksję, czy ja chcę wciąż próbować swoich sił w IT? Może to już nie ma sensu?

Nagły zwrot akcji

Gdy już zaczynałam pierwsze kroki na nowej drodze i zamykałam powoli temat programowania, w pewne poniedziałkowe popołudnie, ponad miesiąc od rozmowy rekrutacyjnej, odebrałam telefon niosący pewną nadzieję na zmianę. Konkretnie - propozycję dołączenia do bootcampu i nauki... Javy. Jest to część szerszego projektu, a na końcu tej drogi jest szansa na pracę dla znanej firmy.

Czas, który minął od telefony do podjęcia decyzji, był bardzo trudny. Po ponad dwóch latach dostałam szansę, by móc rzeczywiście zrobić coś inaczej niż do tej pory. Dostałam możliwość rozwoju w ramach sensownego bootcampu, w małej grupie, z możliwością zdobycia tej wiedzy, którą tak trudno było mi samodzielnie wyszarpywać dzień po dniu. Wiedziałam, że wzięcie udziału da mi prawdopodobnie przestrzeń, by zbudować na nowo pewność siebie, a przede wszystkim - pozwoli mi złapać oddech i określi mój kierunek rozwoju na jakiś czas.

Miałam to wszystko z tyłu głowy. Wiedziałam, że mam wsparcie bliskich. Wiedziałam, że taka szansa może się długo nie powtórzyć. I... bałam się podjąć rękawicę.

Jakby przez ten czas pracy na to, by taka propozycja miała szansę się pojawić, wszystko we mnie skurczyło się. Jakbym stała się cieniem siebie, nie wierzącym już w to, że coś dobrego może się pojawić na mojej drodze. Wiedziałam, że czuję się tak, ponieważ długo walczyłam nie osiągając rzeczy, na których mi najbardziej zależało. Wiedziałam, że dołączenie do programu ma szansę być sporą pomocą na tej drodze. A i tak się wahałam.

Ostrożne spojrzenie w przyszłość

Ostatecznie rękawicę podjęłam. Github znów się zazielenia. Bootcamp jest niesamowicie wartościowy, a kontakt z żywymi prowadzącymi oraz sensowny program pozwoliły mi już w stosunkowo krótkim czasie zdobyć sporą wiedzę. Na ten moment CRUDy w SpringBoot stawiam od zera nawet we śnie ;)

Zdobywam te umiejętności, których tak bardzo mi brakowało w rekrutacjach, a także nabrałam na tyle dużo doświadczenia by zobaczyć, jak "suchą" wiedzę z kata, kursów i czytania książek móc zaimplementować w praktyce w projekcie.

Znalazłam brakujące ogniwo, którego brak sprawiał, że nauka tak długo była tak trudna - doświadczyłam tego, jak wiedza teoretyczna może zostać kompleksowo przełożona na programistyczną praktykę. Złapałam coś, co ciężko jest mi na ten moment określić słowami. Coś w formie know-how, jak działać w ramach projektu? Może to kwestia doświadczenia "ubrudzenia sobie rąk" w zadaniach, w których mogłam liczyć na konkretny feedback, mając jednak już na starcie solidny przykład jak koduje się tego typu rozwiązania? Czuję jednak, że łatwiej mi jest w tym momencie samej kodować w ramach freelancerskiej pracy. Inaczej patrzę na kod, który tworzę. Lepiej rozumiem to, co robię.

Czy mi pomoże znaleźć pracę? Być może. Pracuję na to.

Najbardziej jednak cieszy mnie pół roku spokoju. Pół roku, kiedy nie wysyłam CV, nie skupiam się na opanowywaniu rosnącej paniki, tylko na pracy i na nauce. Kiedy nie muszę stroić się w LinkedInowe piórka, mogę pomyśleć o tym, co dalej, domykać te tematy, które chcę bardzo domknąć, a które było mi bardzo ciężko domknąć wcześniej.

Ale... czemu Java?

Tak, jak wspomniałam, dla mnie język ma drugorzędne znaczenie. Nie mam preferencji. Zależy mi na tym, by programować, a nie na tym, by programować w konretnym języku.

Język to narzędzie do rozwiązywania problemów, z którymi przychodzi klient, a nie cel sam w sobie. Można dany język za coś nie lubić lub wręcz przeciwnie, lubić ze względu na coś. Można w jakimś języku tworzyć oprogramowanie siłą rozpędu, przez tzw. "zasiedzenie" lub po prostu, ponieważ mając wystarczające w nim doświadczenie można zarobić na chleb. W pewnych kontekstach dany język sprawdza się lepiej, dlatego nie warto przywiązywać się tylko do jednego z nich.

Poza tym wciąż moim długoterminowym celem jest przejście do cybersecurity. I wiele mogę zyskać, zdobywając najpierw doświadczenie w branży programistycznej. Java zaś jest moją przepustką do lepszego rozumienia backendu i, szerzej, kontekstu tworzenia oprogramowania, choć nie jedyną przepustką. Jednak na ten moment - najbardziej dostępną.

Początki bootcampu były trudne i nie spodziewam się, by dalej było lżej. Dlatego też skupiłam się na nauce, zrezygnowałam z mojej aktywności m.in. na LinkedIn, jednak nie żałuję - nauka w takim programie daje mi o wiele więcej korzyści niż inne moje działania, a zasięgi to jest coś, co zawsze można zbudować na nowo.

Dziś rozpoczynam drugą, dłuższą część programu. Priorytetem jest nauka, ale też łapanie oddechu po morderczych miesiącach ciągłych zmagań zawodowych. Skłaniam się również ku powrotowi do blogowania w miejsce niemalże codziennego pisania postów na LinkedIn. Owszem, to posty dają zasięgi. Jednak widzę, że uzależnianie się od jednej platformy wcale nie jest takim rozsądnym pomysłem i wolę zainwestować czas we własny zakątek w sieci, gdzie każdy może zajrzeć, niekoniecznie przekopując się przez ogrom treści w social mediach.

I jeszcze ta kawa!

Sączę sobie popołudniową kawę i myślę sobie, że mimo szalonego tempa na bootcampie sporo w ostatnim czasie odpoczęłam. Co prawda udało mi się ponownie w przeciągu kilku tygodni się rozchorować i najbliższe dni spędzę w łóżku, jednak spokój płynący z tego, że wiem, co będę robić przez najbliższe kilka miesięcy, jest bezcenny.

Nie jest to spokój niezakłócony. Wciąż zastanawiam się, co będzie, jeśli ta zmiana nie pozwoli mi osiągnąć mojego celu. Zdarza mi się martwić tym, czy dam radę nauczyć się pewnych zagadnień. Nie wspominając o pracy...

Widzę, jakim wyzwaniem jest dla mnie udział w bootcampie. Widzę też, że moja neuroróżnorodność pewne rzeczy ułatwia, a inne - nieco utrudnia. Poza programowaniem uczę się ściślej współpracować z innymi i jednocześnie dbać o siebie w sytuacji, gdy kontaktów z ludźmi jest więcej niż wcześniej. Wyzwaniem jest również organizowanie sobie nauki - nie jest to jednak nic, z czym nie mogłabym sobie poradzić.

Pozostaje zacytować Lewisa Hamiltona: "Keep pushing!" (Czyli - działam dalej!).