Bez doświadczenia NIE JESTEŚ junior developerem
Przerobiłeś kilka kursów związanych z programowaniem więc aplikujesz na stanowisko junior developera? Jest bardzo mała szansa, że ktokolwiek się Tobą zainteresuje.
Małe doświadczenie, a nie jego brak
Przygotowując się m.in. do tego wpisu przejrzałem kilkanaście ogłoszeń o pracę dla juniorów na kilku popularnych portalach. Zapytałem też Google jak można zdefiniować junior developera. I wiesz jakie informacje znalazłem?
Popracuj żeby pracować
Jeśli chodzi o ogłoszenia to praktycznie wszystkie były zgodne. Minimum to pomiędzy pół roku, a rok doświadczenia w programowaniu.
Można mieć wrażenie, że kiedyś było to przesunięte bliżej zera. Jednak tak naprawdę odkąd pamiętam w ofertach na stanowiska juniorskie pojawiały się wzmianki o doświadczeniu. Moim zdaniem nie jest to żadna złośliwość ze strony pracodawców. Jest to po prostu najprostszy filtr odsiewający osoby z pierwszego zdania tego wpisu. Bo jeżeli się przyjrzysz dokładnie to zobaczysz, że w przeważającej większości nie ma tam wzmianki o „doświadczeniu komercyjnym” tylko o „doświadczeniu”. Jeżeli od pół roku rozwijasz swoją aplikację i jest to faktycznie coś co starasz się robić sam to jak najbardziej możesz uznać, że pół roku doświadczenia posiadasz. Co prawda działa to głównie w przypadku juniorskich stanowisk ale wiele osób o tym zapomina. Tym doświadczeniem jest też oczywiście odbyty kilkumiesięczny staż. Zwykły staż wakacyjny stawia Cię w lepszej pozycji w kolejce po pracę juniora.
Łączenie faktów
Bo tak naprawdę w tym doświadczeniu, o którym mowa chodzi przede wszystkim o obycie z pracą przy projekcie. Przerabiając kursy i na tym kończąc nie umiesz pracować z projektem. Nie musisz szukać rozwiązania nowych problemów. Bo podążasz za krokami autora i jeżeli coś nie działa to po prostu sprawdzasz co pominąłeś. Nie potrzebujesz zastanawiać się jak coś rozplanować. Bo struktura pracy jest zasugerowana przez kurs. Nie dzielisz sobie pracy na zadania. Bo tym zajął się autor kursu i to on wyznaczył kolejne etapy.
A rozwijając coś swojego już takie doświadczenie zdobywasz. Ponieważ zaczynasz to często musisz szukać jak coś zrobić w swojej aplikacji. Skoro robisz aplikację to masz wyznaczone funkcje jakie powinna mieć, a więc masz listę rzeczy do dodania. Własny projekt to nie jeden element, o którym mówił kurs. To zbiór wielu elementów, które musisz połączyć w całość.
Nagrałem też film na temat bycia programistą po samych kursach. Znajdziesz go na moim kanale, do subskrybowania którego Cię zapraszam:
Kto Ty jesteś?
W przypadku definicji kim jest junior developer zdania są podzielone. Jedni uważają, że jest to osoba, którą ciągle trzeba prowadzić za rękę i nie dostarcza wartości biznesowej. Inni twierdzą, że jest to osoba niesamodzielna, ale dostarczająca wartość kiedy się jej przypilnuje. I to z tą drugą grupą się zgadzam. Wg mnie aktualnie juniorem można nazwać osobę, która nie ma problemu z dodaniem w projekcie czegoś podobnego do istniejących fragmentów. Potrafi też na podstawowym poziomie poruszać się po kodzie. Ale za to trzeba się upewnić, że dobrze zrozumiała zadanie. A w razie potrzeby podpowiedzieć jakich konstrukcji mogłaby użyć w kodzie. Wykonanie zadania zajmie też tej osobie trochę więcej czasu.Jeżeli dajemy juniorom trochę swobody to kod takiej osoby często łatwo poznać podczas code review kiedy wszystko ogólnie działa, ale dużo w takim kodzie można zrobić lepiej.
Junior vs stażysta
Podstawową różnicą pomiędzy juniorem, a stażystą nie jest długość stażu pracy. Tak naprawdę podstawowa różnica to to w jakim celu taka osoba jest zatrudniona.
Stażysta = inwestycja w przyszłość
Stażysta jest bezpośrednią inwestycją w przyszłość. Firma zatrudnia taką osobę aby mogła NAUCZYĆ SIĘ jak się pracuje. Poznać sposób grupowej pracy z kodem, zarządzania zadaniami, kulturą organizacyjną. Jest to po prostu osoba, którą się uczy i przygotowuje do zostania programistą. Zatrudniając stażystę firma godzi się z tym, że ten człowiek będzie wymagał inwestowania w niego pieniędzy i czasu, a jednocześnie nie będzie przynosił żadnych przychodów firmie.
Przykładowo kiedy u nas zatrudniamy stażystę do zespołu to klient nie płaci za niego ani złotówki. Cały koszt bierze na siebie nasza firma. Stażysta nie jest liczony do ilości osób w zespole i często jego zadania sprowadzają się do analizy pracy innych albo pisania kodu, który niekoniecznie jest związany bezpośrednio z projektem. Kiedy skończy się okres stażu to w idealnym wypadku dostajemy osobę, która zna podstawy pracy z kodem w prawdziwym projekcie i jednocześnie poznała sposób funkcjonowania w firmie. Dzięki temu wystarczy zmienić umowę ze stażowej na juniorską i zacząć dawać takiej osobie prawdziwe zadania. I liczyć go jako pełnoprawnego członka zespołu, który wymaga dużo krótszego okresu wdrożenia.
Junior daje wartość
Zatrudniając juniora już się czegoś od niego wymaga. Przede wszystkim tego, że będzie przynosił przynajmniej minimalną wartość firmie. Będąc zatrudnionym jako junior powinieneś mieć jakieś pojęcie o tym jak wygląda praca z prawdziwym projektem i umieć działać mając wyznaczone zadania. Nie musisz wszystkiego wiedzieć. Nie ma problemu z tym, że będziesz potrzebował dodatkowych wyjaśnień do zadania albo zapytasz o to czego powinieneś użyć do rozwiązania problemu. Jednak jeżeli nie wiesz jak przeglądać kod albo masz problem z użyciem czyjegoś rozwiązania w trochę innym kontekście to już jest kiepsko. Jako junior nie będziesz prowadzony za rękę linijka po linijce. Co najwyżej dostaniesz dodatkowe wyjaśnienia, sugestie, propozycje zmiany albo informacje gdzie coś znaleźć.
Jeżeli w zespole jest jeden mid/senior, który wykonuje X zadań w ciągu dnia to zatrudnienie juniora powinno zmienić tą wartość do Y, tak że Y > X. Jeżeli junior wymagałby prowadzenia za rękę przez całe zadanie to ten mid/senior nie mógłby poświęcić czasu na swoje zadania. A wtedy ilość tych zamkniętych nie tylko by nie wzrosła ale prawdopodobnie by spadła. Nie po to się kogoś zatrudnia żeby zmniejszyć ilość wykonanej pracy! Junior będzie prawdopodobnie dostawał prostsze zadania jednak musi potrafić przynajmniej częściowo działać samodzielnie przy ich wykonaniu.
Zrób coś sam
Osób chcących zajmować się programowaniem jest coraz więcej. Jednak duża część z nich ma problem z tym, że pracodawcy wymagają chociaż minimalnego doświadczenia. Ignorują oni równocześnie opcję pójścia na płatny (!) staż. A nie chodzi tutaj o jakąkolwiek złośliwość. Jedynie o to, że pracownika zatrudnia się po to żeby przynosił korzyść firmie. Niezależnie od tego na jakim poziomie się go zatrudnia. A osoba, która nigdy sama niczego nie wykonała nie przyniesie nawet minimalnej wartości. Nawet jeśli pracowałaby za darmo to jedyne co to powoduje to minimalne zmniejszenie kosztów jakie generuje taki pracownik. Jeżeli nie można od Ciebie wymagać jakiejkolwiek samodzielności, nie miałeś okazji zobaczyć z czym wiąże się tworzenie projektu i wszystkiego dopiero się będziesz uczył to jeszcze nie jesteś na etapie aby ktoś dał Ci pełnoprawną pracę.
Zrozumiałem to dopiero w momencie kiedy sam byłem stażystą, a teraz jestem osobą, która ocenia inne osoby przychodzące na rozmowy oraz nadzorującą ich pracę w projekcie.
Paradoks?
Jednak nie jest to żaden powtarzany paradoks, że chcą pracownika z doświadczeniem, ale przez to nie ma jak tego doświadczenia zdobyć. Bo takie doświadczenie nie musi być komercyjne. Wystarczy, że zrobisz coś swojego co nie będzie podążaniem krok po kroku za tutorialem. Wtedy możemy zacząć rozmawiać o pracy, a nie tylko o stażu.
Dodatkowo jeżeli jesteś dopiero na etapie wybierania języka i nauki programowania to zachęcam się do obejrzenia poniższego filmu gdzie mówię dlaczego lepiej jest zbierać praktykę w czymkolwiek niż zbyt długo szukać idealnego języka na początek:
Jedna ogłoszenia nie są adekwatne do tego czego szukają HR’zy. Wiele razy spotkałem się z wymogiem „rok doświadczenia komercyjnego” ale wszystko wychodzi dopiero po rozmowie i zadaniu rekrutacyjnym gdzie faktycznie pokazana jest wiedz i zapał do pracy. Bardzo często nie wszystkie wymagania są branie pod uwagę a wymogi w ogłoszeniu to tylko pokazanie czym firma się zajmuje i na czym pracuje. Jak można się rozwinąć. Wiec nie warto skreślać oferty bo nie umiemy programować w X języku ale mieliśmy styczność z 90% całej oferty. Lepiej wysłać CV zapytać jak szybko można nadrobić zaległości i czy obecnie można być przydatnym do pracy.
Juniorów robi się coraz więcej i nic w tym dziwnego nie ma, ale trzeba umieć odróżnić właśnie wartościowego juniora od kogo kto przeszedł szybkie szkolenie, bo branża jest atrakcyjna. Dobry artykuł!
Ja doskonale wiem, jak trudno jest znaleźć pracę bez odpowiedniego doświadczenia zawodowego. Ukończyłam studia, parę kursów rozwijających moje kompetencje, ale z powodu zerowego doświadczenia, nikt nie chciał mnie zatrudnić. Przez 3 miesiące wysyłałam swoją aplikację do wielu firm w różnych miastach, ale odpowiedzi pojawiały się bardzo sporadycznie. Dopiero po stworzeniu CV zgodnie z paroma zasadami i skupieniu się na innych aspektach niż dotychczas, zostałam zaproszona na kilka rozmów kwalifikacyjnych. Polecam zapoznać się z tym wpisem https://cvwork.pl/cv-bez-doswiadczenia/ który fajnie omawia to, w jaki sposób powinno się przygotować takie CV bez doświadczenia zawodowego.
Warto więc najpierw czytać, a potem działać
Czyli wystarczy, że mam na GitHubie proste API jak https://github.com/gothinkster/realworld albo https://micropub.spec.indieweb.org ? Nawet jeśli zrobię to w 2 tygodnie zamiast 1 godziny ? Z bieda testami i zastanawianiem się jak to zepsuć.
Mam też niedokończony silnik tekstowego MMORPG, który będzie wysyłany jako kontener Dockera do Heroku (serwer). Do tego generator statycznych stron pod Github Actions wysyłający zmiany do Netlify. Zanim będzie można go dołączyć do CV minie parę miesięcy. Nie wiedziałem czy wysyłać CV z demkami, czy może poczekać aż będę miał prawdziwy projekt.
Zaczynałem z PHP 5. Uczę się czystego Ruby’ego i czystego przeglądarkowego JavaScriptu ES6+. W mojej okolicy pojawia się ogłoszenie Junior PHP + mile widziana Symfonia. Powinienem sobie poradzić z obiektowym PHP 8 ale nie robiłem większych projektów w języku, ani frameworku. Znam podstawy MVC i podstawy Rest API. Rozumiem że nie muszę być ekspertem i wystarczy porobić chwilę zabawkowe projekty by się oswoić ?
I jak to jest z wymogiem idealnej współpracy w grupie ? Robiąc coś dla siebie pracuję raczej ze sobą. Żeby nie było że samodzielnie coś potrafię ale w współpracy z innymi juniorami zaczynam się plątać.