Ostatnio coraz częściej spotykam się z pytaniem “jak zacząć pracę w IT”. Słyszę to pytanie od moich znajomych, ich znajomych i coraz częściej widzę je w różnych sieciach społecznościowych. Widząc jak z czasem coraz więcej ludzi postanawia zainteresować się tą dziedziną, postanowiłem spróbować coś podpowiedzieć w tej kwestii w ramach tego podcastu. Pragnę jednak z góry ostrzec, że odpowiedź na to pytanie nie jest prosta, ponieważ przekwalifikowanie to proces złożony z kilku kroków i wymagający czasu. Nie ma też jednego niezawodnego sposobu przejścia do IT. Myślę, że każdy kto przeszedł już tę drogę może sam opowiedzieć własną historię. Postanowiłem wszystkie własne przemyślenia na ten temat podsumować w tym odcinku licząc na to, że komuś z Was się przydadzą.
W branży IT pracuje bardzo wiele wyspecjalizowanych inżynierów jak na przykład programiści, administratorzy, inżynierzy DevOps, architekci baz danych, testerzy i wielu innych. Są jednak również liczni pracownicy nietechniczni jak choćby rekruterzy, menedżerowie, marketingowcy, handlowcy i tak dalej. Ta druga grupa pełni nieraz bardzo istotną rolę jak na przykład wyjaśnianie nietechnicznemu klientowi jak działa produkt, albo znajdują odpowiedniego specjalistę technicznego, który rozwiąże problemy klienta. Śmiem twierdzić, że bez właśnie tych nietechnicznych pracowników firmy kontraktorskie lub consultingowe nie miałyby tak dużego wzięcia w dzisiejszych czasach. Obie grupy specjalistów, ci techniczni i ci nietechniczni idealnie się uzupełniają i wspólnymi siłami popychają do przodu proces tworzenia niezwykłych produktów. Zatem zanim zaczniecie szukać pracy w IT zadajcie sobie pytanie, czy aby na pewno chcecie wykonywać pracę techniczną. W IT można przecież wykonywać ciekawe zadania, ale jedynie orientować się w technologiach, bez dokładnej ich znajomości. Jeśli lubicie codziennie rozmawiać z nowymi ludźmi i jak to się mówi “znacie się na ludziach”, może warto zostać rekruterem. Jeśli lubicie chodzić na spotkania z klientem, słuchać jego potrzeb i przekazywać je programistom może warto zostać menedżerem projektu. Lubicie porządkować pracę innych, jesteście poukładani i macie posłuch wśród ludzi, może warto zostać Scrum Masterem dzięki którym całe firmy działają sprawniej. Oczywiście każda z tych ról wymaga innego poziomu wiedzy technicznej, jednakże wystarczy tutaj tylko pewne zorientowanie w temacie. Zatem pierwszy krok w drodze do znalezienia pracy w tej branży to zadanie sobie pytania “czy na pewno chcę zajmować się zagadnieniami technicznymi” ponieważ ta branża również potrzebuje ludzi o innych specjalizacjach. Dopiero po szczerym przemyśleniu tematu można przejść dalej.
Załóżmy, że jednak po namyśle postanawiacie wykonywać pracę techniczną. Postanawiacie zająć się programowaniem, administrowaniem czy jakimś innym kierunkiem inżynierskim. Jak pewnie wiecie, technologie rozwijają się bardzo szybko, dla tego w trakcie Waszej pracy będziecie musieli się cały czas dokształcać i uczyć nowych rzeczy niezależnie którą ścieżkę wybierzecie. Z tego również względu będziecie musieli dogonić swoich rówieśników, którzy już w branży pracują. Możliwe w związku z tym jest, że pierwsze miesiące w nowej pracy będą intensywne. Szczególnie jeśli dostaniecie pracę w startupie, bo tam tempo prac jest większe niż w dużych firmach. W dużych korporacjach natomiast zazwyczaj presja jest znacznie mniejsza, ale i tempo rozwoju osobistego jest mniejsze. Nie mam tutaj jednoznacznej odpowiedzi która opcja jest lepsza na pierwszą pracę. Zazwyczaj w startupie można bardzo szybko zdobyć umiejętności, których w korporacji można by się uczyć nawet 2-3 razy dłużej z różnych względów. A co za tym idzie potencjalne zarobki rosną również znacznie szybciej. Trzeba jednak się nastawić na to, że nieraz po powrocie do domu trzeba będzie coś doczytać albo czegoś się pouczyć. Osobiście polecam rozpoczęcie kariery w startupie, ale każdy musi sam podjąć taką decyzję.
Niezależnie czy będziecie pracować w startupie czy wielkiej międzynarodowej korporacji i niezależnie jaką ścieżkę rozwoju wybierzecie, jest pewien zestaw umiejętności, które musi posiąść każdy
techniczny pracownik. Niezależnie czy zajmiecie się testami, programowaniem gier czy czymkolwiek innym, musicie znać kilka podstawowych narzędzi.
Pierwsze narzędzie to git. Wiecie pewnie, że aplikacje czy skrypty się pisze w formie odpowiednio przygotowanych plików tekstowych, które nazywamy kodem źródłowym. Ale czy zastanawialiście się jak ten kod się rozwija? Przecież na tych samych kodach źródłowych pracuje kilka osób w zespole. Jeden dopisuje jakąś funkcjonalność, drugi poprawia jakiś błąd, a trzeci testuje jakiś zupełnie nowy pomysł na optymalizację. Przecież każdy z tych ludzi zmienia nieraz te same pliki tekstowe. Wydawałoby się więc, że już po dwóch dniach każdy z nich będzie miał inaczej działający kod a nikt nie będzie miał efektu pracy ich wszystkich. Otóż ten właśnie problem rozwiązuje system kontroli wersji git. Git został stworzony przez samego Linusa Torvaldsa twórcę Linuxa. Git jest narzędziem, które między innymi właśnie zbiera zmiany w kodzie naniesione przez wielu programistów i łączy je w jedną całość. Dzięki temu kod możne być rozwijany przez ludzi w dowolnej części świata, którzy nawet nie musieli się nigdy widzieć na oczy. Git jest dzisiaj podstawą do bardzo wielu jeszcze nowocześniejszych technologii, które wykraczają poza zakres tego odcinka. A skoro jest podstawą do innych technologi, nie sposób go uniknąć. Dla tego warto zacząć się go uczyć jeszcze przed rozpoczęciem poszukiwan pracy w IT.
Kolejną rzeczą jaką musimy traktować poważnie jest system kontroli zadan. Każda firma zajmująca się IT korzysta z jakiegoś rozwiązania tego typu. Praca praktycznie każdego technicznego pracownika w tej branży przebiega według takiego samego schematu. Pracownik zagląda na listę zadan, które powinien wykonać w tym tygodniu, bierze zadanie o aktualnie najwyższym priorytecie i kiedy je wykona pisze krótki komentarz po czym zamyka je. Z punktu widzenia takiego pracownika jest to właściwie zalogowanie się na odpowiednią stronę, przesunięcie prostokącika z nazwą zadania z kolumny “do zrobienia” do kolumny “w trakcie” a potem przesunięcie do kolumy pod tytułem “zrobione”. Niby prosta czynność i wydaje się początkowo bezcelowa. Zaręczam jednak, że wcale nie jest bezcelowa. Ktoś kto przygotował nam te zadania i nieraz znajduje się w innym kraju codziennie ogląda postęp prac zespołu. Jeden rzut oka na tablicę z zadaniami bardzo mu pomaga w dalszym planowaniu prac. Jeśli nie aktualizujemy swojej tablicy z zadaniami to nie dość, że utrudniamy pracę swoim przełożonym to jeszcze dajemy do zrozumienia, że nic nie zrobiliśmy. Lepiej poważnie traktować takie tablice i jeszcze przed rozpoczęciem pracy zapoznać się z jednym z takich systemów śledzenia zadan. Wystarczy pół godziny pobawić się jakąś aplikacją jak na przykład Trello i już będzie wiadomo jak będziemy wykonywać zadania w praktycznie każdej firmie. Niby proste, ale czasem trudno się do tego przyzwyczaić. Dla tego zachęcam do zaczęcia już teraz.
Należy przyznać, że praca w IT przyciąga introwertyków. Muszę jednak ostrzec tych, którzy są już wręcz aspołeczni i za wszelką cenę pragną uniknąć kontaktu z ludźmi. Praca w IT to dość często praca zespołowa. Bardzo rzadko zdarza się być jedyną osobą odpowiedzialną za jakiś obszar. Zazwyczaj należymy do zespołu, z którym musimy współpracować. Nie oznacza to, że całe 8 godzin będziemy w kilka osób pisać kod. Raczej chodzi o to, żeby nie obawiać się zapytać kogoś z zespołu o pomoc lub wyjaśnienie jakiejś sprawy, kiedy już sami nie dajemy rady rozwiązać jakiegoś problemu. Nieraz też będzie sytuacja, kiedy w kilka osób będziecie próbować rozwikłać jakiś problem. Ogólnie rzecz ujmując będziecie mieć czas na wykonywanie swoich zadan samodzielnie, ale przygotujcie się również na współpracę, ponieważ cała siła w zespole, który gra do tej samej bramki.
Ostatnia rzecz, którą należy bezwzględnie posiadać to samodzielność. Bez wątpliwości w pierwszych dniach a może i tygodniach pracy na nowym stanowisku wiele rzeczy będzie się wydawać niejasnych i niezrozumiałych. To naturalne. Nawet doświadczeni programiści zadają pytania swoim młodszym kolegom, którzy dłużej pracują w tym konkretnym projekcie. Jednakże wszystko ma swoje granice i Wasze pytania powinny być poprzedzone próbą samodzielnego zmierzenia się z problemem. Jeśli
zadacie komuś z zespołu pytanie, czemu coś zostało zaprogramowane w dany sposób, prawdopodobnie udzieli Wam wyczerpującej odpowiedzi. Jednakże, jeśli zapytacie, jak działa jakaś ogólnodostępna biblioteka, możecie się liczyć z asertywną odpowiedzią w stylu “przeczytaj dokumentację” albo “zapytaj wujka Google”. Pamiętajcie, że bardzo dużo wiedzy jest już w Internecie a bardzo duża ilość darmowych kodów jest dostępna wraz z dokumentacjami. Warto też od razu w nowej pracy zapytać, gdzie jest dokumentacja do produktu, który rozwija firma. Nieraz się okaże, że takiej nie ma, ale to już inny problem. W każdym razie zanim zapytacie kogoś z zespołu o dowolną rzecz, spróbujcie sami odpowiedzieć sobie na pytanie poprzez wszystkie znane Wam sposoby. Pamiętajcie, że Wasi nowi znajomi z pracy i szef również obserwują, czy się uczycie i będą oczekiwać, że z czasem liczba Waszych pytan spadnie do minimum.
Jeszcze na koniec jeden komentarz odnośnie umiejętności. Pewnie nieraz spotkaliście się z taką opinią, że praca w IT, a szczególnie na stanowisku programisty wymaga znajomości matematyki. Moim zdaniem ten mit zrodził się w czasach, kiedy w szkołach średnich pisaliśmy jakieś proste programy do obliczania pola trójkąta czy tam innej figury geometrycznej. W prawdziwej pracy programisty wymagane są zupełnie inne umiejętności, jak na przykład modyfikowanie kodu do bardziej zwięzłej i czytelnej formy, albo wyszukiwanie błędów logicznych w kodzie. Oczywiście są i tacy programiści, którzy programują modele matematyczne, ale coraz częściej tę rolę przejmują analitycy czy statystycy. W dzisiejszych czasach nie oczekiwałbym od programisty umiejętności rozwiązywania równan różniczkowych. Ci ludzie na codzien borykają się z zupełnie innymi problemami, niż matematyka. W związku z tym, jeśli chcecie zostać programistami, lepiej skupcie się na algorytmice a nie matematyce.
Wymieniliśmy kilka ogólnych umiejętności pracowników IT. Skupmy się teraz na tym co robić, kiedy już dokonacie wyboru swojej specjalizacji. Nieraz pytanie jakie zadają mi znajomi chcący się przebranżowić brzmi “z jakich źródeł się uczyć?”. Zazwyczaj oczekują odpowiedzi w stylu “przeczytaj książkę x”, albo “zapisz się na kurs y”. Jednak z góry muszę rozczarować oczekujących takiej prostej odpowiedzi. Nieraz spotkałem się z kandydatami świeżo po weekendowym kursie, którzy niestety nie znali podstaw. Nieraz też spotykałem ludzi po kilkuletnich studiach z informatyki nie znających wyżej opisanego systemu git. Z drugiej strony natknąłem się parę razy na młodych ludzi jeszcze w wieku licealnym którzy w pewnych obszarach onieśmielali wiedzą. Kluczem do zdobycia wiedzy w temacie nie jest wybranie odpowiedniego źródła, ale pokora do jej zgłębiania. Zawsze będzie coś nowego do nauczenia się, zawsze będzie jakaś nowa technologia do okiełznania. Nawet eksperci dość często doczytują na temat najnowszych zmian w technologiach, bo po prostu inaczej nie da się za tym nadążyć. W związku z czym, zamiast pytać skąd się uczyć, po prostu uczcie się tak, jak Wam najdogodniej. Nieważne czy są to internetowe kursy, książki, dokumentacje czy co tam jeszcze. Jeśli macie jakichś znajomych już od dawna zajmujących się IT, zapewne usłyszycie od nich coś w stylu “nie ma sensu uczyć się z książek, bo one się szybko deaktualizują”. I co prawda należy się zgodzić z takim zdaniem, to należy pamiętać o jednej rzeczy. To zdanie płynie z ust doświadczonych nieraz specjalistów. Oni mogą nową technologię poznać w ciągu tygodni a czasem nawet dni. Im faktycznie wystarczy przeczytanie paru artykułów i na zasadzie podobienstnwa do czegoś z czym mieli już do czynienia poradzą sobie doczytując dokumentacje na bieżąco. Jeśli jednak jesteście nowicjuszami, nie zrobi Wam to różnicy, jeśli przeczytacie dwuletnią książkę. W koncu chodzi o to, żeby zacząć swoją pierwszą pracę a nie zostać mistrzem technologii w kilka dni. Zatem uczcie się tak, jak Wam wygodnie i co najważniejsze, bądźcie pokorni, nie udawajcie, że wiecie wszystko. Szczególnie jak dojdzie do rozmowy rekrutacyjnej.
Kolejne pytanie, które kilka razy już dostałem od zainteresowanych przekwalifikowaniem brzmi “czy warto zdobywać certyfikaty”. Tutaj akurat moje zdanie jest jednoznaczne. Myślę, że na początek
kariery jak najbardziej warto zdobyć jakiś certyfikat nawet jeszcze przed rozpoczęciem pierwszej pracy. Jest jednak pewien warunek. Certyfikat, który chcecie zdobyć musi być rozpoznawalny na świecie i mieć jakąś wartość. Nikomu nie zaimponujecie certyfikatem uczestnictwa w jednodniowym kursie obsługi Linuxa. Jeśli chcecie pokazać, że faktycznie już coś umiecie, wyszukajcie w sieci frazę “najlepsze certyfikaty z Linuxa” albo “Najlepsze certyfikaty dla programisty Java” i tak dalej. Szukajcie na stronach anglojęzycznych. Dość szybko wyrobicie sobie zdanie co w Waszej dziedzinie zainteresowania jest obecnie uznawane za wartościowe. Pewnie nieraz znajdziecie ranking 10 najlepszych certyfikatów dla danej specjalizacji. Wybierzcie coś z pierwszej trójki i zacznijcie się przygotowywać. Osobiście preferuję certyfikaty, które były poprzedzone egzaminem typu “hands-on” czyli takiego, kiedy dostajemy laptopa, problem do rozwiązania i mamy jakiś ograniczony czas na jego rozwiązanie. Jednakże certyfikaty uzyskane po egzaminie z pytaniami zamkniętymi też nieraz są dobrze odbierane. Warto jeszcze wspomnieć, że egzaminy dość często są płatne a im wyższy poziom zaawansowania egzaminu tym cena jest wyższa. Myślę jednak, że potraktowanie jednego z takich podstawowych egzaminów jako inwestycji będzie dobrym kierunkiem. Ostatecznie, jeśli pracodawca zobaczy CV bez doświadczenia w branży, ale ciekawy certyfikat w odpowiedniej sekcji, może uznać, że ma do czynienia z człowiekiem, który już podjął jakiś wysiłek i wydal pieniądze na szkolenie się w dziedzinie. Czyli musi to traktować poważnie. Na pewno pracodawca nie przejdzie koło takiego CV obojętnie.
Jest jeszcze jedna rzecz, którą zawsze doradzam swoim znajomym, którzy chcą się przebranżowić, szczególnie jeśli ich praca wiązać się będzie z częstym obcowaniem z kodem. Zatem przede wszystkim programiści, ale także i inne specjalizacje mogą skorzystać z tej rady. Pamiętacie, kiedy na początku tego odcinka wspominałem o systemie kontroli wersji git? Udowodnijcie, że umiecie się nim posługiwać, oraz pisać czytelne kody. Stwórzcie własne repozytorium kodu na GitHubie i udostępnijcie je publicznie. Jako programiści możecie w nim umieścić jakiegoś prostego klona Ubera. Jako inżynierzy DevOps możecie umieścić jakiś kod konfigurujący infrastrukturę w chmurze. Wykażcie się pomysłowością. Nie zakładajcie, że Wasz kod będzie przez kogoś wykorzystywany produkcyjnie. Jedynie stwórzcie swoje własne repozytorium i pochwalcie się nim pracodawcy. Nawet jeśli pracodawcy się nie spodoba Wasz kod, możecie zapytać co jest w nim nie tak i pewnie udzieli Wam porad jak go poprawić. W efekcie na kolejne spotkanie rekrutacyjne będziecie mieć już lepszy kod i co najważniejsze, wiedzę zdobytą za darmo od kogoś doświadczonego. Zachęcam do tworzenia swoich własnych repozytoriów i udostępniania ich światu nie tylko na początku swojej kariery, ale i przez cały czas jej trwania. To genialny sposób na uzyskiwanie porad od najróżniejszych ludzi w Internecie.
Dochodzimy do momentu, kiedy zostajecie zaproszeni na rozmowę kwalifikacyjną. Szczerze mówiąc w tej branży nie ma jakiegoś stałego schematu takich spotkan. Czasem rozmowy są jednoetapowe, czasem i trójetapowe. Czasem jesteśmy proszeni o rozwiązanie jakiegoś problemu poprzez napisanie kodu, czasem tylko jesteśmy pytani jak byśmy dany problem rozwiązali i tak dalej. Nieważne jaki byłby przebieg takiej rozmowy rekrutacyjnej, mam tylko jedną radę. Szczerość zawsze popłaca. Kiedy ktoś zada pytanie, na które nie znacie odpowiedzi, powiedzcie szczerze, że nie wiecie i krótko dajcie znać jakie kroki byście podjęli, aby się dowiedzieć, gdyby taki problem naprawdę miał miejsce w Waszej pracy. Zwykłe “nie wiem, ale sprawdziłbym dokumentację albo wyszukał w internecie” nieraz wystarczy. Na rozmowach rekrutacyjnych bardzo rzadko trafiają się tacy kandydaci, którzy już mają całkowitą wiedzę w tematach, które akurat są potrzebne w danym projekcie. Czasem ludzie z wieloletnim doświadczeniem nie znają odpowiedzi na podstawowe pytania, ponieważ na przykład z używanych w projekcie 8 technologii, mieli do czynienia z sześcioma. Zatem jeśli czegoś nie wiecie, szczerze to przyznajcie. Techniczny pracownik natychmiast zauważy próbę wymyślenia czegoś na poczekaniu.
Mam nadzieję, że te kilka ogólnych rad pomoże Wam znaleźć swoje nowe miejsce w tym niezwykle dynamicznym świecie. Jak zawsze przy poszukiwaniu pracy w zupełnie nowej branży, początkowo trzeba poświęcić trochę czasu, aby dogonić tych, którzy już pracują. Każdy zaczyna trochę inaczej, jedni zaczynają wysyłać CV wcześniej, inni później. Ja mogę jedynie zapewnić, że jeśli weźmiecie do serca wymienione przeze mnie porady, Wasze szanse na znalezienie swojej pierwszej pracy na stanowisku technicznym znacząco wzrosną. Może nawet ośmieli Was to do wynegocjowania trochę wyższej pensji. Życzę więc powodzenia w uczeniu się nowych rzeczy i poszukiwaniu nowej wymarzonej pracy. Życzę również sukcesów na nowym stanowisku, kiedy już to nastąpi. Może kiedyś spotkamy się przy jakimś projekcie i nawzajem nauczymy się czegoś od siebie?