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!

  • Marika Kowalska

    Dzięki Michał za cenne wskazówki! 🙂

    • migellal

      Proszę bardzo, liczę, że kiedyś dasz znać jak się przydały 🙂

  • Taki Jeden

    Fajny artykul, ale mam jedna uwage – angielski. Owszem, to podstawa, zeby rozumiec jak sie czyta dokumentacje. Ale rozmowa to juz nie jest podstawa. Pare lat temu owszem, firmy braly do siebie kazdego, kto chcial programowac, a glownym kryterium byl wlasnie angielski, bo szef praktycznie zawsze byl za granica. Ale teraz nie moge sie zgodzic, nawet zagranicznej firmie lepiej jest zatrudnic kogos na poziomie B1, ale majacego wysokie umiejetnosci techniczne, a nastepnie wyslac go na kurs i pozwolic sie nauczyc podczas codziennej pracy niz zatrudnic kolejnego osobnika na C1, ktory ma problemy z rozroznieniem klasy abstrakcyjnej od interfejsu. Jakies pol roku temu bylem swiadkiem zatrudnienia ARCHITEKTA w firmie z USA, ktory jest wlasnie na kursie na poziomie B1+(przygotowanie do B2).

    Ale rzeczywiscie, to B1 to jest absolutne minimum do czytania, wiec jak ktos tego nie ogarnia to lepiej niech od tego zacznie.

    • migellal

      Wiesz co, byłem na kilku rozmowach o pracę i tylko na jednej nie miałem rozmowy po angielsku, na pozostałych różnie, czasem kilka zdań, czasem połowa rozmowy. Może trochę nieprecyzyjnie się wyraziłem, należy potrafić w miarę płynnie, na proste tematy, dogadać się po angielsku 😉 Czyli B1, oczywiście jak starcza czasu warto dbać jednak o język 😉 Dzięki za zwrócenie uwagi!

      • Sebastian Gruza

        Ciekawe doświadczenia, bo z mojego z kolei wynika co innego – spośród około 7 czy 8 rozmów rekrutacyjnych tylko w jednej była chwilka rozmowy „z HRem” po angielsku. W pozostałych nic, co najwyżej luźne pytanie „jak z angielskim jestem?”. W pracy natomiast w dobie google translatora angielski jest stosunkowo najmniejszym z problemów – oczywiście o ile nie trafimy gdzieś, gdzie trzeba rozmawiać ;). Ogólnie zdecydowanie warto znać, ale uważam, że większym priorytetem na początku jest jednak techniczno-ścisłe rozumienie różnych aspektów i np. (najlepiej biegła) znajomość podstaw programowania.

        • infeltk

          A z mojego wynika, że odpadałem przez angielski.

      • Taki Jeden

        Ja angielskiego nie mialem tez na jednej, ale pamietam jak na poczatku przygody trafilem do jednej firmy, gdzie dostalem pytanie o hobby po angielsku, odpowiedzialem lamanym angielskim w tempie 3 zdania w 3 minuty, zalamana rekruterka nie zadala juz kolejnych pytan w tym jezyku, a mimo to oferte dostalem i tam sie wlasnie angielskiego nauczylem 😉

  • Taki Jeden

    Jakiś czas temu również napisałem podobnego posta. Dzisiaj pomyślałem, że warto kontynuować i założyłem nowego bloga. Jak możesz to zerknij 😉 http://biurownik.blox.pl/

    • migellal

      Zajrzałem, całkiem rzeczowo, trochę inaczej niż u mnie, warto zerknąć 😉 Ps dodaj jakiś about na stronie, strasznie jesteś anonimowy 😉

      • cksciecha

        Polecasz zrobić komuś about, a sam nie masz go uzupełnionego 😀

        • migellal

          A racja, trudno się nie zgodzić z taką logiką 😀 Muszę coś tam wpisać, fakt 😉

  • Piotr

    Niedawno założyłem bloga i napisałem już 2 posty. Jeśli chcesz zerknij 🙂 piotrprogrmulti.wordpress.com

    • migellal

      Też miałem ciemną szatę na starym blogu, ale to faktycznie ciężko się czyta. Dlatego proponuję trochę rozjaśnić i poprawić czytelność 😉 Co do treści, to po napisaniu posta zostaw go na kilka godzin w roboczych, a potem przeczytaj znowu na świeżo, zobaczysz ile błędów wyłapiesz. Ja staram się tak robić i potem publikować. Co do szaty, material design to zamierzony zabieg 😉 A ogólnie – powodzenia 😉

      • Piotr Bidny

        Nie miałem czasu odpisać. Sorry, jeżeli uznałeś, że zignorowałem wiadomość. Dzięki za podpowiedzi 🙂 Ciężko będzie mi rozjaśnić tło bo nie znalazłem żadnej stronki która umożliwiałaby mi ściągnięcie fajnych obrazów w mojej tematyce za darmo 🙂 Nie jest to blog profesjonalny, za którego miałbym płacić WordPressowi i innym, tylko prywatny 🙂 więc dlatego za darmo.

        W/g mnie jest wtedy lepiej widoczne w nocy nie rażąc w oczy 🙂 Trochę zmieniłem i proszę o radę. Jak teraz wygląda? Jeżeli tło nie pasuje i uznałyś, że jakiś inny odcień/kolor byłby lepszy dla czytania i też ładnie by wyglądało to mógłbyś mi podać w formie #….. ?

        • migellal

          Tło jest już dużo lepsze, da się spokojnie czytać – tylko, że na razie są tylko dwa posty 🙂 Napisz kilka i pomyślimy jak dalej ulepszać bloga 😉

  • Piotr

    Graficznie szata strony przypomina mi szatę interfejsu systemu androida 6 😉

  • Pingback: ()

  • Mikołaj

    Gratuluję bloga. Świetnie się go czyta. Artykuł na pewno otworzył oczy, pewnie nie tylko mi:). Niedawno skończyłem studia IT, również pochodzę z małej wioski (wyczytałem że Ty też, i rozbieżności zaczynałem od magazyniera :)). Myślałem że studia to pierwszy, najważniejszy krok do znalezienia pracy. Pomyliłem się i to grubo. 4 lata pokazały ogrom rzeczy do przyswojenia, ale i mocno ogólny poziom studiow. Za ogólny aby dostać prace. A zaczynać trzeba od zera. Niestety prawie 30 lat na karku, 8miesieczny syn, i bank czai się za rogiem. Trochę słaba perspektywa na zmianę pracy na junior developera. obecnie pracuje na stanowisku specjalisty w dziale logistyki małej firmy produkcyjnej, nie jest to zawód który kocham. Inaczej z programowaniem. Jeszcze za licealisty z Turbo Pascala wyciskalem ostatnie poty. Gdy pisałem inżynierke, wpatrując się w sufit i próbując zasnąć, wpadały mi najlepsze pomysły do głowy… Żona po pewnym czasie przyzwyczaiła się do widoku mnie przy laptopie o 3 nad ranem.
    Biorę się za siebie, muszę ogarnąć to co umiem, podstawy, trochę zakurzone już Java, c#, sql i konsekwentne (konsekwencja to słowo przewodnie) dążenie do celu, realizując m.in krok po kroku wspomniane przez Ciebie punkty.
    Jeszcze raz dzięki za bloga!
    Pzdr Mikołaj

    • migellal

      Cześć! Bardzo się cieszę, że się podoba! Mam w głowie jeszcze kilka tekstów dla juniorów, a nawet coś extra, ale to w nie najbliższej przyszłości. Tymczasem bardzo zachęcam do udziału do konkursie „Daj się poznać” (ostatnie wpisy były na ten temat). Bo to chyba najlepsze, co możesz zrobić w swojej sytuacji. Gdybym mógł jakoś pomóc, wal śmiało. Pozdrawiam!

  • Pingback: ()

  • Marek Dzimra

    Też, jak niedawno przeglądałem oferty pracy to rzuciło mi się w oczy wiele ogłoszeń ze Springiem, wydaje się, że to jeden z najbardziej przyszłościowych języków programowania. Sam zacząłem go od niedawna zgłębiać. W tym momencie jeszcze pracuję w naszej kochanej Javie, ale pamiętam jak szukałem pierwszej pracy. Trafiłem do korpo, ale szybko zrozumiałem, że tam się za wiele nie nauczę. Teraz pracuję w Software House Codete i to zupełnie inna bajka! Nowsza technologia, dużo rozwijających projektów i zgrany team 🙂