Chciałem Wam na szybko opisać dlaczego wejście w IT bez formalnego przygotowania jest trudne albo nawet niemożliwe. To nie jest niestety tak, że paromiesięczny kurs albo czytanie tutoriali pozwoli wejśc na drogę kariery od juniora do seniora i każdemu się uda, według mnie uda się 1 może 5%, reszta zmarnuje tylko czas.
Ucząc się w ten sposób zapewne można dojść do poziomu w którym da się samodzielnie stworzyć prostą aplikację webową z logowaniem, jakimiś prostymi funkcjonalnościami, jakoś tam wyglądającą, niestety to nie jest sedno pracy w IT, o czym ludzie odpowiedzialni za ten hype nigdy Wam nie powiedzą.
W rzeczywistej pracy pisanie nowych prostych rzeczy od zera (czyli to, czego uczy się na bootcampach) to jakieś 10, może 20% zadań. Tego do pewnego stopnia można się nauczyć na kursie.
Jednak 30-40% to nie pisanie od zera, tylko dorabianie nowych rzeczy do istniejących częsci systemów, napisanych przez kogoś innego. Bez żadnej dokumentacji, prowadzenia za rękę. Na przykład należy dodać 5 nowych pól w jakimś miejscu (banalne), rozszerzyć proces przetwarzania jakiegoś wniosku o 5 kolejnych kroków (znacznie trudniejsze), przepisać coś napisanego 3 lata temu zupełnie od zera z użyciem wielowątkowości (bo działa za wolno) - po prostu jest sobie kod który ktoś kiedyś napisał, trzeba go szybko zrozumieć i przebudować w 2 - 3 dni. Kto spotkał się na kursie z czymś podobnym? Nikt, bo to znacznie trudniejsze niż napisanie chata w node.js
Kolejne 50% to niekończące poprawianie bugów w istniejącym kodzie, w większości napisanym przez kogoś innego, może przez siebie samego ale kilka lat wcześniej. Błędów nie polegających na tym, że przycisk się krzywo wyświetla, tylko np. zamówienie czasem utyka po jakimś kroku i nie wiadomo dlaczego. I trzeba to poprawić dziś. Jak to jest zaimplementowane? Nie wiadomo, poszukaj sobie i zrozum. Poprawialiście jakieś błędy tego typu na bootcampach?
Więc teraz taki absolwent bootcampu przychodzi z ogłoszenia o pracę i oferuje pokrycie tych 10-20% (jeśli faktycznie coś potrafi). Dlaczego ktokolwiek miałby go zatrudnić i płacić mu kilka tysięcy co miesiąc jeśli nie wiadomo w ogóle czy poradzi sobie z pozostałymi 80% zadań? Przecież "projekt" na githubie to nie jest żadne doświadczenie i żaden projekt, to jest coś jak obrazek odrysowany przez kalkę sprzedawany jako własnoręcznie namalowany obraz. Znajomość technologii nie ma większego znaczenia, znaczenie ma, czy człowiek potrafi rozwiązywać problemy i zarabiać dla firmy pieniądze. 9 na 10 ludzi po kursie nigdy nie będzie tego potrafić.
Kolejna rzecz to tempo pracy, senior developer może pracować 10x szybciej niż regular i 50x szybciej niż junior. Jak to, powiecie, przecież nie da się tak szybko pisać na klawiaturze! No niestety prawda jest brutalna, w przypadku napotkania poważnego błędu (powiedzmy że raz na 100 razy wywala się commit w Oracle który nie ma prawa się wywalać) senior może od razu wymyślić przyczynę (ma doświadczenie, intuicję, talent, widział kiedyś coś podobnego), regular spędzi dwa dni na debugowaniu ale w końcu do tego dojdzie, junior spędzi dwa tygodnie i rozłoży ręce bo nie ma pojęcia jak to ugryźć. Więc mimo że senior zarobi tylko 5-6x więcej niż junior, to jest więcej warty niż 50 takich pracowników. Po co więc zatrudniać kolejnego juniora? Za cenę 2-3 juniorów jest normalny regular a za cenę 5-6 juniorów jest kolejny senior który wniesie do firmy 50x więcej. A przypominam że człowiek po bootcampie to jest tylko potencjalny materiał na juniora a nie poziom juniorski. Juniora warto zatrudnić, jeśli rokuje że kiedyś zostanie seniorem. W innym wypadku to strata czasu.
Jest jeszcze kwestia talentu, człowiek który coś tam umie i jakoś sobie radzi może się na zawsze zatrzymać na poziomie regulara bo będzie mu brakować talentu. Takich ludzi pracujących od kilkunastu lat jest cała masa. Talent w IT działa tak samo jak talent w medycynie, każdy może zostać pielęgniarzem, ale mało kto może zostać neurochirurgiem. A człowiek bo bootcampie jest jak absolwent kursu pierwszej pomocy. Jeśli słyszycie o ludziach którzy skończyli kurs, dostali się na juniora i co roku awansują to po prostu macie do czynienia z talentem. Talentu nie da się nauczyć na kursie.
No dobrze, ale jak to działało 10 lat temu kiedy nie było takiego hype'u? Przecież skądś brali się ci początkujący. Bardzo prosto, na rynek w 99% wchodzili wyłącznie absolwenci studiów. Samouki zatrzymywały się na htmlu i PHP klepiąc proste sklepy internetowe na jedno kopyto i zgarniając 200 zł za zlecenie od znajomych. Nie było w ogóle hype'u i napływu ludzi z zewnątrz. A większość ludzi zainteresowanych programowaniem szła na studia. Zresztą dobra płaca w tamtych czasach to były 2 krajowe na rękę, tyle samo można było zarobić na koparce.
Ale jak zatrudniano tych absolwentów skoro też nic nie umieli powiecie? Przecież studia to strata czasu, prawda?
No więc każdy student po trzecim roku musiał odbyć obowiązkową bezpłatną (w większości) praktykę na którą i tak trzeba było się dopiero dostać rozwiązując test jaki teraz przechodzą potencjalni juniorzy (podstawy języka, jakiś SQL, coś z sieci itd.). Dalej - przez te trzy lata studenci zrobili już masę projektów na zaliczenie, które nie sprowadzały się do zrobienia strony logowania, tylko np. rozwiązywania problemów algorytmicznych, implementacji drzew w C, aproksymacji funkcji itd. Te projekty/zadania mają to do siebie, że są implementacyjnie trudne, nie da się ich zrobić z tutoriala i praktycznie zawsze nie działają po napisaniu. Więc ci studenci spędzili już dziesiątki jak nie setki godzin analizując w kółko własny kod i szukając w nim błędów i to w projektach które były zadane z góry i przez nich znienawidzone. I na końcu byli weryfikowani przez człowieka który chciał ich oblać. A skoro przyszli na praktykę to jakoś sobie poradzili, nie zrezygnowali i trzeba ich nauczyć praktycznych zagadnień, ale są dobrym materiałem na programistę bo potrafią wykonywać i kończyć trudne zadania zlecone odgórnie. Nie ma żadnego znaczenia, że nikt nie implementuje drzewa binarnego w pracy - umiejętność przebrnięcia przez takie zadanie oznacza predyspozycje do pracy z innymi trudnymi zadaniami. Człowiek który nie potrafi tego zrobić nie nadaje się na programistę i koniec.
Absolwent kursu który napisał jeden projekt w node.js jest w porównaniu z takimi biednymi studentami którzy w ogóle nie znają node.js absolutnie nikim i takich jak on są tysiące. Jest kompletnie niesprawdzony, nie musiał do tej pory z nikim konkurować, nie był przez nikogo weryfikowany, nie wiadomo jakie ma samozaparcie, nie wiadomo czy ma jakikolwiek talent. Te tysiące konkurują między sobą wyłącznie ceną, i kiedy przyjdzie większy kryzys i te tysiące startupów się zwiną, zwinie się też rynek dla juniorów samouków. Seniorów i regularów ciągle bardzo brakuje i będzie brakować, ale juniorów nie będzie. I będzie wielki problem, bo masa ludzi po wyadniu +10k zł na kurs zostanie absolutnie z niczym.
Więc z mojej strony rada dla samouków jest następująca:
- po zerowe: może zamiast bootcampów lepiej postawić na studia wieczorowe? Nawet po biedauczelni na każdej rekrutacji będziecie wyceniani wyżej niż setka bootcampowców z githubem
- po pierwsze sprawdź czy potrafisz implementować rzeczy których nienawidzisz, które łatwo zrobić źle, na przykład spróbuj zaimplementować grę w warcaby w oparciu o jakiś najprostszy algorytm przeszukiwania drzewa. Niech działa wolno, ale działa, może nawet nie drukować planszy. Musisz sobie poradzić, bo inaczej w pracy też sobie nie poradzisz
- po drugie zamiast aplikować na juniora, spróbuj iśc na praktykę za śmieszne pieniądze albo nawet za darmo. Jeśli na teście okażesz się co najmniej tak dobry jak ludzie na studiach, to zostaniesz przyjęty. Bo firmy przez praktyki inwestują w przyszłych pracowników a nie w aktualne umiejętności. Będąc już na praktyce masz praktycznie pewne otrzymanie potem oferty zatrudnienia. Firma nie ma znaczenia, może to być nawet jakiś Comarch. Masz zdobyć jakiekolwiek doświadczenie weryfikowane przez kogoś innego niż prowadzący kurs
- po trzecie nie idź w frontend bo wymiataczem frontendowym zostaje jakiś 1%, reszta będzie zawsze tylko średnia i będzie sie zabijać o miejsca pracy za 2k na rękę. Z każdym rokiem przybędą tysiące klepaczy Reactowych i w końcu cały ten rynek się pod sobą zawali tak jak kiedyś zawalił się rynek biedastronek na php. Praca w backendzie jest znacznie bardziej skomplikowana (nie trudniejsza tylko skomplikowana) i będzie zawsze w cenie bo tam technologia jest sprawą wtórną a sednem jest rozwiązywanie problemów
- po czwarte: 10 lat temu nie uczono się z YT tylko z książek. Jeśli nie potrafisz opanować np. Javy czytając książkę ewentualnie dokumentację to sobie w tym zawodzie nie poradzisz.
- po piąte: większości osób zwyczajnie nigdy się nie uda i trzeba się z tym pogodzić. Ja na przykład chciałbym być dentystą bo doświadczeni dentyści na własnych gabinetach zarabiają 10x więcej niż IT ale wiem że nigdy nim nie zostanę. Wiem że może byłbym w stanie opanować materiał ze studiów medycznych ale nie mam do tego talentu i nie uda mi się nigdy wejść od zera na ten rynek mając teraz 33 lata, no niestety tak to już jest w życiu.
Na zakonczenie dodam jeszcze ze wszystko co napisałem powyzej dotyczy samego programowania, a żeby byc programista 15k trzeba mieć drugie tyle umiejętności dziedzinowych, bo problemy za duże pieniądze rozwiązuje się na etapie planowania funkcjonalności, a nie implementacji i właśnie za to firmy są skłonne płacić tyle kasy, ale to jest zupełnie inna historia.