Jak przebranżowić się na programistę – 6 kroków

Ostatania modyfikacja: 24 czerwca 2019, kategoria: Studia i praca

Jeżeli wykonywanie obecnego zawodu nie sprawia Ci satysfakcji, lub wydaje Ci się, że zarabiasz zbyt mało, ten artykuł może Cię zainteresować. Postaram się w najlepszy możliwy sposób opisać jak skutecznie możesz przebranżowić się na programistę. Nie wymaga to żadnego nakładu finansowego ani podejmowania studiów informatycznych. W większości przypadków wystarczy systematyczna praca. Przebranżowienie na programistę jest w zasięgu ręki i z odpowiednim podejściem nie powinno zająć Ci dłużej niż rok.

Dlaczego warto się przebranżowić

Jeżeli ktoś lubi pracę biurową, praca programisty wydaje się być dla niego idealna. Programowanie potrafi być pracą bezstresową, dającą jednocześnie ogromną satysfakcję. Jest to zawód bardzo dobrze naddający się dla kobiet, choć paradoksalnie, kobiet w IT jest bardzo mało. Szczególnie na stanowiskach typowo programistycznych.

Szereg benefitów

Większość firm działających w obszarze IT to przeważnie naprawdę dochodowe biznesy. Biura, sprzęt i całe środowisko pracy są dzięki temu doinwestowane i na wysokim poziomie. Pracownicy firm IT praktycznie zawsze posiadają szereg benefitów, których próżno szukać gdzie indziej. Są to m.in. darmowe owoce, kawa, herbata i wszystko co znajduje się w kuchni, pokoje do relaksu, prywatna opieka zdrowotna, wysokie permie, darmowe szkolenia, sprzęt wysokiej jakości, ergonomiczne krzesła, klimatyzowane biura, możliwość podróży, i wiele innych. Czasem porównuję takie miejsca do szkół (praca nauczyciela) lub przychodni/szpitali (praca lekarza). Tam często ze ścian odpadają płytki, a człowiek siedzi na starym drewnianym taborecie. Wtedy stwierdzam, że ciężko o tak dobre warunki pracy gdziekolwiek.

Dodatkowo, w większości firm obowiązują elastyczne godziny pracy, więc tak naprawdę można bardzo wygodnie godzić życie zawodowe z różnymi obowiązkami. Po zdobyciu odpowiedniego doświadczenia można także pracować zdalnie z domu, co jest niesamowitym dodatkowym atutem.

Wysokie zarobki

Zawód programisty jest w obecnych czasach zawodem bardzo dobrze płatnym. Według agencji Sedlak & Sedlak mediana zarobków młodszego programisty to 5500zł brutto a eksperta nawet 14000zł brutto (statystyki z 2018r.). Wydaje mi się, że w dużych miastach i przy sprzyjających okolicznościach (odpowiednie technologie) to wynagrodzenie potrafi być znacznie większe. Można z całą pewnością przyznać, że takich zarobków w naszym kraju nie da się osiągnąć w żadnym innym zawodzie przy jednoczesnym tak małym progu wejścia do branży.

Proces przebranżowienia

Ostatnio pomagałem przebranżowić się mojej dziewczynie. Tak jak wielu innych ludzi w Polsce, stwierdziła, że pomimo posiadania technicznego wykształcenia wyższego nie jest w stanie znaleźć pracy w naszym kraju. Korzystając z własnego doświadczenia i wniosków z rozmów z innymi programistami, starałem się znaleźć optymalną ścieżkę przebranżowienia. Poniżej opiszę ją w 6 prostych krokach.

Krok 1. – wybierz obszar

Programowanie jest zbyt duże i rozległe aby uczyć się wszystkiego. Musisz zdecydować się na pewną wąską dziedzinę, w której zaczniesz się szkolić. Przede wszystkim powinien być to wybór pomiędzy front-endem a back-endem. Czym różni się jedno od drugiego opisałem w innym wpisie o nazwie jak nauczyć się programowania. Po krótce dodam tylko, że łatwiej i szybciej dasz radę nauczyć się front-endu. Aby opanować front-end będziesz potrzebował mniej wiedzy teoretycznej z IT.

Wybór powinien być podyktowany także Twoimi predyspozycjami. Decydując się na front-end fajnie mieć jakieś poczucie estetyki. Z kolei programista back-endu powinien mieć predyspozycje do analitycznego myślenia.

Powyższej przedstawiłem przykładowe zestawy technologii jakie musisz umieć celując w dany zawód. Są to tylko moje przykłady, istnieje o wiele więcej stanowisk. Wszystkie przedstawione przeze mnie zestawy (ang. technology stacks) dotyczą wytwarzania aplikacji internetowych. Wydaje mi się, że w obecnych czasach lepiej celować właśnie w aplikacje internetowe (ang. web applications) niż aplikacje okienkowe (ang. desktop applications). Trend jest obecnie taki, że firmy wszystko przenoszą do chmur i internetu.

Zdecydowanie odradzam natomiast język C++, jest to język niskiego poziomu, obecnie dość niszowy, do nietypowych zastosowań. Nie naddaje się dla kogoś kto chce się przebranżowić, jest raczej dla specjalistów w branży. Nie polecałbym też PHP, Visual Basica, Pascala i języków funkcyjnych (chyba, że wiesz w co celujesz i z jakiegoś powodu są Ci potrzebne).

Krok 2. – ustal ile czasu poświęcisz na naukę

Moim skromnym zdaniem, jesteś w stanie przebranżowić się w okresie od 3-15 miesięcy. Celujesz w wąską dziedzinę, w jedną konkretną technologię lub język. Nauka programowania jest trudna, jednak to nie są chińskie znaki. Im więcej będziesz ćwiczyć tym bardziej wszystko zacznie się sklejać w jedną logiczną całość.

Jeżeli myślisz o przebranżowieniu się na programistę na poważnie, obierz strategię nauki:

  • nauka 8h dziennie oprócz weekendów – idealne rozwiązanie jeżeli jeszcze nie pracujesz, albo możesz sobie pozwolić nie pracować. Daj z siebie wszystko podczas nauki programowania, siedź nad tym cały dzień, tak jakbyś wykonywał jakieś obowiązki w pracy. Po 5h nauki nie chcę Ci się uczyć? Czy tak samo powiedziałbyś w pracy?
  • nauka po pracy i w weekendy – bądź świadomy, że będzie to naprawdę ciężkie a nauka zajmie Ci o wiele dłużej. Sam łączyłem pracę na pełny etat (programowanie) ze studiami na uczelni w trybie dziennym (Politechnika Krakowska). Trwało to około 2-3 lata. Chwilami byłem zmuszony przeskakiwać na 4/5 etatu a i tak nie było mnie w mieszkaniu całymi dnami. Taki tryb życia nie służy nauce.

Jeżeli masz taką możliwość, ucz się programowania całymi dnami – gwarantuję Ci sukces. Jeżeli musisz pracować wiedz, że zajmie Ci to 2-3 razy dłużej – o ile po drodze się nie zniechęcisz. Nawet jeżeli obiecasz sobie systematyczną naukę po pracy, to nie oszukasz zmęczenia ani nie wydłużysz doby.

Powyższa infografika jest trywialna, ale dobrze obrazuje jak ciężko znaleźć czas na naukę łącząc to z innymi obowiązkami. Wypełnianie czasu wolnego nauką (np. w weekendy) oczywiście da Ci dodatkowy czas spędzony na przyswajaniu wiedzy, ale jednocześnie będzie działać bardzo zniechęcająco na dłuższą metę.

Łatwo wyciągnąć wnioski. Szacujmy, że nauka programowania w pierwszym przypadku zajmie Ci 6 miesięcy. Łącząc naukę z pracą zajmie Ci to 10 miesięcy, a jeżeli odliczysz weekendy to prawie dwa lata. Jakiejkolwiek drogi byś nie wybrał – postaw na systematyczność. Ustal sobie grafik i za wszelką cenę staraj się go przestrzegać. Systematyczność jest bardzo ważna w nauce programowania, a odrywając się od tej tematyki na 2-3 dni prawdopodobnie zapomnisz czego uczyłeś się kilka dni temu.

Jeżeli sądzisz, że moje szacowanie (6 miesięcy) nie jest realne, weź pod uwagę, że to nie ważne. Jakąkolwiek liczbę wymyślisz, chodzi raczej o liniową zależność wydłużającego się okresu nauki, a nie konkretną liczbę z dokładnością +/- kilku miesięcy.

Krok 3. – źródło wiedzy

Jeżeli wybrałeś konkretną technologię oraz przyjąłeś jakąś strategię nauki, zastanów się skąd będziesz czerpał wiedzę. Decydując się na naukę programowania musisz umieć uczyć się sam. Nie ma innej możliwości. Zdecydowanie się na zawód programisty to zdecydowanie się na ciągłą i systematyczną naukę i poszerzanie swojej wiedzy.

Gdybym miał zdefiniować programowanie komuś kto nie ma o nim zielonego pojęcia, powiedziałbym, że jest to skuteczność z jaką potrafisz rozwiązywać problemy (ang. problem solving) z użyciem internetu i ogólnodostępnych narzędzi (języków programowania). Nikt nie broni Ci używać internetu i szukać gotowych rozwiązań (to, że czegoś nie umiesz nie jest problemem). Problem zaczyna się wtedy kiedy czegoś nie umiesz, a dodatkowo nie masz zielonego pojęcia jak znaleźć rozwiązanie.

Moim skromnym zdaniem szkoły programowania to strata czasu. Niezastąpionymi źródłami wiedzy są natomiast:

  • książki o danej technologii/języku
  • filmy w postaci kursów
  • artykułu ogólnodostępne w internecie (jak mój blog)

Dlaczego nie szkoły programowania? Przede wszystkim są bardzo drogie. Po drugie, kurs wcześniej czy później się kończy a Ty znowu wracasz do punktu wyjścia – musisz nauczyć się uczyć samemu. Wykładowca nie poświęci Ci całego swojego czasu, a na dodatek jak w każdej szkole mogą występować duże nierówności w grupie.

Pieniądze, które przeznaczyłbyś na szkołę programowania, proponuję Ci wydać na książki lub kursy wideo. Uwierz mi na słowo, są takie działy w programowaniu, które rozumie się po pierwszym przeczytaniu. Są także takie, do których osobiście wracam co kilka miesięcy i przed każdą rozmową rekrutacyjną – a później znowu zapominam jak „to” działało. Taka jest zaleta książki oraz kursu wideo, możesz wiele razy się do niej wrócić, możesz czytać tyle razy, aż zrozumiesz.

Krok 4. – naucz się systemu kontroli wersji (GIT)

System kontroli wersji to absolutna podstawa dla każdego, kto chce rozpocząć przygodę z programowaniem. Co to jest? Typowy projekt programistyczny trwa od kilku tygodni do kilkunastu miesięcy. Przeważnie nad jednym projektem pracuje kilku programistów, choć zdarzają się też duże systemy nad którymi pracują dziesiątki programistów przez wiele lat.

Czy wyobrażasz sobie jak ciężko integrować ze sobą pracę wielu ludzi? Programiści często (nieświadomie) nawzajem usuwają lub „psują” własne, istniejące już, fragmenty kodu. Często dopisując nową funkcjonalność przypadkowo dotykają funkcjonalności, którą zrobił wcześniej ktoś inny. Takie integracje dużych ilości kodu (w postaci zwykłego tekstu) trzeba integrować ze sobą jakimś narzędziem. Właśnie do tego służą systemy kontroli wersji.

Oprócz tego, systemy kontroli wersji zapewniają wersjonowanie oraz wspierają przenoszenie kodu pomiędzy komputerami. Dodatkowo stanowią zabezpieczenie istniejącego kodu przed jego utratą (np. z powodu awarii dysku twardego). Generalnie rzecz biorąc, jest to narzędzie niezbędne w codziennej pracy – nie ważne czy będziesz młodszym czy starszym programistą.

Najpopularniejszym programem do kontroli wersji jest GIT. Można go obsługiwać zarówno z linii poleceń (polecam) jak i graficznymi programami, które możesz zainstalować w systemie Windows. Warto także założyć konto w systemie github.com, gdzie za darmo można tworzyć własne projekty i przechowywać kod. Oprócz tego możesz także ćwiczyć działanie GITa przed rozpoczęciem pracy programisty.

Jeżeli chcesz przebranżowić się na programistę powinieneś stworzyć własne repozytorium kodu w systemie github.com i wrzucić tam kilka swoich projektów. Następnie opis tych projektów powinieneś dołączyć do swojego CV wraz z linkiem do repozytorium. Szukając pracy jako junior programista ktoś na 90% sprawdzi Twoje programy a to pozwoli mu poznać Twoje umiejętności.

Krok 5. – zbuduj portfolio projektów

Ten punkt jest trochę powiązany z poprzednim, ponieważ aby zbudować portfolio projektów musisz umieć jakiś system kontroli wersji. Nie zastanawiaj się nad żadnym innym oprócz GITa. Jest to sprawa niezwykle ważna, jeżeli nie posiadasz doświadczenia ani wykształcenia informatycznego. W takim wypadku portfolio własnych projektów to absolutny must have, który pozwoli Ci wejść do branży IT.

Nie wyobrażam sobie, na jakiej zasadzie miałoby się odbywać przyjęcie kandydata, który nie ukończył studiów IT i nie ma doświadczenia, do pracy na stanowisku programisty. Własne proste projekty to idealna informacja dla pracodawcy, o tym że:

  • umiesz programować w jakiejś technologii
  • umiesz system kontroli wersji (w pracy będziesz z niego korzystał już od 2 dnia – bo pierwszy dzień to podłączenie komputera)
  • swoje przebranżowienie i zmianę zawodu traktujesz poważnie i podchodzisz do niego profesjonalnie

Sam przed poszukiwaniem pierwszej pracy oczywiście także posiadałem portfolio własnych projektów:

Jednak oprócz projektów bardzo pomógł mi także ten blog, studia IT oraz znajomość wielu technologii (interesowałem się programowaniem od dziecka). Gdy byłem mały, nikt nie doradził mi aby projekty umieścić na githubie i szkoda, że tego nie zrobiłem. Co ciekawe, pytania o GITa i jego podstawową obsługę zostały mi zadane na mojej pierwszej rozmowie o pracę na 2-3 roku studiów.

Krok 6. – przygotowanie teoretyczne do rozmowy

Jeżeli umiesz jakąś technologię w podstawowym zakresie oraz posiadasz kilka małych projektów, to czas na zainteresowanie się teorią. Niestety, rozmowa rekrutacyjna to w większości przypadków przepytanie kandydata z teorii. W 80% przypadków zadawane pytania będą dotyczyć danego języka/technologii, którego programistą jesteś.

Jak przygotować się do tego etapu? Twoje powodzenie zależy oczywiście od stopnia w jakim przyswoiłeś sobie dany język programowania. Pytań na rozmowy rekrutacyjne wyszukuj także w internecie pod hasłami np.: „Java interview questions„. Znajdziesz w ten sposób naprawdę bardzo dużo użytecznych informacji. Te pytania często umieszczane są razem z odpowiedziami. Będzie to dla Ciebie źródło dodatkowej wiedzy i szansa na pewne uporządkowanie niejasności.

Jak rozłożyć w czasie wszystkie powyższe kroki?

Idealnie byłoby gdybyś posiadał kogoś znajomego, kto umie programować i mógłby odpowiadać na wszelkie Twoje niejasności. Z takiej opcji skorzystała moja dziewczyna i wydaje mi się, że jej nauka programowania przyśpieszyła w kosmicznym tempie, gdy zacząłem jej tłumaczyć pewne mechanizmy np. za pomocą historyjek z życia codziennego.

Przyznajmy wprost, nie jestem nauczycielem i nie znam odpowiedniej metodyki nauki programowania. Tylko, czy biorąc pod uwagę szybkość rozwoju tej branży, taka w ogóle istnieje? Wraz z moją dziewczyną przyjęliśmy następujący plan nauki:

Aż do chwili obecnej sprawdza się on idealnie. Mogę powiedzieć, że obecnie znajdujemy się wspólnie już w końcowym etapie. Jako doświadczony programista wydaje mi się, przebranżowienie przebiegło pomyślnie w około 4 miesiące. Czy rzeczywiście tak się stało zweryfikują prawdopodobnie zbliżające się rozmowy rekrutacyjne.

Czy przebranżowienie na programistę jest łatwe?

Moim daniem, odpowiedź brzmi „tak”. Żyjemy w czasach idealnych, aby zostawić swój dotychczasowy zawód i zabrać się za programowanie. Wynika to z małego progu wejścia do tego zawodu, który jest z kolei spowodowany ogromnym deficytem pracowników. Jeżeli chcesz zostać programistą najlepiej zacznij myśleć o tym już teraz. Być może za kilka-kilkadziesiąt lat trend na rynku IT się odwróci, a wtedy dostanie się do branży nie będzie już ani tak łatwe, ani tak opłacalne.

Użytkownik Dawid napisał:

19 kwietnia 2019


Bardzo interesujący artykuł. Miło czytać że komuś się udało przebranżowić. Wiem jednak że zmiana zawodu na programistę nie jest łatwa dla kogoś kto nie ma wsparcia w postaci znajomego (znajomej) który pomoże, wyjaśni. Tak samo ciężko się przebranżowić osobom nieco starszym (30+) mającym rodziny. I chcąc nie chcąc taka osoba musi pracować na etacie aby zapewnić utrzymanie dla siebie i rodziny. Dlatego może się dokształcać „po godzinach”, co znacznie wydłuża czas nauki, aż w pewnym momencie zniechęcenie dopada. Dlatego gratuluje Tobie, Twojej dziewczynie i wszystkim którym udało się przebranżowić na programistę. Ja od kilkunastu miesięcy wałczę z nauką i z samym sobą ;)

Użytkownik Pawel napisał:

19 kwietnia 2019


Jak rozdzielasz kwestie teorii od nauki technologii ?

https://static.p-programowanie.pl/uploads/2019/04/czas-nauka-programowania.png

Użytkownik Karol napisał:

19 kwietnia 2019


@Paweł
Oczywiście nauka języka/technologii to też po części nauka teorii, jednak bardzo dużo jest w niej praktyki. Dlatego po okresie praktycznych ćwiczeń z danym językiem trzeba znaleźć czas na różne teoretyczne kruczki, o jakie lubią pytać na rozmowach. Przykładowo, ktoś może umieć definiować klasy zwykłe i statyczne i zna między nimi różnicę. Jednak gdy usłyszy pytanie „wymień 4 różnicę pomiędzy statycznym a niestatycznym konstruktorem?” wtedy zupełnie nie będzie wiedział co odpowiedzieć.

Użytkownik 3G napisał:

21 kwietnia 2019


Przyznam szczerze, że jest to szalenie pomocny artykuł. Znając podstawy ciężko jest mi zrobić kolejny krok, ponieważ strasznie gubię się w tym co i jak powinienem zrobić dalej. Nazwy języków kompletnie nic mi nie mówiły. Tutaj dostałem instrukcję krok po kroku z wyjaśnieniem co powinienem umieć. Super! Do tego motywacja, że wcale nie jest to trudne. Przykładanie się do nauki i co za tym idzie zrobienie godzin. OK, jestem gotów :)

Użytkownik Krzysiek napisał:

25 kwietnia 2019


Cześć, bardzo fajny artykuł, drogowskaz jak i dokąd zmierzać, szkoda że.na to nie trafiłem na początku swojej drogi. Półtorej roku temu poszedłem na bootcamp z Javy od podstaw, nauczyłem się bardzo dużo, uczyłem się po pracy, popołudniami i wieczorami, córeczką miała w tedy niecały rok. Teraz mając 28 lat, dostałem swoją pierwszą pracę, może nie konkretnie jako Java developer, ale jako programista mikro aplikacji (RPA developer) teamy bardziej mi się spodobał i potrafię się w tym lepiej odnaleźć. Kilka osób z tego kursu również podjęło pracę, nie którzy jako testerzy. Wytrwałość, chęć i zaangażowanie jest kluczem do sukcesu.

Użytkownik Rav napisał:

13 maja 2019


Ciekawy artykuł. Czasami sam zastanawiam się, czy nie zmienić branży i to co napisałeś rozjaśnia i porządkuje temat. To jest w ogóle zaletą twojego bloga, że jest konkretny i przejrzysty, tak trzymaj.
A jak w końcu zakończyła się historia twojej dziewczyny? Udało jej się na rozmowach?

Użytkownik Karol napisał:

13 maja 2019


Cześć Rav,
jeżeli chodzi o przebranżowienie, ciągle jesteśmy w trakcie. W odpowiednim czasie zrobię edycję artykułu, i opiszę w konkretach jak skończyła się cała ta historia :).

Użytkownik ERMLAB napisał:

20 maja 2019


To, że to jest dobry pomysł to nie trzeba chyba wielu do tego przekonywać. Programiści mają bardzo dużo ofert pracy, z zarobkami też nie narzekaja. W większych korporacjach mogą liczyć na sporo przywilejów. Jednak samo przebranżowienie może wiele osób przerosnąć po prostu. Jeżeli ktoś nie ma ścisłego umysłu, nie interesuje się tą tematyką to na pewno ciężko będzie zostać programistą. W szczególności dobrym programistą. Niewątpliwie jednak warto spróbować, może akurat znajdziecie nowy pomysł na siebie

Użytkownik adam napisał:

24 maja 2019


Hej, a dlaczego nie PHP…? ;(

Użytkownik Karol napisał:

26 maja 2019


@Adam, PHP naddaje się raczej do drobnych zastosowań. Ten język jest dość stary, brakuje mu wielu mechanizmów występujących w innych językach programowania. Moim zdaniem zdecydowanie lepiej poświęcić czas na naukę nowszych technologii.

Użytkownik adam napisał:

26 maja 2019


A na co najłatwiej przeskoczyć z PHP?

Użytkownik Pawel napisał:

07 czerwca 2019


Hej, jestem jednym z delikwentow ktory sie przebranzowil. Ukonczylem budownictwo i po przepracowaniu dwoch lat w zawodzie, setkach nadgodzin, stresu, uzerania sie z ludzmi stwierdzilem ze dosc. Programowalem hobbystycznie w gimanzjum i LO jednak nie zdecydowalem sie na studia informatyczne(sam nie wiem czemu?). Chyba nie chcialem pracowac 8 h przy komputerze ;)…

Niemniej zdecydowalem sie w koncu na przebranzowienie – nauka C#, ASP.NET MVC, SQL. Polecam platformy typu lynda.com lub pluralsight.com(ja uzywalem akurat tej). Jest tam mnostwo kursow. Nauka trwala glownie wieczorami i w weekendy przez okolo roku. Ostatnim etapem byl demo projekt – sklep internetowy w ASP.NET MVC, ktory stanowil swego rodzaju portfolio bedac deployniety na Azure. Nie osiagnalbym tego bez pomocy kolegi ze studiow, ktory rowniez nota bene sie przebranzowil.

Obecnie pracuje w Londynie na poziomie graduate. Samo szukanie pracy zajelo mi okolo miesiaca. Mysle ze w Polsce jest znacznie latwiej znalezc prace niz w UK w obecnej sytuacji na rynku.

Od siebie powiem ze warto pierw sprawdzic czy jest w ogole sens kontynuowania nauki poprzez wykonanie paru prostych zadan typu petle if/else, while loop etc. po zrobieniu pierwszego kursu. Prosty fizz-buzz pokaze czy umiemy myslec w sposob taki jak wg. mnie programista powinien myslec(przynajmniej back-endowy).

Sam kuleje jeszcze w wielu kwestiach – szczegolnie teoretycznych, ale kazde zadanie jakie dostaje w pracy(nawet jest jesli jest to apka konsolowa) sprawia mi satysfakcje bo sa to nowe rzeczy, ktorych nigdy nie robilem.

Komentarz wyróżniony

Użytkownik Dominik napisał:

10 czerwca 2019


Świetny artykuł, zgadzam się w 100% z tym, że systematyczność to podstawa. Sam jestem samoukiem, po 6 miesiącach nauki (JS, ReactJS) celuję w Juniora. Dodam od siebie, że w Krakowie ciężko jest się przebić bo większość ofert to Regular, Senior. Ofert dla Juniorów nie ma za wiele, a staże są tylko dla studentów

Zachęcam Cię do zostawienia komentarza!

Ilość znaków: 0