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.
"Według mnie" oznacza że nie masz nic na poparcie tezy. Tylko sobie gdybasz. Ale to lepiej zostawić historykom amatorom kłócących się o to czy gdyby na ostatniego króla wybrano Starego Fryca to byśmy żyli w jednym wielkim polskoniemieckim Reichu. Kurs to podstawa. Nawet na przeciętny bootcampie możesz usłyszeć że sam bootcamp niewiele da bez własnej pracy.
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ą.
Co jest sednem pracy w IT? Czy nie jest to przypadkiem ciągła nauka i umiejętność logicznego myślenia?
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
Oczywiście szary absolwent to będzie umiał na starcie.
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?
Na przeciętnym bootcampie powiedzą ze podstawą jest samodzielne poszukiwanie informacji.
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ć.
Czy przeciętny student ma do zaoferowania naprawdę coś więcej? Czy osoby z agencji marketingowej wezmą eksstudenta prędzej niż bootcampowicza tylko dlatego że ten pierwszy się potencjalnie mierzył ze skomplikowanymi problemami z którymi taka agencja raczej nie będzie się mierzyć. Nie, wezmą tego który lepiej będzie im pasował.powiedzmy grafika po bootcampie frontendowym czy osobę obeznaną w branży klientów.
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.
Super. Zatrudniajmy seniorów, olejmy juniorów a jak zatrudnimy jakiegoś to niech się czuje tak jakby wygrał w lotka. A za kilka lat płaczmy bo napompowaliśmy bańkę do takiego poziomu że tracimy zlecenia, no bo senior będzie kręcił nosem na 30k/mc. Bo prawda jest taka ze sektor IT sam zrobił hype'a na IT i pompuje ją w najlepsze choć tylko w wypadku seniorów
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.
Kij z tym. To się tyczy każdej branży. Nie każdy absolwent ekonomii zostaje ministrem, nie każdy absolwent szkoły teatralnej gra w superprodukcjach obok dajmy na to Brada Pitta. Nie każdy absolwent architektury przebudowuje kanał panamski. Nie każdy absolwent historii zostaje Normanem Daviesem, nie każdy absolwent seminarium zostaje papieżem, nie każdy absolwent szkoły oficerskiej ląduje w Gromie. Przeciętny miłośnik gór nie zdobywa zimą Everestu a przeciętny nurek nie pobija rekordu głębokościowego.. Z tym że przynajmniej jeśli chodzi o IT rozwój zależy od Ciebie.Jest na wyciągnięcie ręki. W wielu innych branżach tak nie ma. W wielu innych po prostu docierasz do punktu gdzie choćbyś dwoił sie i troił to awansu nie dostaniesz. Bo po prostu nikt tego nie potrzebuje
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.
Za Ludwika Węgierskiego to by nasi gimnazjaliści mogli wykładać na uniwersytetach. Czasy się zmieniły, wymagany pakiet umiejętności się rozrósł. Pojawił się powszechny internet, urządzenia mobilne, aplikacje, bankowość internetowa, marketing internetowy. To wszystko skutkowało tym że hrki IT dwoiły sie i troiły by zapełnić wakaty. To one przy pomocy właścicieli korpo czy softwarehouse'ów wykreowały hype. Bez tego hype'a byłoby daleko mniej samouków. A jakby byli to by traktowali to hobbystycznie nie pchając się do branży. Ludzie się pchają do branży dla pieniędzy, czasem też dla samorozwoju. Jeśli by czynnika finansowego nie było to większość poza totalnymi ASD-owcami i pasjonatami pragnącymi kodować za miskę ryżu by trzymała się od tego z dala.
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.
Ilu tak naprawdę programistów będzie musiało samodzielnie coś takiego robić? Ilu Front-endowców będzie musiało kodować w Assemblerze? Ile firm IT w PL autentycznie zajmuje się researchem i tworzy projekty w rodzaju oprogramowania analizującego skład wody pod pokrywą Europy? Myślę że niewiele. Generalnie jak się czegoś nie wie to zawsze jest StackOverflow. Co do przykładów jakie podałeś to można je zrozumieć jeśli umie się logicznie myśleć
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.
Z tym że zna Node.js. Studenci nie znają i wciąż są niesprawdzeni. Nie wiadomo bowiem czy nie są to osoby w stylu "Znam C# jak dajecie mniej niz 5k to nara" albo ludzie którzy na studia poszli bo "Po tym jest praca" Co do startupów to wciaż powstają nowe jak i się zamykają inne, plus nigdy nie wiesz czy startup robiący IT pod logistykę nie przyjmie prędzej logistyka po bootcampie niż absolwenta który nie wie o co biega.. Poza tym o jest norma w każdej branży. Ciągle masz powstające salony fryzjerskie i zamykane salony fryzjerskie. Czy to oznacza że nie warto się szkolić na fryzjera? Nie.
Ale też połowa salonów fryzjerskich będzie chciała mieć strony, to samo z pizzeriami, pubami, klubami, hotelikami, firmami usługowymi.
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
Hmm, nie wszystkie uczelnie takie oferują. Wciąż też opinia odnośnie wyceny znaczenia biedauczelni jest zupełnie subiektywna i mało wartościowa. Masa ludzi będzie wolała zobaczyć kod bardziej niż papierek. Podobnie zresztą angielski. Zawsze ma się tą rozmowę ale nikt nie każe pokazywać papierka. Równie dobrze można zapisać się EdX
- 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.
Tu się zgodzę
- po drugie zamiast aplikować na juniora, spróbuj iść 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
To chyba oczywiste. Z drugiej strony junior w X będzie postawiony przed takimi wymaganiami wstępnymi jak mid w Y i stażysta w Z. W jednym miejscu junior na front będzie miał mile widziany Javascript, gdzie indziej wymagany React i Node.js
- 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.
Na frontend jest stosunkowo niski próg wejścia. Nie wymagają studiów. Jak sie wejdzie na frontend to można sobie go poszerzać o backend
- 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.
Samo czytanie/oglądanie nic nie daje. O wiele lepsze jest robienie praktycznych projektów.
- 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.
Jak w każdej branży. Jednocześnie w IT nie musisz mieć super soft-skillów. Więc mimo wszystko jest łatwiej osobom o analitycznym umyśle i z niższymi soft-skillami.
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.
Dziś tak, za kilka lat niekoniecznie. Za kilka lat może się okazać żejednak firmy stwierdzą ze lepiej zatrudniać samych midów i juniorów. bo seniorzy za drodzy i za wiele sobie rządają.