Jak zdobyć pierwszą pracę na stanowisku programisty?
Najczęściej czytane
Oczywiście, bo zatrudniając studentów do 26-go roku życia na umowie zlecenie, nie płaci się ZUSu. A co zyskuje pracownik? Jak powinna wyglądać pierwsza praca programisty? Ja szukałem swojej pierwszej pracy jako student, w dalekim 2001 roku.
Najważniejsze w pierwszej pracy programisty to determinacja i konsekwencja trafić do zespołu który zna się na programowaniu, ale też na projektowaniu bezawaryjnego oprogramowania, ma wdrożone procesy produkcji bezawaryjnego oprogramowania i potrafi szkolić pracowników. Bo jeśli na samym początku trafić do syfiarzy (a uwierz mi, to jakieś 95% rynku, niestety), no to czemu się nauczysz od nich? A później to się mnoży i cały internet cierpi.
W Polsce sytuacja z wytwarzaniem oprogramowania, wg mnie, jest fatalna. Przez niecałe 5 lat przebywania w kraju, spotkałem tylko jedną firmę, która ma wdrożony proces produkcji bezawaryjnego oprogramowania. To licząc kilkadziesiąt firm, z którymi współpracowałem lub współpracuję. Problem jest taki że początkujący informatyk nie jest w stanie rozpoznać firmy, która bylaby w stanie nauczyć go programowaniu, bo nie wie czym jest prawdziwa, poprawna produkcja oprogramowania. Prawdziwa nauka programowania zaczyna się dopiero w pracy. Także to jest absolutnie kluczowe.
Problem jest taki że w Polsce brak własnej szkoły produkcji bezawaryjnych hi-tech rozwiązań, a światowe doświadczenie prawie nie bierze się pod uwagę. Kraj pozostaje się w niektórym sensie hermetyczny, odporny na innowacje. Jeśli informatyk przez całe życie nie trafi na dłuższy okres do firm zagranicznych, to, najprawdopodobniej, nigdy nie nauczy się programowania (nie mylić z klepaniem kodu), szacunku do kodu, do zasobów komputera...
Historia pracy dla jednej firmy
Oto historyjka z życia wzięta.
W 2017 roku współpracowałem z agencją marketingową w Warszawie, programowałem dla nich system do kolejkowania zamówień w serwisie wymiany opon. Specjalizacją agencji marketingowej jest, jak wskazuje sama nazwa - marketing. Reklamy i marketing, ale na pewno nie produkcja oprogramowania. Ciekawostka jest taka, że po bardzo krótkiej współpracy właściciel tamtej agencji, porównując mnie do kolegi który pracuje dla niego od ponad 8 lat, powiedział że ja wytwarzam zbyt mało kodu dziennie. Wyobraź sobie jak działa produkowane przez niego oprogramowanie. Kolega klepał kod jak wariat, bo około tysiąca linijek dziennie. Na funkcjonalność którą ja tworzyłem, pisząc 5 linijek przemyślanego i elegancko zaprojektowanego kodu, kolega (który stwierdzał że ma doświadczenie, podobne do mojego) pisał paręset linijek kodu, jak nie parę tysięcy. Te same rzeczy w kodzie powtarzał nawet przez kilkanaście razy, zamiast rozdzielenia logiki na abstrakcyjne warstwy, wszystko klepał (prawdopodobnie, klepie do tej pory) wprost, po kilkaset linijek kodu w jednej funkcji, niektóre klasy zawierały powyżej 10000 linijek kodu. System absolutnie read-only. Jak trzeba było coś zmodyfikować, on tworzył każdą funkcjonalność od nowa, bo nawet sam nie był w stanie zmodyfikować własnego kodu. I to nie mówiąc o nazwach klas, zmiennych, tabel i pół w języku, oczywiście, polskim. Pracodawca uznał to za wzór profesjonalizmu. A ja uciekłem stamtąd jak tylko zorientowałem się o co chodzi. Przy czym, miałem problem z odzyskaniem pieniądz za wykonaną pracę. Broń Boże początkującemu programiście trafić do podobnej firmy.
W ogóle, broń Boże trafić do agencji marketingowej na pierwszą pracę na stanowisku programisty, ponieważ na samym początku kluczowe jest nauczenie się poprawnych procesów wytwarzania oprogramowania, zrozumienia podstawowych wzorców architektonicznych (nie tyle ich nazw, ile treści), zrozumienia zasad SOLID i ogólnie nauczenie się poprawnego projektowania i pisania kodu. Przy czym nie tak że poprawność dla poprawności, wzorce projektowe bo to modne, a tak żeby to miało ręce i nogi.
Jak szukać pierwszej pracy?
Praca prawdziwego programisty zaczyna się dużo wcześniej niż po studiach, bo już w podstawówce, jak nie wcześniej. Najlepiej, jeśli obok jest ktoś, kto zna się na programowaniu i, koniecznie, na procesie wytwarzania bezawaryjnego oprogramowania. Achillesowa pięta polskiego IT to właśnie proces wytwarzania oprogramowania. Same kodowanie, według moich obserwacji, wygląda jak wszędzie - ktoś pisze bardzo dobry, poprawny kod, a ktoś generuje syf read-only. Ale sam proces wytwarzania oprogramowania to jakaś tragedia - większość prezesów firm, produkujących oprogramowanie i zatrudnionych przez nich menedżerów projektów nie mają zielonego pojęcia o bezawaryjnym oprogramowaniu. Jeśli ktoś z rodziców jest prawdziwym programistą, prawdziwym architektem systemów teleinformatycznych, albo jeśli Twój przełożony w pierwszej pracy jest prawdziwym ekspertem od wytwarzania oprogramowania i potrafi Cię nauczyć, no to masz wygraną. A co jeśli brak takiej osoby, a w pierwszej pracy obok i na górze nie ma prawdziwych informatyków?
Mam na to przepis:
- swobodny angielski w mowie i piśmie;
- znajdź pracę w amerykańskim outsourcingu.
Trudne? Nie jest łatwe, ale do zrobienia. Już pisałem o realnych wynagrodzeniach informatyków. Także jeśli interesują Cię te górne wynagrodzenia, trzeba trochę pracy w to włożyć. Tu, akurat, determinacja i konsekwencja są podstawą. Nie jest tak że 15 000 zł miesięcznie bo stanowisko nazywa się programista, tylko osoba zatrudniona na tym stanowisku coś potrafi. Czyli najpierw musi na to zapracować, porządnie się nauczyć, i to w pracy, a nie na studiach. Najważniejsze są trzy rzeczy:
- realne doświadczenie;
- realna, praktyczna, użyteczna wiedza;
- umiejętność sprzedawać wiedzę i doświadczenie.
Najlepiej jeśli zaczniesz projektować i programować oprogramowanie już w podstawówce. Koniecznie czytaj źródła (chociażby stackoverflow) w języku angielskim. Nie wiem jak sprawa wygląda w innych językach, ale z tych co ja potrafię czytać, to w angielskim i rosyjskim jest bardzo dużo wartościowych informacji. W polskim segmencie na razie mniej, ale idzie do przodu, bo co-raz więcej polaków uczestniczą w zagranicznych konferencjach, uczestniczą w zagranicznych projektach, co-raz więcej zagranicznych ekspertów przyjeżdża do Polski z wykładami, czyli branża się rozwija (może nie tak szybko jak w Stanach Zjednoczonych, ale na pewno się rozwija). Ewentualnie, prowadząc bloga informatycznego, uda mi się też przyczynić do rozwoju polskiego IT. Po to, właśnie, go prowadzę.
10 porad na pierwszą pracę informatyka
1. Stwórz profesjonalne CV. To podstawa. Jeśli nie masz doświadczenia, tu znajdziesz artykuł o napisaniu CV.
2. Szukając pierwszej pracy, zdecydowanie lepiej iść do firmy, która będzie Cię poważnie szkolić i płacić mniej, niż do firmy która od razu zapłaci o stówę więcej, ale będziesz tam klepać HTMLa i konfigurować święte WordPressy, nadal nie mając zielonego pojęcia o programowaniu.
3. Wysyłaj tak dużo CV, jak tylko się da. Co-najmniej, 150...200 CV miesięcznie będzie dobrze. Nie czekaj aż ktoś odpowie. Wysyłaj CV aż nie będziesz miał/miała podpisanej umowy (najlepiej, o pracę). Pracodawcy potrafią odpowiedzieć na maila nawet za pół roku, a najczęstszej ignorują maili (nie wiem po co płacą kasę za ogłoszenia rekrutacyjne). Także z wysłanych 50 CV możesz liczyć na 3...5 odpowiedzi.
4. Na rozmowie rekrutacyjnej zapytaj o wszystko. Czy umowa (o pracę?) będzie podpisana od pierwszego dnia, przed rozpoczęciem pracy? Ile dokładnie dostaniesz na ręce? Kiedy jest wypłacane wynagrodzenie? Czy faktycznie przez ostatni rok było zawsze wypłacane w terminie? Czy oni świadomi tego że jesteś początkujący? Dopytaj się dlaczego chcą Cię zatrudnić? Ewentualnie, poprzedni kolega uciekł, bo warunki nie znośne, albo oszukali go z wynagrodzeniem itd. Z mojego doświadczenia wynika że pracodawcy dużo częstszej oszukują pracowników niż pracownicy pracodawców (co też się zdarza). Czy jest ktoś, kto potrafi Cię szkolić zawodowo? Jakie doświadczenie ma ten ktoś? Co dokładnie będziesz robił lub robiła w pracy? Jakich dokładnie technologii będziesz używać? Jak oni radzą sobie z terminami - wszystko powinno być na wczoraj czy na przedwczoraj? Ile osób zatrudniają akurat w tym biurze? Kim są ich klienci?
5. Pamiętaj, że na początku kariery (dopóki nie jesteś ekspertem) to pracodawca Ci dyktuje warunki, a nie na odwrót. Z tego powodu warto wybierać firmy, które mają doświadczenie w zatrudnieniu i szkoleniu początkujących informatyków, bo za dużo (wynagrodzenie) nie wynegocjujesz na tym etapie, a szkolenie jest wartością dodaną.
6. Już na rozmowie rekrutacyjnej zapytaj czy mają wdrożony proces produkcji oprogramowania czy po prostu klepią kod. Zwykle bez sensu pytać, bo większość polskich pracodawców nie mają zielonego pojęcia co to jest. Dlatego lepiej zadawaj konkretne pytania, tak żeby utrudnić pracodawcy unikanie odpowiedzi:
- Ile architektów systemowych zatrudniają?
- Jakim doświadczeniem dysponuje architekt systemowy, zatrudniony w ich firmie?
- Jak dawno on czy ona pracuje dla tej firmy? Powinien być co-najmniej jeden architekt. Może to być doświadczony programista (od 15 lat w górę).
- Ile zatrudniają testerów?
- Czy są to profesjonalni testerzy?
- Czym jeszcze zajmują się testerzy w pracy?
Powinni to być osoby, specjalnie szkoleni i zatrudnieni wyłącznie do testowania oprogramowania. Jeśli okaże się że osobnych testerów nie zatrudniają, albo testerzy wykonują w firmie inne zadania, poza testowaniem i raportowaniem błędów - uciekaj z rozmowy rekrutacyjnej już na tym etapie, bo potencjalny pracodawca, prawdopodobnie, nie ma zielonego pojęcia o procesie wytwarzania oprogramowania. A Ci na tym etapie bardzo zależy na profesjonalnym zespole.
7. Zapytaj o szczegóły wdrażania produktu u klienta. Powinno Cię interesować czy to nie programista, czasem, wdraża produkt u klienta. Firma powinna zatrudniać osobnych specjalistów czyli wdrożeniowców. Programista powinien siedzieć w komfortowym biurze, mieć co-najmniej 2 monitory od 21 cali w górę i tworzyć bezawaryjne oprogramowanie. Jeśli potencjalny pracodawca ma inaczej - coś z nim jest nie tak.
8. Jako pierwszą pracę, omijaj szerokim łukiem agencje marketingowe, firmy jednoosobowe i startupy. Na tym etapie potrzebujesz dużej, stabilnej firmy, najlepiej produktowej, a nie usługowej.
9. Na pierwszą pracę omijaj szerokim łukiem pracę w firmie taty lub mamy. Musisz uczyć się walczyć. Walczyć samemu. Walczyć skutecznie, zwyciężyć, bronić swoich praw i wolności. W życiu cały czas trzeba walczyć. Tylko tak robi się sukces.
10. Nigdy nie przestawaj szukać pracy, chyba że sam lub sama staniesz się pracodawcą. Cały czas miej na LinkedIn, FB i innych portalach info, że w razie ciekawej oferty, co-najmniej, rozpatrzysz ję. Jeśli pracodawca zacznie zmieniać ustalone warunki, albo przed wypłatą wynagrodzenia będzie udawał że coś było ustalone inaczej (a to prawie klasyka) - musisz mieć inną ofertę, a najlepiej kilka do wyboru.
Portfolio początkującego programisty
Co jeśli nie masz jeszcze portfolio? Pracodawcy wymagają portfolio i doświadczenia, ale nie tłumaczą skąd ono powinno się pojawić.
Dlatego na początku artykułu napisałem i jeszcze raz wyraźnie podkreślam: informatyk to zawód który się zaczyna w podstawówce, od samego dzieciństwa. Żeby zarabiać tyle ile zarabiają dobrzy informatycy trzeba najpierw przez kilka lub kilkanaście lat harować jak wół, czytać dziesiątki, jak nie setki książek, cały czas na bieżąco śledzić za nowymi technologiami, które powstają dużo szybciej, niż przeciętny człowiek jest w stanie absorbować wiedzę.
Wykonuj pierwsze prace nawet bezpłatnie, ale wykonuj. Szukaj na FB w specjalnych grupach (jest ich mnóstwo) zleceń, powiedź ludziom wprost że jesteś początkującym, że chcesz stać się ekspertem lub ekspertką i na tym etapie nabijasz portfolio. Większość ludzi będą się śmiać (zazwyczaj to profesjonalni nieudacznicy), ale znajdą się adekwatni ludzie którzy pomogą Ci. W końcu napisz do mnie - ewentualnie pomogę. Najbardziej wartościowe roboty pokaż na własnej stronie internetowej. Nie masz własnej strony? To załóż ją tuż po przeczytaniu tego artykułu. Cały czas pracuj nad własną stroną. Cały czas je ulepszaj. Zrób najlepszą stronę w kraju.
Twórz inne własne projekty. Twórz na światową skalę. Twórz międzynarodowe projekty. Uczestnicz w projektach OpenSource. Na początku dołącz się do jakiegoś projektu (oczywiście, bezpłatnie), a jak osiągniesz wyższy poziom, załóż swój własny OpenSource projekt. Niech to wszystko ląduje w Twoim portfolio. Będąc informatykiem, cały czas musisz zapieprzać jak wół, bo branża rozwija się dużo szybciej niż człowiek jest w stanie pochłaniać wiedzę, a Ty musisz być na szczycie wiedzy i umiejętności. Wtedy to Ty będziesz decydować o warunkach Twojej pracy. Wtedy to Ty będziesz dyktować pracodawcy warunki, a nie na odwrót.
W razie pytań - służę pomocą. Pisz w komentarzach pod artykułem.
Jeśli znalazłe[-a]ś w tekście, literówkę, błąd stylistyczny albo inny błąd językowy - bardzo proszę o napisanie poprawki w komentarzu pod artykułem albo przez formularz kontaktowy. Dziękuję!