growth hacks, Juniors

6 kroków do przebranżowienia się na programistę. Plan nauki IT

6 kroków - przebranżowienie na programistę - nauka IT - plan!

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 zaczynania 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.

Karol Trybulec. Software Engineer w Andea. W 2012 roku ukończył technikum informatyczne. W 2018 roku uzyskał tytuł magistra inżyniera na Wydziale Mechanicznym Politechniki Krakowskiej, na kierunku informatyka ze specjalizacją inżynieria oprogramowania. Interesuje się informatyką w pojęciu ogólnym, w szczególności programowaniem (C/C++, C#/.NET oraz elementy Assemblera), tworzeniem aplikacji internetowych (XHTML/HTML, CSS/SASS, SQL, JavaScript, JQuery, Angular2+, ASP.NET MVC, .Net CORE, Node.JS) oraz zabezpieczeniami komputerowymi.


Dlaczego warto się przebranżowić na programistę?

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 wciąż jest bardzo mało. Szczególnie na stanowiskach typowo programistycznych.

Benefity

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 indziej niż w IT. 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 w IT

Zawód programisty jest w obecnych czasach zawodem bardzo dobrze płatnym. Według agencji Sedlak & Sedlak mediana zarobków młodszego programisty to 5500 zł brutto, a eksperta nawet 14 000zł brutto (statystyki z 2018 r.). 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 na programistę

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 programowania – który obszar programowania jest dla mnie?

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. Pokró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 plan nauki – ile czasu poświęcisz na naukę programowania?

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 nieważ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 – jak się uczyć?

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ły dostępne w internecie.

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.

Dalsze kroki na drugiej stronie artykułu.

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 – nieważ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 swój 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 – tak. Żyjemy w czasach idealnych do tego, 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 czy kilkadziesiąt lat trend na rynku IT się odwróci, a wtedy wejście do branży nie będzie już ani tak łatwe, ani tak opłacalne.


Artykuł został pierwotnie opublikowany na p-programowanie.pl.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://justjoin.it/blog/6-krokow-do-przebranzowienia-sie-na-programiste-plan-nauki" order_type="social" width="100%" count_of_comments="8" ]