Przekwalifikowanie – mrzonka czy realna szansa?

Chociaż nie zawsze da się to rozpoznać po ubiorze bądź stylu życia* i niekoniecznie jest to sprawiedliwe, zarobki w miarę doświadczonych programistów czynią z nich jednych z najlepiej wynagradzanych ludzi w Polsce.

Nie wszyscy zajęli się informatyką z powodu absolutnej pasji. Kodowanie to bardzo przyjemna, satysfakcjonująca i stanowiąca wyzwanie praca – jednak wielu znanych mi programistów do poczucia osobistego spełnienia potrzebuje również samorealizacji w nieco bardziej humanistycznych dyscyplinach.** Być może dlatego nierzadko słyszę kolegów po fachu sarkających na bezrobotnych absolwentów kierunków miękkich. „Po co szedł na takie studia?”, „Wiadomo, że praca jest gdzie indziej”, „Niech się przekwalifikuje, przecież my też co chwilę od podstaw uczymy się czegoś nowego”.

Opinie te bywają powtarzane zdecydowanie i bez zastanowienia. A jednak nie tak dawno byłam świadkiem sytuacji, w której absolwent teatrologii (nie wymyślam tego!) zapytał zaprzyjaźnionego programistę, od czego zacząć przekwalifikowanie się… a programista zbladł. Co innego teoretyzować o zmianie w cudzym życiu, a co kogoś przekonać i przyjąć choć część odpowiedzialności za jego rozwój, a ostatecznie także sukces bądź porażkę.

W tym wpisie postaram się odpowiedzieć na pytanie, czy da się zostać programistą na późniejszym etapie życia i podzielę się wskazówkami na temat tego, jak zacząć.

Warunki konieczne

Skoro popyt jest tak duży, czy programistą może zostać każdy? Skrócona odpowiedź brzmi: absolutnie nie!!! Jednak z powodzeniem może się to udać całkiem sporej grupie osób, które wcześniej nie rozważały tej profesji.

Następujące cechy i umiejętności uważam za konieczne do rozpoczęcia nauki w tym kierunku:

1. Analityczne, uporządkowane myślenie

Programowanie to w dużej mierze praca kreatywna, ale ten rodzaj kreatywności ma niewiele wspólnego z twórczym chaosem. Musisz być w stanie myśleć algorytmicznie: wyraźnie definiować kroki prowadzące do uzyskania wyznaczonego celu. Musisz przykładać uwagę do szczegółów. Musisz przewidywać, co może pójść nie tak, jak niestandardowo może się zachować klient, jakie problemy mogą wystąpić. W dużej mierze sprowadza się to do tego, że programista powinien mieć stosunkowo wysoki iloraz „matematycznej” („tradycyjnej”) inteligencji.

2. Cierpliwość

Materiału do przyswojenia jest dużo. Tworzenie prawdziwych, złożonych aplikacji trwa i wymaga współpracy wielu osób. Co prawda istnieją trendy wytwarzania oprogramowania od strony interfejsu użytkownika, gdzie od razu widać włożony wysiłek, jednak musisz być gotowy na żmudną pracę, która długo nie przynosi widocznych efektów (oprócz przechodzących testów – bo oczywiście będziesz pisać testy).

3. Radość z pisania kodu

Większość znanych mi programistów bardzo wcześnie zaczęła zdradzać smykałkę do kodowania. Sama spędziłam długie godziny nad otrzymanym na komunię Commodore 64, programując quizy i przelatujące przez ekran rakiety ASCII Art (następnie mój rozwój zatrzymał się na lata na tym etapie). Jeśli jednak nie zostałeś odpowiednio zachęcony za młodu, postaraj się możliwie szybko znaleźć odpowiedź na pytanie: „czy sprawia mi to przyjemność?”. Po pierwszym kursie programowania lub po pierwszej przeczytanej książce – spróbuj rozwiązać prosty problem programistyczny (np. na sprawdzarce takiej jak ta: http://acm.timus.ru/). Jak było? Udało Ci się? Co czułeś, kiedy program działał coraz lepiej? Ogromną satysfakcję, a może ulgę, że wreszcie koniec? To bardzo ważne.

4. Znajomość angielskiego

W dzisiejszych czasach nie da się programować bez dobrej (biernej) znajomości (pisanego) angielskiego. Większość kursów (o których zaraz) jest po angielsku. Dokumentacja, którą będziesz czytać jest prawie zawsze po angielsku. Gotowe rozwiązania popularnych problemów są opisane po angielsku, np. na http://stackoverflow.com/. Być może uda Ci się dorwać podręcznik po polsku (warto), ale większość ratujących tyłek, aktualnych treści istnieje jedynie w języku angielskim.

Przydadzą się

Po pierwsze, na pewno przyda Ci się mentor. Życzliwa osoba już pracująca w zawodzie, o którym myślisz, skłonna poświęcić Ci trochę czasu i wskazać kierunki rozwoju. Znasz kogoś takiego? Doskonale. Nie znasz? Jeśli mieszkasz w większym mieście, przejdź się kilka razy na spotkania lokalnych User Groups***. W przeciwnym razie możesz spróbować uzyskać wsparcie w grupach i na forach w Internecie.

Po drugie – czy znasz języki obce? Jeśli tak, to tym lepiej dla Ciebie. Im więcej tym lepiej. Język programowania to też język, który ma swoją składnię i semantykę. Jeśli zdołałeś opanować język obcy (analitycznie, czyli potrafisz narysować drzewo składniowe zdania), w Twoim mózgu powinny już być wydeptane najważniejsze ścieżki umożliwiające korzystanie z języka programowania.

Jak się nauczyć?

O ile znasz angielski, a jak tłumaczyłam powyżej, właściwie musisz go znać, to masz do dyspozycji ogrom wiedzy przedstawionej w portalach MOOC (Massive Open Online Course, czyli masowe otwarte kursy online), takich jak Edx czy Coursera. W większości przypadków kursy składają się z wykładów, ćwiczeń praktycznych (w postaci testów) oraz zadań programistycznych, sprawdzanych albo automatycznie, albo przez innych uczestników kursu. To doskonały punkt startowy.

Oprócz tego są podręczniki, dokumentacje języków programowania, a także warsztaty**** (często darmowe) organizowane przez różne społeczności, np. Geek Girls Carrots.*****

Jaki język?

Uparcie utrzymuję, że najbardziej przyszłościowy (liczba ofert pracy, przeznaczenie) język, którego można się w miarę szybko nauczyć od podstaw, to Python. Ale możesz rozejrzeć się, czego potrzebują i uczą w Twojej okolicy.

Rozmowa o pracę

Są firmy, które nigdy nie zatrudnią początkującego programisty. Są szefowie gotowi pracować tylko z pasjonatami, od podstawówki piszącymi wirusy. W niektórych przypadkach takie wymagania mają sens, w innych niekoniecznie. Uwierz jednak, że istnieje masa firm gotowych podjąć ryzyko przyjęcia kogoś niezbyt doświadczonego i przeszkolenia go.

Nie będę tu powtarzać tradycyjnych porad na temat pisania CV i przygotowania do rozmowy rekrutacyjnej. Najważniejsze: nie ściemniaj! Jeśli jesteś w stanie psychicznie znieść porażkę, po nieudanej rekrutacji dopytaj, czego Ci zabrakło i spróbuj rozwinąć się trochę w tym kierunku.

Warto pamiętać, że informatycy w firmach wytwarzających oprogramowanie to nie tylko programiści. Do branży możesz wejść trochę „od tyłu”, na przykład jako tester. Mimo wszystko zachęcam do rozpoczęcia procesu zmian od przyswojenia jednego przynajmniej języka programowania.

Licz się z tym, że…

1. Będziesz się ciągle uczyć

Taki zawód. Jeśli chcesz coś w nim osiągnąć i mieć pewność zatrudnienia, będziesz co jakiś czas przerabiać nową książkę, nowy blog, nowe kursy. Nawet jeśli w pracy nie będziesz siedzieć po godzinach (rozsądni szefowie wiedzą, że liczba błędów wprowadzonych podczas nadgodzin często niweluje jakąkolwiek płynącą z nich wartość dodaną), ale czasem po pracy,  w prywatnym czasie, będziesz musiał przysiąść nad nową technologią.

2. Twoja głowa będzie stale w pracy

To również wynika ze specyfiki zawodu. Nierozwiązane problemy będą się za Tobą wlekły. Spędzisz wiele wieczorów, zastanawiając się, dlaczego to u licha nie działa. Dobra strona medalu: niejednokrotnie przekonasz się, że Twój mózg pracował, kiedy spałeś, a że niemożliwy do rozwiązania problem następnego dnia okaże się trywialny.

3. Koledzy z pracy nie raz zdziwią się, że czegoś nie wiesz

Nauczyłeś się pierwszego języka programowania. Na trzeciej z rzędu rozmowie rekrutacyjnej napisałeś test na 80%, pokazałeś, że jesteś odpowiedzialnym i zdeterminowanym człowiekiem – i dostałeś pracę. Pierwszego dnia przychodzisz do biura, dostajesz swoje pierwsze zadanie i nagle okazuje się, że kompletnie nie wiesz, jak zacząć. Znasz język, ale co oni mówią o LDAP, kontroli wersji, bazie danych…? W tym momencie wróć do punktu 1. Będziesz się ciągle uczyć. W obliczu nieznanych problemów spróbuj najpierw skorzystać z Google. Jeśli nie dajesz rady – poproś o pomoc. Zadbaj o to, żeby nigdy nie pytać dwa razy o to samo.

Studia informatyczne trwają pięć lat i nie polegają jedynie na nauce programowania. Ich absolwenci często sami nie zdają sobie sprawy, że niektóre zagadnienia nie wchodzą w zakres wiedzy ogólnej i mogą być komuś (bądź co bądź) w branży kompletnie nieznane. Przełknij dumę, uzupełnij luki, znajdź sobie miejsce w organizacji. Będzie dobrze.

4. Na początku możesz zarabiać mniej niż dotychczas

Nie tylko możesz zarabiać mniej niż dotychczas, ale na dodatek może to być mniej, niż zarabia o połowę od Ciebie młodszy dzieciak w sąsiednim kubiku. Nie przejmuj się, to tymczasowe. Nie ma lepszej metody nauki programowania niż w prawdziwej pracy – potraktuj to jako (opłacaną przecież!) inwestycję w siebie.

Uwaga: z awansami i podwyżkami w firmach informatycznych różnie bywa. Czasami jedyną metodą na zauważalną podwyżkę jest przejście do innej firmy.

Czy płeć ma znaczenie?

Serio, nie wiem.

Kobiecie, która chce się przekwalifikować, tak samo jak początkującej praktykantce, paradoksalnie może pomóc stereotyp „damy w opałach”. W zmaskulinizowanym biurze możesz pozwolić otoczyć się mentorską, dżentelmeńską i trochę protekcjonalną opieką, o ile całe Twoje jestestwo nie protestuje przeciwko takiemu stawaniu sprawy. Ostrzegam jednak – takie łatki trudno potem zgubić.

Czy znam ludzi, którym się udało?

Tak!!!

Słowa klucze: odwaga, wytrwałość, inteligencja, ciekawość.

A jeśli się nie uda?

Wysiłek włożony w przyswojenie tych kwestii i tak nie pójdzie na marne. Podstawy programowania będą coraz bardziej potrzebne do wykonywania innych zawodów. Wyraźnie to widać np. w dziedzinie biotechnologii.

Przypisy


* Nie piję tu przesadnie do stereotypu niedomytego informatyka. Uważam się za informatyka domytego, a jednak mam na koncie kuriozalne doświadczenie ze sklepu Zara, gdzie na podstawie nieformalnego i powyciąganego ubioru zostałam potraktowana jak złodziejka.

** Zdaniem wielu, stanie w takim rozkroku jest przepisem na porażkę. Polecam wystąpienie Larry’ego Smitha na TED, zatytułowane „Dlaczego nie zrobisz wielkiej kariery”. Jako świeżo upieczona matka karmiąca mam ostatnio dużo czasu na oglądanie takich wykładów, więc od czasu do czas będę się dzielić perełkami 🙂

*** Od razu ostrzegam, że poziom i kultura lokalnych społeczności programistycznych bywają różne. Niektóre są bardzo przyjazne dla początkujących, inne pielęgnują profesjonalny poziom i zadzierają nosa 😉

**** Odmienne od mojego zdanie na temat szkół programowania ma autor tego artykułu w portalu TechCrunch: Coding Academies Are Nonsense. Wrzucam jako ciekawostkę.

***** Powiem szczerze, że cykliczne spotkania Geek Girls Carrots nieco mnie rozczarowują, ponieważ są dużo bardziej startupowe niż programistyczne. Niezależnie od tego, organizacja tworzy i promuje sporo wartościowych kursów programowania dla początkujących.

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *