Myślisz o przebranżowieniu na zawód programisty? Warto to wiedzieć!

Odpowiedz Nowy wątek
2019-01-12 13:26
Tig
36

A więc masz X lat, zajmujesz się w życiu Y, mieszkasz w Z.
Myślisz o zmianie zawodu na zawód programisty.
Tematy o podobnej treści pojawiają się wielokrotnie, a jakość odpowiedzi jest niska, spowodowana znużeniem Odpowiadających.

Post ma na celu przedstawienie pewnych kwestii, które powinny rozważyć osoby rozważające przebranżowienie.
Zasady tutaj opisane są spełnione w znakomitej większości przypadków, ale wiadomo, że w życiu od każdej takiej zasady są wyjątki. Wyjątki te są nieliczne.
Uwaga: W celu uniknięcia powtarzania się, będę nazywać "początkującymi programistami" osoby kandydujące na poziom entry-level (staż) oraz junior (programista z małym doświadczeniem).
Będę też używał pojęć "mid" - programista na średnim poziomie doświadczenia, "senior" - programista na wysokim poziomie doświadczenia.

Dla leniwych -- podsumowanie (tzw. TL;DR;) znajduje się na końcu.

Biorąc pod uwagę przebranżowienie, musisz wziąć pod uwagę co najmniej poniższe tematy:

I. Profil osoby, która będzie konkurować z Tobą o pracę

Na stanowisko programisty początkującego będzie kilkanaście-kilkadziesiąt osób chętnych.
W celu pokonania konkurencji musisz się zaprezentować jako najlepsza z tych osób, tzn. każda jedna osoba z tej grupy musi być mniej atrakcyjna dla pracodawcy.

Typowych konkurentów, których musisz POKONAĆ(mowa tylko o takich!) można podzielić na 2 grupy:

student lub absolwent

  1. ma ponadprzeciętne obycie z komputerami -- wie co to folder, jak szybko skasować linijkę w edytorze, umie odpalić terminal i wykonać komendy, zna skróty Ctrl+X/C/V itd. itp.
  2. uczył się matematyki rozszerzonej na poziomie licealnym -- na maturze rozwiązywał problemy podając dane(input), algorytm rozwiązania złożony z kilku mniejszych algorytmów, wynik(output)
  3. ukończył/kończy studia na kierunku informatyka -- w trakcie studiów odbył co najmniej kilkadziesiąt (szacunek dla studiów magisterskich: 20-25 przedmiotów) związanych z językami programowania i technologiami pokrewnymi, na każdym z tych przedmiotów musiał napisać na zaliczenie średnio 3 "większe" programy lub 30 malutkich, o przedmiotach związanych z teorią informatyki nawet nie wspominając
  4. w trakcie studiów rozwiązywał na własną rękę problemy programistyczne - pracował na część etatu i/lub pracował na cały etat w wakacje i/lub robił własne projekty

Zróbmy więc szacunek tego, co taki student minimum wykonał:
10 przedmiotów x3 programy zaliczeniowe "większe" == 30 programów x 20h każdy == 600h
10 przedmiotów x30 programy małe == 300 programów x 2h każdy == 600h
praca własna, niekoniecznie komercyjna == powiedzmy 4x przerwa wakacyjna 2 miesiące x 168h == 1344h
matematyka - doskonalenie umiejętności myślenia(no dobra, raczej wkuwania), algorytmów dyskretnych i grafowych, metod numerycznych itd == powiedzmy 25 przedmiotów x 4h == 1500h (tylko wykłady i ćwiczenia/laboratoria!)

Podsumowując szacunek dobrego, ale nie wybitnego, absolwenta studiów magisterskich, który będzie konkurował z Tobą o miejsce pracy:

  • ugruntowana wiedza z matematyki oraz informatyki licealnej
  • 2500 godzin poświęcone na programowanie i technologie pokrewne
  • 1500 godzin poświęcone na matematykę/teorię informatyki -- wiele z nich może być czasem straconym, tym niemniej część stanowi rzeczy przydatne w życiu typowego mida

samouk

  1. ma ponadprzeciętne obycie z komputerami -- jak wyżej; zna dobrze język angielski -- na tyle dobrze aby wyszukać i zrozumieć informacje w Internecie
  2. ma silną motywację do nauczenia się "rozmowy z komputerami" -- czego dowiódł, poświęcając ogromną ilość czasu implementując samodzielnie nietrywialne rozwiązania informatyczne, które działają, mają ręcę i nogi przynajmniej na poziomie użytkowym, które można zobaczyć, porównać z konkurencyjnymi rozwiązaniami
  3. może mieć niekiedy mniejszy zakres poznanych technologii lub wręcz nie znać pewnych podstaw matematycznych, ale na pewno coś nietrywialnego potrafi w swojej dziedzinie
  4. potrafi rozwiązać problem programistyczny z szerokiej gamy problemów, potrafi wyszukać i zaadaptować jakieś rozwiązanie, potrafi już przewidzieć pewne konsekwencje swoich rozwiązań -- z tym wszystkim spotkał się w pracy własnej, ze szczególnym naciskiem na umiejętność zidentyfikowania problemu, wyszukania rozwiązania, adaptacji do swoich potrzeb

Podsumowując szacunek samouka na poziomie pozwalającym konkurować z Tobą o miejsce pracy:

  • ukończony lub działający co najmniej jeden samodzielnie stworzony spory projekt programistyczny, po którym widać, że autor ma spore doświadczenie w programowaniu, i umie rozwiązać wiele różnych problemów
  • średnio 4h/dzień programowania x 365 dni x 2 lata == 2920 godzin, oczywiście można przyjąć tu wartości dowolne, zależne m.in. od tego, czy konkuruje o stanowisko entry-level czy już junior

II. Przydatność osób początkujących dla pracodawcy

Osoba początkująca ma za zadanie rozwiązać stosunkowo proste problemy.
Dostając zadanie rozwiązania prostego problemu, typowe problemy z którymi może się zmagać osoba początkująca:

  • niezdolność do zidentyfikowania miejsca wystąpienia problemu (w kodzie)
  • niezdolność do zrozumienia, co już istniejący kod robi i dlaczego, w konsekwencji niezdolność do zaproponowania zmiany
  • konieczność przedstawienia (swoim językiem, czyli często w sposób nieprecyzyjny, zaciemniający) napotkanego problemu midowi/seniorowi, który potem mid/senior i tak musi rozwiązać
  • niezdolność do wyjścia z własnych błędów, w konsekwencji prośby o pomoc do midów/seniorów o pomoc z błędami, które to błędy każdy mid natychmiast naprawi, albo nigdy nie popełni

Czyli mamy dwa ogólne przypadki:
a) samodzielna osoba początkująca, typowo rozwiązująca problemy w dużej mierze samodzielnie, ale bardzo wolno lub wolno,
ale po której rozwiązania bez sprawdzenia nikt rozsądny nie puści na produkcję; w wyniku sprawdzenia typowo wychodzą kwestie przypadków pesymistycznych ("nieoczekiwane" sytuacje chwilowej awarii, "niegrzeczni" użytkownicy proszący o dane innych użytkowników, itp.)
b) niesamodzielna osoba początkująca, która więcej zabiera czas osobom realnie pracującym, niż przynosi wartości

Czyli mamy:
a) zysk dla pracodawcy w okolicach zera -- te 10% czasu zabranego midom/seniorom bilansuje się na niewielki plus z pozostałym czasem (90% pracy własnej, którą mid zrobi 3x szybciej, powoduje że wychodzi
90% czasu przepracowanego x 0,33 wydajności - 10% == 30% - 10% == zysk 20% wydajności mida dla pracodawcy
b) zysk dla pracodawcy ujemny -- te 30% czasu zabranego midom bilansuje się na minus z pracą własną (analogicznie 70% czasu przepracowanego x 0,33 wydajności - 30% == STRATA 7% wydajności mida dla pracodawcy)

Podsumowując, jeżeli osoba "a" zarabia więcej niż 20% zarobków mida, to już jest niesprawiedliwie wysoko wynagradzana, jeżeli osoba "b" zarabia cokolwiek zamiast dopłacać, to już jest niesprawiedliwe wysoko wynagradzana.
To powoduje niską chęć pracodawców do zatrudniania osób początkujących, a wysoką do zatrudniania osób mid/senior.
Jeżeli pracodawcy w ogóle mają chęć zatrudniania początkujących, to najczęściej w nadziei, że taka osoba zostanie w firmie i zwróci się w perspektywie czasu.

III. Znajomość technologii a praca programisty

Część osób rozważających przebranżowienie może mieć przekonanie, że znajomość składni języka programowania lub w ogólności znajomość technologii jest jednym z najważniejszych warunków do pracy programisty.
Jest to pogląd równie uzasadniony, jak taki, że umiejętność napisania "Ala ma kota" umożliwia pisanie książek, które się sprzedają w milionowych nakładach. Przecież książka to tylko wielkich rozmiarów ciąg zdań, prawda?

Tymczasem istotna jest umiejętność zastosowania języka programowania, innych technologii, do rozwiązania realnego problemu w czasie akceptowalnym przez pracodawcę, z zachowaniem pewnych zasad co do wydajności; integralności oraz bezpieczeństwa danych; odporności rozwiązania na zmiany, i jeszcze wielu innych podobnych czynników.

Wracając do przykładu z książką, naprawdę nie jest rzeczą trudną nauczyć się pisać zdania. Nie jest łatwo nauczyć się pisać książki, na których można zarobić.
Na wszelki wypadek podam analogię.
Nie jest rzeczą trudną opanować język programowania czy technologie pokrewne. Nie jest łatwo nauczyć się tworzyć oprogramowanie, które ma ręce i nogi.

(IV. do 2^64 - 1 -- zarezerwowane na potem, jeżeli mi się coś przypomni)

PODSUMOWANIE

I. Konkurujesz lub rozważasz konkurowanie na stanowisko początkującego programisty z osobami, które poświęciły typowo kilka tysięcy godzin na programowanie, i potrafią samodzielnie rozwiąząć albo szeroką gamę problemów, albo są doskonali w jednej dziedzinie. Mowa o bezpośrednich konkurentach -- najlepszych z aplikujących na to stanowisko, a nie średnich, nie słabych.

II. Przydatność początkującego programisty dla pracodawcy jest niska albo bardzo niska, o wiele niższa niż przeciętna osoba początkująca sobie wyobraża. Liczba ofert pracy i płace to odzwierciedlają, przy czym pozornie niskie płace początkujących programistów, są lepsze niż się wydaje.

III. Nauczenie się "na 95%" języka programowania i technologii pokrewnych do warunek konieczny do pracy programisty, ale nie warunek dostateczny. Trzeba też wiedzieć, jak w praktyce się stosuje ten język programowania, aby rozwiązać praktyczne, realne problemy, i do tego potrzeba doświadczenia w tworzeniu oprogramowania. Sporo doświadczenia.

edytowany 2x, ostatnio: Tig, 2019-01-12 13:33

Pozostało 580 znaków

2019-01-14 01:02
0

Świetny post. To trzeba przypiąć/wyboldować. Pieczone gołąbki nie lecą same do gąbki :-)

Pozostało 580 znaków

2019-01-14 22:13
3

Dopisał bym jeszcze, że:

  • Nie ma pracy dla ludzi bez wykształcenia ani doświadczenia.
  • Miejsc dla juniorów jest mało, bo żeby zatrudnianie żółtodzioba miało sens musi na niego przypadać 3-5 mid / senior i to pod warunkiem, że działają w zgranym i ogarniętym zespole.
  • Praca na początku nie jest ani dobrze płatna, ani ciekawa.
ja bym dodal ze na koncu tez nie jest super platna ani ciekawa :-) A praca bez wyksztalcenia (informatycznego) jest... moja poprzednia korpo na masowych rekrutacjach zatrudniala w tamtym roku ludzi po budownictwie i innych inzynierskich kierunkach, co o programowaniu nie wiedzieli nic. - Jasnowidz 2019-01-15 13:25
@Jasnowidz: Nie wiem czy jestem na końcu, ale chwalę sobie i pracę i pensję. - piotrpo 2019-01-15 14:26
@piotrpo: w porównaniu z innymi branżami to jest dobrze płatna. Nie oszukujmy się. Większość prac jest nudna. Kopanie rowów, klepanie formatek, n+1 lot tym samym samolotem w to samo miejsce. Chyba tylko psychiatrzy nie mają nudno. No i politycy - Cogito 2019-01-18 00:52
@Cogito, @Piotrpo to wszystko zależy rzeczywiście z czym dokładnie człowiek ma porównanie. Jeśli miałbym wybór kopać rowy a programować to ofc wybiorę programowanie. Ale nie ma się też co oszukiwać, sa zawody, nawet w PL(nie biznesy) w których zarobić da się dużo więcej, aczkolwiek wymagaja wiecej kwalifikacji. - Jasnowidz 2019-01-18 09:23
@Cogito: co kto lubi, ja lubię programować, autentycznie i wciąż mnie to kręci. @Jasnowidz Oczywiście, że są. Tylko żadne z nich nie są tak powszechne, łatwo dostępne i nie stanowią tak bezpiecznej kariery: można zostać piłkarzem i zarabiać wielokrotnie lepiej, można też zostać notariuszem (chociaż to już chyba przestarzały przykład) i również zarabiać lepiej niż programista tylko są to zawody niszowe wymagające bardzo specyficznych umiejętności albo rodziców. - piotrpo 2019-01-18 12:18

Pozostało 580 znaków

2019-01-15 19:44
2

No spoko, ale ludzie i tak będą myśleć, że każdy z nich jest wyjątkowym przypadkiem i w przeciwieństwie do innych sobie poradzi

Pozostało 580 znaków

2019-01-15 20:39
5

@claus laclus: Tak jest ze wszystkim. Sam też podejmowałem się w życiu rzeczy, którym nie podołałem. To jest naturalne, tak było jest i będzie i nie ma w tym nic złego. Każdy kto chce musi spróbować i się przekonać na własnej skórze. #truizmyBerylo

Pozostało 580 znaków

2019-01-15 22:12
0
Berylo napisał(a):

@claus laclus: Tak jest ze wszystkim. Sam też podejmowałem się w życiu rzeczy, którym nie podołałem. To jest naturalne, tak było jest i będzie i nie ma w tym nic złego. Każdy kto chce musi spróbować i się przekonać na własnej skórze. #truizmyBerylo

Raczej bez takich wysokich tonów: chodzi o to, że przebranżawiający się mylą często znajomość jakiejś rzeczy z konkretną kompetencją czy wiedzą (od której do praktyki też jest daleko). Np. wydaje im się, że skoro oglądają Rick&Morty, wiedzą co to folder, udało im się przejść przez front-end tutorial na yt, to "ogarniają", albo że mają potencjał. To często nietechniczne osoby i ich nietechniczne środowisko nie przebija bańki, w której żyją-- wręcz przeciwnie, np. ich matka mówi swojej koleżance że jej syn jest jak neo z matrixa (bo zbootował linuxa na rpi, czy nie wiem, postawił stronę). I ich takie rzeczy napędzają. Spoko, niech sobie pędzą. Tylko prędzej czy później się rozczarują i ja na ich miejscu bym wolał wiedzieć wcześniej

Pozostało 580 znaków

2019-01-17 19:14
2

Za dużo truizmów, za mało faktów. Pytanie czy takie dane w ogóle gdzieś są, ilość Cvek na juniora w korpo albo ile firm wymaga magistra. Jakaś organizacja typu bulldogit, girlswithcarrots albo ITdlatwojejstarej może ma ?

Myślę, że jakbym był początkującym to ten post nie do końca byłby dla mnie przekonujący, gdybym miał te 15-30 lat i myślał o studiach/przebranżowieniu tudzież bootcampie . Ciężko chyba o taki zawód, gdzie pieniądze są duże, jest powszechny, i w miarę wygodny i nie oparty na znajomościach(choć w zasadzie na juniora już jest bardziej po znajomości). Nie trzeba iść na platforme wiertniczą, łowić krabów w Atlantyku, czy być na banicji z Jarkami na tirach i remontówce. We flakach nie trzeba się grzebać, wyciągać ciał obcych z odbytu pacjentom. To też nie jest jedyny sektor raczej w usługodawczym sektorze gospodarki, gdzie coraz ciężej się wbić.

Patrzyłem w wolnej chwili z ciekawości na ogłoszenia juniorskie, i wymagają ukończonych studiów, widziałem nawet zwrot "najlepiej uczelni publicznej".

Nadal ludzie zakładają tego typu tematy, także przyklejony chyba nie pomógł.


EH PANOWIE CORAZ WIĘCEJ AMATORÓW SIĘ PCHA DO ZABAWY HEHE MAM NADZIEJĘ, ŻE PRZEJDZIE TA NOWELIZACJA USTAWY I PO BUŁKI BĘDZIE MOŻNA CHODZIĆ TYLKO Z LICENCJĄ BO SERIO NIEKTÓRZY NIE MAJĄ ANI DOŚWIADCZENIA ANI WYOBRAŹNI I NA PRZYKŁAD UPUSZCZĄ BUŁKĘ NA PODŁOGĘ

hehe pamiętacie obwarzan75 rogalking jak byliśmy w ’99 na zlocie pieczywa tostowego w Siedlcach? XD Co tam się działo to głowa mała!!! Całe życie z wariatami XDDD KTO MA WIEDZIEĆ TEN WIE XD
edytowany 5x, ostatnio: BluzaWczolg, 2019-01-17 19:54

Pozostało 580 znaków

2019-01-18 12:19
0
BluzaWczolg napisał(a):

Myślę, że jakbym był początkującym to ten post nie do końca byłby dla mnie przekonujący, gdybym miał te 15-30 lat i myślał o studiach/przebranżowieniu tudzież bootcampie . Ciężko chyba o taki zawód, gdzie pieniądze są duże, jest powszechny, i w miarę wygodny i nie oparty na znajomościach(choć w zasadzie na juniora już jest bardziej po znajomości).

Tak się składa, że jest oparty. Cóż, jestem typowym przedstawicielem osoby opisanej w pierwszym poście. Od dłuższego czasu obserwuję rynek pracy pod kątem ofert i bełkotu mass mediów. Przy założeniu, że w branży faktycznie brakuje kilkudziesięciu tysięcy ofert, pracodawcy powinni poważnie zastanowić się skąd tych juniorów wziąć. Chyba, że jest to tylko hype podsycany przez akademie programowania i rekruterów, którzy sprawiają wrażenie, że coś robią. Sam znam przypadki osób, które nauczyły się kilku rzeczy i z powodzeniem pracują jako testerzy i programiści, dzięki koneksjom. Czasami nie potrafiąc obslużyć gita w podstawowym zakresie.

Patrzyłem w wolnej chwili z ciekawości na ogłoszenia juniorskie, i wymagają ukończonych studiów, widziałem nawet zwrot "najlepiej uczelni publicznej".

Sprawdzałeś, kto tworzy te ogłoszenia? Socjologowie, humaniści, ekonomiści i artyści. Większość rekruterek jest po takich właśnie studiach. Dochodzi do sytuacji, w których rekrutacje prowadzą osoby kompletnie nie znający się na branży. A potem prowadzą dyskusje o tym, dlaczego seniorzy zlewają ich headhunterskie wiadomości.

Nadal ludzie zakładają tego typu tematy, także przyklejony chyba nie pomógł.

Programowanie jest zatem darem od bogów? Branża posiada niedobory czy jest przesycona? Pracodawcy potrzebują pracowników czy nie?

jezu ale bełkot. najbardziej mnie urzekło "brakuje kilkudziesięciu tysięcy ofert". Niechaj wystawiają oferty, szybciutko. - BluzaWczolg 2019-01-19 11:13

Pozostało 580 znaków

2019-01-18 12:26
4

Programowanie jest zatem darem od bogów? Branża posiada niedobory czy jest przesycona? Pracodawcy potrzebują pracowników czy nie?

Nie.
Niedobory specjalistów, przesyt juniorów
Tak ale wykwalifikowanych, juniorów też ale nie aż tylu.

I nie jestem jakoś szczególnie odkrywczy w tym co piszę

Pozostało 580 znaków

2019-01-18 12:38
3

Przy założeniu, że w branży faktycznie brakuje kilkudziesięciu tysięcy ofert, pracodawcy powinni poważnie zastanowić się skąd tych juniorów wziąć.

Tylko to nie średniowiecze, że mistrz brał czeladnika w termin i decydował, kiedy nakłady na jego wykształcenie się zwróciły. Branie nooba do pracy jest kosztem i nie przynosi w większości przypadków specjalnych korzyści. Jak młody się trochę ogarnie, napisze pierwszego CRUD'a to ucieknie do innej firmy, bo jak wiadomo nikt ci nie da takiej podwyżki jaką dasz sobie sam.

Sprawdzałeś, kto tworzy te ogłoszenia? Socjologowie, humaniści, ekonomiści i artyści.

Bzdura - w każdej firmie w które pracowałem jak trzeba było kogoś "technicznego" zatrudnić, to wymagania określali techniczni. Czy HR było w stanie to przepisać bez błędów to już inna historia.

Branża posiada niedobory czy jest przesycona?

Wciąż posiada bardzo duże niedobory samodzielnych pracowników z kompetencjami. Przesycona jest za to ludźmi, którzy chcą się gdzieś zatrudnić, żeby się nauczyć. Bo przecież jak szkolenie ze smażenia frytek trwało 2 godziny, a później praktyka, to on się szybko uczy, no i może C++ to za głęboka woda ale w takim JS to sobie poradzi, bo przecież coś czego nie rozumie, nie może być trudne.

edytowany 1x, ostatnio: somekind, 2019-01-18 14:33
Entery po cytatach muszą być! - somekind 2019-01-18 14:33

Pozostało 580 znaków

2019-01-18 16:30
0

Bardzo idealistyczne podejście. Nie sądzę aby to było takie ważne aby było przyczepione na tablicy ale mogę się mylić przecież.
Małe spostrzeżenie że odkąd się chyba urodziłem to słyszałem że w czym sobie nie poradzę, że czegoś nie zrobię i kimś nie będę.
Eh.


so, what are we gonna do?
i co, uwierzyłeś im? - Berylo 2019-01-18 16:41
No generalnie tak działają różne społeczności w tym 4programmers. Czy programiści to socjopaci?:D - Berylo 2019-01-18 18:24
>"bardzo idealistyczne podejście" co? urzekła nas Twoja historia btw - BluzaWczolg 2019-01-19 11:21
aha. no fajnie. A co zjadłeś dzisiaj na obiad? Opowiesz nam/mi? Swoją drogą ładnie przekręcasz, bo nikomu nigdy nie odpowiedziałem na pytanie w taki sposób. OP był w tamtym wątku tym zarejestrowanym, to "anonimy" pisały posty o wykopie w temacie i rzucały bluzgami, między innymi. Następnym razem czytaj ze zrozumieniem. I pisz też. Poradzisz sobie xd. - BluzaWczolg 2019-01-24 19:09
@M.G.P.N: wyrażaj się kulturalnie. Poza tym nie dyskutuj sam ze sobą, bo to dziwnie wygląda. - furious programming 2019-02-15 15:41
Witaj Furious, nie pisałem sam do siebie, pewnie. Złamałem regulamin trochę, mam pokorę - rozumiem. Pozdrawiam, życzę miłego dnia, nie tylko tobie. BluzaWczolg, też. - M.G.P.N 2019-02-16 13:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

8 użytkowników online, w tym zalogowanych: 0, gości: 8, botów: 0