No dobra, dwa lata pracy jako programista Java zbliża się nieuchronnie, jakby nie patrzeć, jest to spory kawałek doświadczenia. Postaram się wiec w tym wpisie przybliżyć wam to, co dały mi 2 lata programistycznej pracy. Jak z tej perspektywy oceniam swoje przebranżowienie, naukę i co dalej :) Zapraszam do lektury.
Słowem wstępu
Jeśli nie znasz genezy bloga, to 2,5 roku temu postanowiłam zupełnie zmienić branżę i zacząć naukę programowania. Po pół roku znalazłam pierwszą programistyczną pracę, a potem kontynuowałam swój rozwój zawodowy. W tym czasie na blogu opublikowaliśmy kurs, z którego sama się uczyłam, a także wpisy uzupełniające wiedzę skierowane do juniorów. Więcej o mojej nauce znajdziesz w tym wpisie: http://kobietydokodu.pl/jak-zaczelam-programowac/, oraz kolejnych, już w nich podlinkowanych. Tymczasem, przejdźmy do tego, co głównie chciałam w tym wpisie przekazać, czyli zmian jakie zaszły przez te 2 lata.
Po pierwsze, wolność
Może to dziwne słowo, ale tak właśnie nazwałabym stan, kiedy język programowania nie przeszkadza Ci w pracy :) Mam tu na myśli moment, kiedy ze swoim programowaniem w Javie poczułam się na tyle pewna, że po prostu mogłam skupić się na dostarczaniu wartości biznesowej. Nie chodzi mi o sytuacje, w której wiem, jak wszystko napisać i nie musze sprawdzać, albo pozjadałam wszelkie rozumy i wiem najlepiej, odrzucając feedback czy inny punkt widzenia. Raczej jest to stan, gdy wiem, jak poradzić sobie z problemem, jak debugować, jak szukać rozwiązań i pomocy. Tak, to przyszło juz jakiś czas temu, ale myśle że warto o tym tu wspomnieć. Moment, kiedy programujesz, a nie tylko kodujesz, jest ważny dla każdego juniora. A nabywanie w ten sposób doświadczenia nabiera zupełnie innego wymiaru. Dla mnie samo pisanie kodu nie jest najprzyjemniejszą rzeczą na świecie, ale fakt, lubię też to. Znacznie bardziej interesuje mnie jednak dobieranie technologii i rozwiązań, zadawanie pytań biznesowi i próba dokładnego zrozumienia oczekiwań; programowanie jako proces, który przynosi konkretną wartość, a nie tylko działające linijki kodu. Im pewniej czuję się ze swoją wiedzą techniczną, tym łatwiej jest mi myśleć o potrzebach biznesu, o kodzie, jako o rozwiązaniu konkretnego problemu.
A im lepiej umiesz jeden język, tym łatwiej ci z drugim. Ostatni sprint spędziłam na nauce Angular’a 2 (nauce połączonej z dostarczeniem konkretnej story, więc trochę presji było :) ). I jest to zupełnie inna nauka, bo zupełnie nie boje się próbować, czy popełniać błędy. Wiem, czego mniej więcej mam oczekiwać od kodu (choć do miłości do front endu jeszcze daleko). Radze sobie sama, mam nawet z tego fun, nawet gdy się nie kompiluje :)
Po drugie, wyzbycie się kompleksów
Na początku swojego programowania, czy nawet przy pierwszych rozmowach rekrutacyjnych często myślałam o sobie jako o „tej gorszej”, bo przecież nie mam studiów w IT. Z resztą i rekruterzy lubili przy pierwszej czy drugiej pracy na to marudzić.
Jednak już pierwsze doświadczenia i współpraca z ludźmi świeżo po studiach pokazała mi, że dyplom może mieć znaczenie, albo może nie mieć go wcale. A właściwie, że osoba po świeżo studiach może umieć znacznie mniej, ale może faktycznie też być niezłym wyjadaczem. Ale tutaj, warto wspomnieć o jednej, mega ważnej rzeczy. Nie ilość a jakość. Moje, choć małe doświadczenie ze Springiem i Javą, okazywało się często największym na tle innych juniorów. I faktycznie, może umieli oni napisać skomplikowane zapytania SQL, ale o Spring Data nie wiedzieli za dużo. Wiedza, jaką miałam na początku naprawdę pozwalała mi fajnie i ze zrozumieniem przystępować do działania. Jasne, miałam braki, nie byłam też biegła w Javie. Jednak znałam w praktyce proces tworzenia aplikacji webowej ze Springiem, Spring Data, wiedziałam co to git, czy w końcu rozumiałam pewne praktyczne koncepcje (jak Exception Handlery, logowanie itp)… Uważam, że droga jaką wybrałam na swoje wejście do branży okazała się skuteczna, a teoria, której czasem brakowało szybko została nadrobiona.
Z resztą, teraz, nadal wiem, że porównywanie się z innymi jest trudne i chyba zwyczajnie niepotrzebne. Praca pracy nierówna, projekt nierówny projektowi, a każdy programista w inny sposób się angażuje i inne rzeczy wyciąga z takiego działania. Warto zatem skupić się na swojej pracy. Na zdobywaniu doświadczenia, dostarczaniu jakości. I właśnie na tej podstawie oceniać swój postęp i planować rozwój.
Po trzecie, wartość dodana
Moja wiedza techniczna to jedno, jednak na co dzień przydają się też inne umiejętności: analizy, zadawania pytań, rozumienia, współpracy. Kiedy okrzepłam programistycznie znacznie łatwiej było mi skupić się na całości projektu i tym kliencie, który w końcu znajdzie się po drugiej stronie komputera. Ale analityczne myślenie, czy wnikliwość przydają się również w technicznych dylematach: gdy trzeba wybrać jakąś technologię albo podejście. Gdzie warto zadawać pytania jeśli czegoś nie nie rozumie, albo wydaje się, że ktoś źle rozumie dany problem. Bo programowanie to proces złożony, a na dobry kod składa się nie tylko biegłość w jego wstukiwaniu, a także, a właściwie przede wszystkim dokładne rozumienie, co w jego rezultacie powstanie.
Po czwarte, bycie częścią zespołu
Zaangażowanie. Dla wielu programistów będzie to tylko wywiązywanie się z zadań. Dla mnie to bycie częścią zespołu. Pomoc. Proaktywność. dzielenie się wiedzą. Dopytywanie. Ludzie w moich dotychczasowych zespołach bywali bardzo różni. Od takich, którzy bez problemu kumali Scruma i pracę zespołową, do takich, którzy życzyli sobie by zadawać im pytania tylko na przerwie, a cały dzień klepali kod w słuchawkach.
U mnie dzielenie się wiedza czy po prostu dostrzeganie, jak ktoś ma problem przychodzi dość naturalnie. Nauczenie się pracy z ludźmi, którzy są mniej proaktywni, czy chętni do współpracy było i jest wyzwaniem. Kiedy szłam do pierwszej pracy miałam w głowie obraz Seniora, który będzie dla mnie autorytetem technicznych, który będzie dbał o rozwój zespołu, który będzie wyznaczał techniczny kierunek w projekcie. Superogarniacza. Nadal na niego czekam, ale wiecie co? W między czasie po prostu biorę na siebie tyle, ile mogę by taki ideał zastąpić. I mimo, że moje doświadczenie nie jest ogromne, jest ono conajmniej wystarczające by wspierać zespół, siebie samą, a także projekt w odpowiednim rozwoju.
Po piąte, morze możliwości
Dwa lata temu, to wszystko było jasne. Byłam Anią, która z marketingowca chciała zostać programistą. Moim celem było przetrwać ;) Zdobyć pierwsze doświadczenie, zobaczyć czy to dla mnie, douczyć się tych brakujących podstaw. Teraz, planowanie ścieżki kariery jest znacznie bardziej skomplikowane. Dróg i możliwości jest wiele, czynników, które mogą wpłynąć na konkretne wybory również. Patrząc na ostatnie dwa lata jestem mega dumna, bo przeszłam wiele a z miejsca na jakim jestem obecnie mam naprawdę ciekawe perspektywy. Jednak myślę, że odkąd na pytanie co chcę dalej robić, odpowiedź: programować, jest zdecydowanie niewystarczająca, planowanie kariery i rozwoju jest po prostu trudne. Albo inaczej, jeśli chce się to zrobić porządnie to faktycznie wymaga to czasu.
To chyba tyle moich przemyśleń. Na koniec dodam tylko jedno: decyzja o zmianie branży okazała się naprawdę słusznym wyborem. I nawet, jeśli czasem sobie ponarzekam (idealne projekty w idealnych firmach po prostu idealnie nie istnieją), to jestem naprawdę szczęśliwą programistką Java.