Jak dzisiaj szukałbym pierwszej pracy – poradnik od poziomu „chcę w programowanie”

Dołączyłem ostatnio do grupy JavaDevMatt na facebooku która skupia głównie osoby początkujące, szukające pierwszej pracy, junior developerów. Udzieliłem się w jednym wątku dotyczącym poszukiwań i.. dostałem masę zapytań w PW. Po namyślę stwierdziłem, że klepnę posta na ten temat, ponieważ mając wiedzę którą posiadam obecnie, moje poszukiwania pracy wyglądały by zupełnie inaczej. Ja akurat szukałem jako junior Java developer, ale myślę, że po za technologiami które wymienię porady są interdyscyplinarne. Ale po kolei.

Jak szukałem pierwszej pracy?

Cóż, moja historia jest taka, że skupiłem się głównie na poznaniu javy jako języka. Nie zagłębiałem się w żadne frameworki, po prostu robiłem proste programiki nie zastanawiając, czy może w pracy przyda mi się coś jeszcze. Dodatkowo starałem się zrobić coś, co by mnie wyróżniło. Wtedy był to kurs programowania dla początkujących, który aktualnie jest dostępny tutaj. Mam też na koncie studia informatyczne, ale każdy sam musi zdecydować, czy są potrzebne 🙂 Przeczytałem mnóstwo opinii zarówno za, jak i przeciw i to nie jest tematem tego wpisu. Faktem jest, że aktualnie nie spotkałem się z pracodawcą, który by ich wymagał. Ale nigdy nie wiadomo, czasy mogą się zmienić, część pracodawców może mieć to w wymaganiach również dzisiaj. Dodatkowo, pierwszą pracę zdobyłem pisząc na Facebooku, że szukam 😉

Jak szukał bym pracy dzisiaj?

Z racji tego, że moje porady brzmią jak przepis podaję je w punktach, po wykonaniu których dostaję się pracę 🙂 Nie jest to oczywiście wiedza objawiona, tylko moje zdanie poparte doświadczeniem, nie mniej dam sobie obciąć klawiaturę, że postępowanie zgodnie z tą procedurą poprowadzi w dobrym kierunku 😉 Skupiam się tutaj na scenariuszu, w którym coś już robisz i w ciągu dnia masz 2-3 godzinki na ekstra naukę. Jeśli studiujesz, Twoja sytuacja jest jeszcze lepsza, bo masz więcej czasu 🙂

  1. Po pierwsze – język angielski. Prawie każda firma go wymaga, jeśli idzie Ci słabo, to ćwicz równocześnie z wykonywaniem następnych punktów. Od początku pisz kod po angielsku, staraj się czytać angielskie artykuły, rozwijaj też czynne umiejętności, rozmowa to podstawa w tej branży 😉
  2. Wszyscy mówią, zajmuj się tym co Cię interesuje 😉 Ale prawda jest taka, że na początku po prostu tego nie wiesz. Metaforycznie wchodzisz w świat kartonów o różnych kształtach i kolorach, ale nie wiesz co jest w środku. Bo skąd, to są po prostu nazwy: Node.js, Java, R#. Są różne zestawienia które pomagają zdecydować, jaki język wybrać na podstawie tego, którą częścią technologii chcemy się zająć. Np takie:
    which-programming-language-should-i-learn-first-infographic
    po kliknięciu naciśnij PPM i otwórz grafikę w nowej karcie, żeby zobaczyć pełną rozdzielczość

    Po za tym można wybrać kilka które nas interesuje i poczytać co się w nich tworzy. Ale nawet jeśli wybierzemy i nam się nie spodoba, to zawsze można to zmienić. I tak zyskujemy doświadczenie, ponieważ wchodząc w nowy język, coś już rozumiemy i nie trzeba np tłumaczyć nam koncepcji zmiennej, pętli, instrukcji warunkowej, obiektu 😉 Dodatkowo język jest środkiem do tworzenia aplikacji, a nie celem. Chociaż na początku łatwo o tym zapominamy. Zresztą do tej pory walki na polu Java czy .Net przez znawców tylko jednej z tych technologii to chleb powszedni 🙂 Ale nie zawracajmy sobie teraz tym głowy.

  3. W międzyczasie wybieraj się na jakieś konferencję o danej technologii, jeśli mieszkasz w dużym mieście na pewno jest jakaś w okolicy. Jeśli w małym, to może chociaż online. Poznaj trochę środowisko, może prelegenci przekonają Cię do aplikowania do którejś z firm. Jeśli byłeś już na kilku i jakaś firma bardzo Ci się podoba, to pogadaj z kimś, może być z hr-u. Powiedz, że się uczysz i na co masz zwrócić uwagę, bo za kilka miesięcy chcesz zacząć u nich pracę. Weź adres i napisz maila, dokładnie wypytując o technologię. Efekt murowany, jeśli po kilku miesiącach napiszesz następnego – jestem gotowy, chcę aplikować. Na sam start dostajesz mnóstwo punktów 🙂
  4. Ogarnij podstawy wybranego przez siebie języka. No dobra, ale gdzie kończą się podstawy? Pomyślmy – zmierzyć to możemy np poziomem projektu który potrafimy napisać, albo powiedzmy czasem który poświęcimy. Ta druga miara podoba mi się bardziej. Dlaczego? Nie chcę proponować konkretnych projektów które miały by coś mierzyć, w tym miejscu w przypadku javy Mateusz podał przykładowy, który świadczy, że coś umiesz. Ale w innych technologiach złożoność może być inna. Moja propozycja? 300 godzin z danym językiem na początek korzystając z kursów praktycznych, w których uczymy się i tworzymy od razu jakieś małe rzeczy, następnie może jakaś bardziej szczegółowa książka, coś w stylu kompendium, byle nie zbyt toporna, żeby nie stracić zapału (cały czas ćwiczymy kod, robimy przykłady, wiedza na sucho wchłania się gorzej). Jeśli przyjdzie nam do głowy jakiś projekt na max kilka dni, również go zróbmy.
  5. Bierzemy ogłoszenia o prace na stanowisko które nas interesuje i patrzymy co tam jest po za wybraną przez nas technologią przewodnią 🙂 Oczywiście ogłoszenia rzadko piszą programiści, dlatego może być tam kilka byków, lepiej przejrzeć więcej ogłoszeń i wybrać najpopularniejsze technologie, albo dopytać na forum. Może ucząc się trafiliśmy na to, w którym kierunku dalej się rozwijać? Jeśli nie, to najlepsza droga, przejrzałem kilka przykładowych ofert i wyszły mi takie technologie:
    • Spring
    • Maven
    • jUnit
    • SQL
  6. Jak nie trudno się domyślić warto poświęcić kilkanaście lub kilkadziesiąt dni na naukę każdej z nich. Różne znajdziemy i mają różne poziomy złożoności.
  7. Coś już umiemy, dobrym pomysłem jest w tym momencie poznanie jakiegoś systemu kontroli wersji. Tutaj standardem jest raczej GIT, chociaż zdarza się, że jest inaczej. Ponadto dobrze byłoby podnieś swój ogólny warsztat, dowiedzieć się, czym są code-smells, kiedy komentarze mają znaczenie, w tym miejscu mogę polecić konkretną propozycje: „Czysty kod..” autorstwa Uncle Boba. Dodatkowo utworzenie kont na portalach typu LinkedIn, czy Twitter, Github nie zaszkodzi. Coś już wiemy, czyli możemy komentować, albo udostępniać rzeczy które uważamy za wartościowe.
  8. Przez ostatnie około 150-200 godzin ‚średnio duży’ projekt. Staramy się korzystać z kontroli wersji, dobrych praktyk itd.. Dodatkowo publikowanie go na GitHubie jest dobrym pomysłem. Dzięki temu w trakcie rekrutacji można powiedzieć, że mamy coś, co możemy pokazać.. Jeśli nie zdążymy go skończyć to trudno. Z pierwszym projektem tak będzie, możemy chcieć zaczynać pisać go od początku, to normalne, cały czas się uczymy 😉
  9. Nie jest to punktem koniecznym, ale wyjdźmy po za schematy. Zróbmy coś nowego, co sprawi, że od początku spojrzą na nas inaczej. Nie wiem, np włączyłem się w projekt open source, moja praca polegała na.. Albo wysyłając CV dorzućmy krótki filmik, pochwalmy się blogiem w którym opisujemy jak się uczyliśmy, co sprawiało nam problemy i jak je rozwiązywaliśmy. Inwencja twórcza jak najbardziej dopuszczalna.
  10. Zróbmy dobre cv, nie chcę się tutaj rozpisywać nad szczegółami, ale bez koloryzowania, czytelne, ładne, opiszmy projekty. Można to cv podesłać komuś do wglądu, albo poszukać materiałów jak robić dobre jako początkujący programista. Jest tego sporo w sieci. Trzeba też sobie odpowiedzieć na jedno bardzo ważne pytanie, które padnie na pewno. Ile chcemy zarabiać? W mojej ocenie w momencie w którym to piszę, czyli ostatni kwartał roku 2016 stawka 2200-2800 netto dla junior java developera bez doświadczenia we Wrocławiu jest normalną stawką 😉 To wszystko oczywiście zależy od firmy, technologii, etc.. Można się rozejrzeć za porównywarką zarobków na danym środowisku, albo podpytać kolegów.

A co jest najważniejsze?

Minął rok, może trochę mniej, może trochę więcej, może nawet dwa w zależności od tego ile mieliśmy czasu. Punkty z listy odhaczone, umiemy to. Pora rozejrzeć się za dobrą pracą. Najlepiej uderzać do firm, które już sobie upatrzyliśmy, albo które ktoś nam polecił, albo które pojawiają się na rynku i wyglądają dobrze. Dostosuj CV pod konkretne oferty, wysyłaj i chodź na rozmowy 😉 Spokojnie, mi też kilka pierwszych prób się nie udało i nie dostałem pracy. Spytaj co było słabe, popraw i próbuj dalej. Tutaj znajduje się bardzo dobry film odnośnie rozmowy rekrutacyjnej, kilka pomysłów i kilka błędów które można popełnić. Warto też w sieci poszukać przykładowych pytań, czy porad, jak dobrze wypaść na rozmowie. Bo wiesz co, może zabrzmi to banalnie, ale najważniejszym elementem jesteś Ty. Twoje podejście, w internecie można spotkać wiele opinii, że programiści uważają się za primadonny, które tylko wybrzydzają i narzekają. Ty pewnie myślisz, że nic jeszcze nie umiesz. Ale nie przejmuj się, programiści z dobrym 10 letnim stażem też tak myślą, wszystko spowodowane jest przez syndrom oszusta, o którym świetnie opowiadał Michał Gruca, ja też pewnie kiedyś jeszcze coś o nim napiszę 🙂 A tymczasem wyrzuciłem z siebie wszystko co miałem do powiedzenia na temat drogi jaka moim zdaniem jest najbardziej optymalna do zostania programistą. Możesz ją oczywiście zmodyfikować, dodać gdzieś inne elementy, takie jak np nauka wzorców projektowych, po za tym, to nie jedyna ścieżka, świetnie swoją historię opowiedział też Damian Knak. Twoja kolej, powiedz w komentarzu co o tym myślisz, i czy chcesz podążać tą drogą, czy może masz jakąś inną historię do opowiedzenia. Jeśli jesteś na początku, to również napisz co o tym myślisz 😉 Tak więc drogi pre-juniorze, zakasuj rękawy i do dzieła 🙂

Pozdrawiam!