Dlaczego "juniorzy" nie mogą znaleźć pracy

0

Kurde no muszę bo nie daje mi to spokoju. Od razu powiem że nie trolluje.

Zgodnie z tym co napisałem w komentarzach do posta @KamilAdam bardzo fajne rozwiązanie i sam pewnie nie wpadłbym na to by zapisywać sobie wyniki z wcześniejszych liczb. Tyle że takie rozwiązanie powinno być traktowane jako ciekawostka i piętnowane w normalnych projektach / rozmowach rekrutacyjnych. Rozumiem że mówimy tutaj o prostym problemie i powinniśmy go traktować jako przykład wsadowy do rozmowy jednak pewnie jacyś młodzi kiedyś to przeczytają i powinni czuć delikatny smród z tego kodu.

Czy kandydat który tak rozwiązał by zadanie naprawdę powinien zostać pochwalony? Ja tutaj widzę pole na ~20 minut rozmowy z kandydatem czy wie co tak naprawdę napisał. Po całej tej rozmowie mi osobiście najbliżej do tego co zrozumiałem z wypowiedzi @The Pontiff czyli że takie zadanie można uznać jako wstęp do dalszej rozmowy / wyluzowanie się choć pewnie część ludzi i tak by odpadła (ja to tak zrozumiałem może i błędnie).

1
YourFrog2 napisał(a):

Wy udajecie czy serio nas nie rozumiecie?

A Ty? :)

Jeśli twoja praca polega na klepaniu stron WWW / Sklepów / Braniu danych i wyświetleniu ich / Inny dowolny CRUD to lepiej poprosić takiego juniora o napisanie programu który wyświetli pierwszych 10 pozycji z tabeli.

Pewnie tak, ale nie szkodzi najpierw sprawdzić, czy umie napisać pętlę z sumą.

My próbujemy powiedzieć "Zadania testowe należy dobierać do zakresu zadań jakie taki człowiek będzie w pracy wykonywać".

I to jest argument przeciwko wymaganiu od juniora umiejętności użycia podstawowych konstrukcji języka? :)

YourFrog2 napisał(a):

@The Pontiff: Tylko widzisz ja postuluje w tym temacie że to nic nie sprawdza. Według mnie jedyne co tutaj sprawdziłeś to czy kandydat potrafi z pamięci pierdzielnąć nie wydajną implementacje ciągu fibonaciego którego uczył się x lat temu.

Kto każe robić to z pamięci?

Klepanie crudów to jednak spora część naszego świata (przez crud rozumiem również obsługę czujnika temperatur komunikującego się po i2C, takze tego..). Wydaje mi się że pobranie danych ze storage, obrobienie ich i wyświetlenie użytkownikowi końcowemu sprawdza zdecydowanie więcej bo jak zobaczę tam Singletona albo jakąś pulle wątków to wiem że trafiłem na ogarniętego człowieka (to się może pojawić w rozmowie o tym zadaniu itp.). Są pewnie ludzie co czytali coś o architekturze i rozdzielą sobie to na jakąś warstwę logiki, danych i widoku. Niektórzy jakiś wyjątek złapią albo obsłużą przypapadek krańcowy.

Typowym crudowym zadaniem jest znaleźć w kolekcji obiekt B o określonej wartości pola X, i ustawić mu wartość pola Y na odpowiednią kombinację pola U z obiektu K oraz V z obiektu R.
Ktoś, kogo przerasta pętla z sumą raczej nie podoła takiemu zadaniu.

YourFrog2 napisał(a):

Trzeba tylko znów zaznaczyć że autor wątku mówił o juniorach czyli od tych ludzi nie wymagamy znajomości wszystkich narzędzi, składni językowych, płynnego poruszania się po bibliotekach itp.

No więc skoro nie znają wszystkich narzędzi ani bibliotek, nie mają doświadczenia w rozwiązywaniu problemów na poziomie inżynieryjnym, to dostają zadanie nie wymagające żadnej skomplikowanej wiedzy oraz wyłącznie użycia podstawowej składni języka, aby je wykonać.

0
YourFrog2 napisał(a):

sam pewnie nie wpadłbym na to by zapisywać sobie wyniki z wcześniejszych liczb

Sam też bym na to nie wpadł. Nie jestem geniuszem (i szaleńcem chyba też nie jestem). Niczym dobry rzemieślnik przeczytałem o tym w książce Java. Programowanie funkcyjne.

Według wujka google to maximum stack wywołanych metod to 7k więc to ma ograniczenie "wbudowane" w JVM'ke

Na to autor Java. Programowanie funkcyjne. też znalazł roziązanie, ale bez trampoliny. Zbudował obiekt reprezentujący wywołanie funkcji i nazwał go TailCall. Dzięki temu obiektowi mógł przenieść stos wywołań na stertę (sterta jest zwykle większa niż stos). Jak czytałem to pierwszy raz uznałem to za objaw geniuszu/szaleństa. Dziś wiem że to rozwiązanie jest zaskakująco podobne do monady Free, gdzie też zamiast wykonywać obliczenia generujemy drzewo reprezentujące obliczenia. I okazuje się że nawet monada Free jest używana w produkcyjnym kodzie w Slicku, Scalowej bibliotece do typowanego SQLa. A po co Slick w ogóle generuje całe drzewo wywołań SQLi jako Free Monadę (czyli drzewo) a dopieropotem wykonuje? Otóż przed wykonaniem jest w stanie przeiterować sobie po tym drzewie i odrzucić zduplikowane zapytania (czyli np te same selecty w tej samej transakcji)

6

ja to bym proponował zmienić nazwę forum na 4architects, bo poza @Manna5 i @furious programming to tutaj chyba nikt już nie programuje

1
YourFrog2 napisał(a):

To ja zadam przewrotne pytanie. Co jeśli junior z rozbrajającą szczerością powiedział by "Ale proszę Pana, ja nie umiem algorytmów na napisanie ciągu, a z matematyki to mi słabo w sumie szło w szkole ale tutaj jest moje konto na githubie i projekty". A tam np taki tetris jak @furious programming ostatnio popełnił.

Z całym szacunkiem dla @furious programming bo zrobił kawał świetnej roboty jednak matematyki to tam tyle co kot napłakał. Zapewne ten kandydat po napisaniu mu ciągu by go bez kłopotu w podstawowej implementacji rozpracował ale nie oto mi chodzi. Gość po prostu wie co to lista, struktura, klasa, instancja, umie tym zarządzać, jakoś to dzieli może nawet wie że liczba składa się z bitów, potrafi żąglować bitami itp. no ale pech chciał że w domu się uczył i jakoś z matematyką mu nie po drodze było.

Czemu zostałem zawołany do tego wątku? Wiem, że mój Fairtris to taka lekka abominacja, źle zaprojektowana (tzn. w ogóle nie zaprojektowana), ale nie bijcie, on ma tylko działać… Tak więc nie wiem czy opieprz dostaję i zostałem wymieniony jako zły przykład, czy jednak powód był inny.

BTW: jeszcze nie popełniłem — dopiero połowa gotowa. :D

4

No wszystko fajnie pięknie. Ponarzekaliśmy sobie na łatwy cel, a teraz realia. Czemu panowie wielcy rekrutrzy nie dają feedbacku? Mi się śmiać chce z tej wielkiej rekrutacji na juniorów wannabe. Dostałem robotę dorywczą, zdesperowany nie jestem bo nikt mi takiego hajsu (szpan alert) nie jest w stanie zaproponować jak teraz zarabiam, a kompletnie nie wiem czemu większość firm mnie odrzuciła. Obecnie mam jedną (jedyną!!!!) propozycje z jednej firmy, która jasno określiła, czemu i co i jak chce ode mnie, reszta mnie olała i właściwie nie wiem czemu. Pytania rekrutacyjne banaluka, nawet jak się wykujesz to nie znaczy, że ogarniasz, ale czemu jestem gorszy od 1000siąca na moje miejsce? Nie wiem :)

1
TheLearner napisał(a):

No wszystko fajnie pięknie. Ponarzekaliśmy sobie na łatwy cel, a teraz realia. Czemu panowie wielcy rekrutrzy nie dają feedbacku?

Ja zawsze staram się dać feedback. Czy to uprawnia mnie do zadawania prostego algorytmu na rozmowie, czy nie?
Tak na serio to są to sprawy od siebie niezależne, tj. jakość procesu rekrutacyjnego a wymagania wobec kandydatów. Można mieć:

  • dobre wymagania i dobry proces rekrutacyjny
  • dobre wymagania i zły proces rekrutacyjny
  • złe wymagania i dobry proces rekrutacyjny
  • złe wymagania i zły proces rekrutacyjny
0
TheLearner napisał(a):

No wszystko fajnie pięknie. Ponarzekaliśmy sobie na łatwy cel, a teraz realia. Czemu panowie wielcy rekrutrzy nie dają feedbacku?

Nie wiem, ale jaki to ma związek z tym tematem? Chyba wręcz ujemny.

5

Wracając do tematu. Dzisiaj 90% jak nie więcej ogłoszeń jednak nie szuka Juniora ale samodzielnego Mida, któremu nie chcą płacić jak Midowi 😂
@jarek000000 chyba o tym pisał wcześniej.

Pandemia spowodowała wstrzymanie zatrudnienia na stanowiska, gdzie musi ktoś jeszcze siedzieć i uczuć...
Tną koszty i nie potrzebują tzw. "balastu", którego trzeba przyuczać... Tylko to się zemści w dłuższej perspektywie.

Tylko po co kierować takie oferty w stronę Juniorów?

Inną kwestią jest ogólne pojęcie Juniora. Kim on jest? Patrząc po wymaganiach z ogłoszeń, to Junior może być osoba kompletnie bez doświadczenia komercyjnego kończąc na osobie z minimum 2 lata expa, własnymi projektami itd...

Teraz jak stać się Juniorem z doświadczeniem komercyjym nie mając go i nie dostając okazji do zdobycia? (pomijam staże, bo tu nie każdy może się wpasować - różny etap życia).

Myślę, że niedługo kiedy pandemia wygaśnie i wróci po części stary model pracy, to wróci szukanie Juniorów po staremu. Tylko wtedy dla sporej części firm może to być za późno, bo nawet tutaj ich liczba nie jest nieskończona.
Na pewno dalej zostaną osoby, które pracy nie znajdą ale moim zdaniem szansę dostanie więcej osób niż teraz.

Co do samego poziomu. Junior na pewno powinien znać podstawy no i umieć programować. Pytanie tylko czy szybkie zadanie z fiba to udowodni?
A co jak ktoś się tego uczy nas pamięć, zaliczy i zamaskuje swoje niedoskonalosci, zły charakter i zostanie zatrudniony zamiast osoby, która np. źle znosi takie testy na szybko ale długofalowo będzie jednak lepszym programistą?

To trochę jak z egzaminem nas prawko. Są osoby które zdają za pierwszym razem ale potem ich jazda przypomina wiele do życzenia - łamanie przepisów, ich nieznajomość, ignorowanie i traktowanie innych uczestników ruchu gorszymi..
Osoba która może zdać za 3-4 może mieć więcej pokory i w prawdziwej jeździe na co dzień będzie lepszym kierowcą.

Takie tam przemyślenia na koniec piątku 😉

0

@.andy:

A co jak ktoś się tego uczy nas pamięć, zaliczy i zamaskuje swoje niedoskonalosci, zły charakter i zostanie zatrudniony zamiast osoby, ktoś np. źle znosi takie testy na szybko ale długofalowo będzie jednak lepszym programistą?

no to jeżeli się ujawni, to go pewnie wywalą? xd

słyszałem o takich przypadkach, gdzie ktoś dostał pytania które zazwyczaj ktoś tam pytał, przyjęli go, 3 miesiące chyba i out

Osoba która może zdać za 3-4 może mieć więcej pokory i w prawdziwej jeździe na co dzień będzie lepszym kierowcą.

podobno w faangu lubią gdy regularnie aplikujesz :D

1
YourFrog2 napisał(a):

Kurde no muszę bo nie daje mi to spokoju. Od razu powiem że nie trolluje.

Zgodnie z tym co napisałem w komentarzach do posta @KamilAdam bardzo fajne rozwiązanie i sam pewnie nie wpadłbym na to by zapisywać sobie wyniki z wcześniejszych liczb. Tyle że takie rozwiązanie powinno być traktowane jako ciekawostka i piętnowane w normalnych projektach / rozmowach rekrutacyjnych. Rozumiem że mówimy tutaj o prostym problemie i powinniśmy go traktować jako przykład wsadowy do rozmowy jednak pewnie jacyś młodzi kiedyś to przeczytają i powinni czuć delikatny smród z tego kodu.

Czy kandydat który tak rozwiązał by zadanie naprawdę powinien zostać pochwalony? Ja tutaj widzę pole na ~20 minut rozmowy z kandydatem czy wie co tak naprawdę napisał. Po całej tej rozmowie mi osobiście najbliżej do tego co zrozumiałem z wypowiedzi @The Pontiff czyli że takie zadanie można uznać jako wstęp do dalszej rozmowy / wyluzowanie się choć pewnie część ludzi i tak by odpadła (ja to tak zrozumiałem może i błędnie).

Kandydat ma rozwiązać zadanko podczas rozmowy, które ma się nijak do wykonywanej pracy. Wszystko jest OK.

Kandydat użył techniki programowania dynamicznego przyspieszając czas wykonania głupiego zadania kosztem pamięci. Należy do napiętnować, bo tak się nie robi normalnie w pracy!

Akurat fibonacci jest trywialny, ale przy innych zadaniach wymagających rozwiązania dynamicznego taka rekurencja ułatwia życie i manewrowanie indeksami przy wypełnianiu tablicy spamiętanych wartości.

Pomijam fakt, ze rozmowa rekrutacyjna to nie miejsce na chwalenie kandydata tylko czas na sprawdzenie jak myśli, programuje i co wie kandydat. Pominę także to, iż podczas takiego kodowania nawet najlepsi potrafią się zestresować i zacząć pisać byle jak, aby tylko skończyć i przejść do następnego pytania.

0

Co do OP - takie czasy, ludzie mysla ze jak znaja Jave to sa programistami.
W ogole ktos z tutaj mysli ze zna Jave?

0
.andy napisał(a):

Pandemia spowodowała wstrzymanie zatrudnienia na stanowiska, gdzie musi ktoś jeszcze siedzieć i uczuć...

Ten okres wstrzymania był bardzo krótki i trwał może z trzy miesiące (od marca do czerwca 2020 r.). Teraz już dawno na rynku widać ruch.

Tną koszty i nie potrzebują tzw. "balastu", którego trzeba przyuczać... Tylko to się zemści w dłuższej perspektywie.

Pandemia wstrzymała rekrutacje na starcie. Teraz wszystko wróciło do normy - firmy szukające juniorów jak szukały tak szukają.

Inną kwestią jest ogólne pojęcie Juniora. Kim on jest? Patrząc po wymaganiach z ogłoszeń, to Junior może być osoba kompletnie bez doświadczenia komercyjnego kończąc na osobie z minimum 2 lata expa, własnymi projektami itd...

Różne firmy różnie identyfikują te same stanowiska. VP (Vice-President) w jednej firmie to poziom tech leada, w drugiej to osoba odpowiadająca bezpośrednio przed zarządem. I co?

Teraz jak stać się Juniorem z doświadczeniem komercyjym nie mając go i nie dostając okazji do zdobycia? (pomijam staże, bo tu nie każdy może się wpasować - różny etap życia).

Myślę, że niedługo kiedy pandemia wygaśnie i wróci po części stary model pracy, to wróci szukanie Juniorów po staremu. Tylko wtedy dla sporej części firm może to być za późno, bo nawet tutaj ich liczba nie jest nieskończona.

Tyle tylko, że mamy nadpodaż wannabe programistów. Nie mówię tu o tym, że samoucy czy ludzie po bootcampach nie powinni szukać pracy - po prostu uważam, że jeśli ktoś uważa, że wyłącznie po sześciu miesiącach kursu jest w stanie startować na stanowisko 5k netto to trochę przesadza.

Na pewno dalej zostaną osoby, które pracy nie znajdą ale moim zdaniem szansę dostanie więcej osób niż teraz.

Dlaczego? Rekrutacja online jest szybsza niż tradycyjna.

Co do samego poziomu. Junior na pewno powinien znać podstawy no i umieć programować. Pytanie tylko czy szybkie zadanie z fiba to udowodni?

Jeśli kandydat nie potrafi zrobić szybkiego zadania z fiba to z dużą dozą prawdopodobieństwa znaczy, że nie potrafi programować. Uprzedzając głupie wnioski - proszę sprawdzić jak działa implikacja w logice.

A co jak ktoś się tego uczy nas pamięć, zaliczy i zamaskuje swoje niedoskonalosci, zły charakter i zostanie zatrudniony zamiast osoby, która np. źle znosi takie testy na szybko ale długofalowo będzie jednak lepszym programistą?

Czyli twoje pytanie brzmi: "Którego kogo należy zatrudnić?":

  • osobę, która ogarnęła proste zadanie i wydaje się jak najbardziej OK pod względem charakteru
  • osobę, która nie ogarnęła prostego zadania i wydaje się jak najbardziej OK pod względem charakteru
    Dla mnie odpowiedź jest dosyć oczywista.

To trochę jak z egzaminem nas prawko. Są osoby które zdają za pierwszym razem ale potem ich jazda przypomina wiele do życzenia - łamanie przepisów, ich nieznajomość, ignorowanie i traktowanie innych uczestników ruchu gorszymi..
Osoba która może zdać za 3-4 może mieć więcej pokory i w prawdziwej jeździe na co dzień będzie lepszym kierowcą.

Niesamowicie nietrafione porównanie.
Jeśli już korzystamy z porównania do branży motoryzacyjnej - to czy osoba, która kończy egzamin praktyczny z uszkodzonym samochodem powinna dostać prawo jazdy, czy nie? W teorii - różne sytuacje się zdarzają, w praktyce - jeśli ktoś dopiero się uczy i jest uczestnikiem wypadku drogowego to raczej jest tak, że odpowiedzialność leży po jego stronie. A w przypadku programowania to nie mamy czynnika zewnętrznego, tj. innych samochodów.

1
.andy napisał(a):

Wracając do tematu. Dzisiaj 90% jak nie więcej ogłoszeń jednak nie szuka Juniora ale samodzielnego Mida, któremu nie chcą płacić jak Midowi 😂

Z moich obserwacji aktualny problem to "nie ma wolnych midów". Generalnie problemem jest brak programistów. Stawki nie mają tu nic do rzeczy, bo jeżeli na rynku jest X specjalistów z jakieś dziedziny, a potrzeba ich 2X to rosnące stawki (nie, żebym miał coś przeciwko), powodują jedynie przechodzenie tych samych ludzi pomiędzy tymi samymi firmami. Oferujemy stawki, które spokojnie odpowiadają temu co ludzie zarabiają w firmach. Problem w tym, że brak jest "wolnych kandydatów" a przecież nikt rozsądny nie przejdzie do innej firmy za te same pieniądze.

Pandemia spowodowała wstrzymanie zatrudnienia na stanowiska, gdzie musi ktoś jeszcze siedzieć i uczuć...
Tną koszty i nie potrzebują tzw. "balastu", którego trzeba przyuczać... Tylko to się zemści w dłuższej perspektywie.

To się "mści" od dłuższego czasu, mechanizm opisałem wyżej.

Inną kwestią jest ogólne pojęcie Juniora. Kim on jest? Patrząc po wymaganiach z ogłoszeń, to Junior może być osoba kompletnie bez doświadczenia komercyjnego kończąc na osobie z minimum 2 lata expa, własnymi projektami itd...

Nie pokuszę się o słownikową definicję. Brak komercyjnego doświadczenia nie jest dla mnie żadną przeszkodą. Są ludzie którzy "programowali" przez 5 lat i nadal nie mają o tym pojęcia. Nie mam nawet wymagań "ma znać framework X". Raz, że dla programisty (bez cudzysłowu) wejście w jakiś framework to tydzień. Dwa, że dzisiaj robimy w X, a za chwilę pojawi się zadanie w Y. Dlatego ważniejsza dla mnie jest wiedza ogólna i powiedzmy 10 000 linii niesztampowego kodu napisanych samodzielnie w życiu, niż "wiem jak zrobić endpoint w Springu"

Teraz jak stać się Juniorem z doświadczeniem komercyjym nie mając go i nie dostając okazji do zdobycia? (pomijam staże, bo tu nie każdy może się wpasować - różny etap życia).

Programując, zdobywając doświadczenie niekomercyjne a później znajdując pracę. Może być staż, mogą być własne projekty, czy udział w OS. W firmie mamy też program przenoszenia do software development ludzi z wiedzą domenową (awiacja, nawigacja, geodezja), na różne stanowiska, w tym programistów. Tylko jak zauważyłeś, każdy junior potrzebuje swojego seniora (bez cudzysłowu), a tych jest ograniczona liczba i nie da się ich wyprodukować w 3 lata.

Co do samego poziomu. Junior na pewno powinien znać podstawy no i umieć programować. Pytanie tylko czy szybkie zadanie z fiba to udowodni?
A co jak ktoś się tego uczy nas pamięć, zaliczy i zamaskuje swoje niedoskonalosci, zły charakter i zostanie zatrudniony zamiast osoby, która np. źle znosi takie testy na szybko ale długofalowo będzie jednak lepszym programistą?

Nie ma idealnej metody na ocenę kandydata. Albo masz ryzyko pomyłki, albo nieakceptowalny koszt rekrutacji (zarówno po stronie firmy, jak i kandydata). Idź na rekrutację do dowolnej firmy z FAANG. Na dzień dobry (albo moment później) dostaniesz zadanie typu hacker rank, przy którym ten biedny Fibonacci jest jak ratlerek przy dobermanie. I te firmy też w większości piszą CRUDy, a jednak uważają, że nawet do takich banalnych zadań warto zatrudniać wysokiej klasy specjalistów z ogólnym pojęciem o programowaniu. Nie dostaniesz tam za to pytań o Springa, Hibernate czy inny modny framework.

To trochę jak z egzaminem nas prawko. Są osoby które zdają za pierwszym razem ale potem ich jazda przypomina wiele do życzenia - łamanie przepisów, ich nieznajomość, ignorowanie i traktowanie innych uczestników ruchu gorszymi..

Opisałeś właśnie mid software developer oversized ego syndrom :)

3

I dobrze, już mnie denerwują wszędzie te reklamy z jakimis bootcampami, w obecnych czasach nie przyjal bym nikogo do pracy jesli ktos zaczął z it od jakos > 2017, 0 pasjonatów tylko napaleńcy na zarobki

3
Descendant napisał(a):

I dobrze, już mnie denerwują wszędzie te reklamy z jakimis bootcampami, w obecnych czasach nie przyjal bym nikogo do pracy jesli ktos zaczął z it od jakos > 2017, 0 pasjonatów tylko napaleńcy na zarobki

a do czego pasja, jak kołchozy każdemu wybiją z głowy miłość do programowania. Masz zapie***, gównokody klepać. Czysty kod nie zarabia!

9

Ostatnimi czasy byłem na kilku interview technicznych junior/mid (python) i we większości pytania odnosiły się do cech języka, zasady działania pewnych rzeczy, ogólnie podstaw typu mutable/immutable, hashmapa (set vs dict), contextmanager, decoratory itp. plus bardzo proste zadania algorytmiczne typu wypisz wszystkie liczby w zakresie 2000-3200 podzielne przez 7, które nie są wielokrotnością 5. W 90% interview składały się właśnie z pytań + pojedyncze zadanka.

Moim zdaniem ludzie chcący wejść w konkretny język po prostu za mało skupiają się na jego aspektach. Wiedzą jak coś napisać, ale nie do końca wiedzą co dzieje się pod spodem + znają język jedynie ze strony praktycznej. Sam ostatnimi czasy bardziej skupiam się na teorii, która u mnie kulała. Mimo skopania na jednym interview w opór prostych zadań (stres), prace i tak dostałem, bo odpowiedziałem ew większości dobrze na pytania odnośnie języka.

Nikogo tak na prawdę nie interesuję, że zrobiłeś kolejnego milionwego cruda tylko fakt, czy w ogóle rozumiesz z czego korzystasz. Projekty bardziej ambitne niż crud również są na plus (takowych mam kilka i pytano mnie o nie na rekru) a jak jeszcze jesteś w stanie odpowiedzieć dlaczego użyłeś/aś takich a nie innych rozwiązań to dostajesz kolejnego plusa.

Wystarczy zmienić odrobine podejście z typowego piszę kod, więc programuje i powinienem dostać pracę na znam podstawowe zasady działania języka w którym piszę i rozumiem co tak na prawdę robię nie bazując wyłącznie na outpucie z konsoli

6

Dodam od siebie, że ostatnie lata wszystkich rozpieściły i jest lament, że nie ma pracy dla juniorów. A ja powiem tak- kilkanaście lat temu kiedy zaczynałem pracę w IT, to też nie było wiele pracy dla juniorów, szczególnie w mniejszych miastach niż Warszawa, Kraków czy Wrocław, bezrobocie było dwucyfrowe, zdalnie mało kto pracował, nie było wszelkich cudów typu justjoin itp., pracy szukało się na zasadzie "kumpel A słyszał, że tu i tu jest taka firma", "kolega załapał się do firmy X, to spróbuję" itp. I też trafiało się do różnych JanuszSoftów itp., pracowało za marne pieniądze- przez pewien czas kolega jako kurier zarabiał więcej niż ja (fakt, jeździł po 9- 10 godzin), ale było to frustrujące. Ba, mało tego- pamiętam zdziwienie pewnych znajomych, rodowitych Anglików na wieść o tym, że chcę zostać programistą. Około 2000 roku był kryzys, u nich mnóstwo ludzie poleciało na bruk, również programistów. Pierwsze rektrutacje też były "wesołe", w jednej firmie aplikowałem na programistę chyba C++ (już nie pamiętam), wysłałem CV i dostałem odpowiedź, że... mogą mi zaproponować na początek stanowisko testera, a potem mogę "przeskoczyć". Takich kwiatków było więcej. Także nie ma się co przejmować tylko trzeba zakasać rękawy, uczyć się, dokształcać, czasem przejść przez "piekło" tragicznej firmy (wiedza jak nie prowadzić projektów jest bezcenna;), no a czasem po prostu trzeba sobie odpuścić na jakiś czas albo i na zawsze i zostać elektrykiem, stolarzem, budowlańcem itd. I nie, nie śmieję się z tych zawodów, bardzo je cenię, ale po prostu nie każdy nadaje się do IT tak jak ja nie nadaję się do prac dekarskich itp.

1
micheangelo napisał(a):

no a czasem po prostu trzeba sobie odpuścić na jakiś czas albo i na zawsze i zostać elektrykiem, stolarzem, budowlańcem itd. I nie, nie śmieję się z tych zawodów, bardzo je cenię, ale po prostu nie każdy nadaje się do IT tak jak ja nie nadaję się do prac dekarskich itp.

żeby robić w IT trzeba być albo geniuszem albo nie mieć życia.
Rozwalili mnie na ostatniej rekrutacji, gdy zapytali mnie o zaintersowania po pracy.
Może t o była taka subtelna obelga, że g**no nie programista jestem, a skoro nie programista to mogę mieć zainteresowania.

0
Wawer0123 napisał(a):
micheangelo napisał(a):

Rozwalili mnie na ostatniej rekrutacji, gdy zapytali mnie o zaintersowania po pracy.
Może t o była taka subtelna obelga, że g**no nie programista jestem, a skoro nie programista to mogę mieć zainteresowania.

Ogladnij sobie ten filmik, tutaj dziewczyna fajnie pokazała jak wygląda obecnie rekrutacja do IT na zachodzie. Pewnie do Polski też to dojdzie...

Rozmawiam często z ludźmi z Ameryki i tam to już jest trochę taki standard, że jest wyścig szczurów mówiąc krótko i tak jak mówisz ludzie przesciguja się non stop, np. grinduja Leetcode, robią wszystkie certy z AWS,.niektórzy rezygnują z rodzin na poczet "kariery" to już takie uroki pracy w korpo świecie, na ten temat są książki nawet i nie ma co tutaj narzekać. Albo uczestniczysz w tym albo się z tego wypisujesz jak ktoś wyżej napisał i idziesz na operatora koparki i masz spokój na głowie.

I nie ma co narzekać, bo to nic nie zmieni, tak jest i tyle.

1

Niestety, gdybym był na miejscu juniorów i potrzebował przebranżowienia to mój cel do realizacji postrzegałbym z perspektywy wymagań jakie są w ofercie pracy. Widzę co jest wymagane i stąd wiem co muszę poznać.

Pracodawcom najprościej jest okreslić wymagania poprzez N lat doświadczenia i wiązankę technologii - ale ostatecznie nie tego szuka pracodawca! To jest tak samo jak z kobietą, która określa szuka faceta na jakiejś sympatii, że wymarzony facet musi mieć takie a takie kryteria. To są tylko wstępne założenia, w rzeczywistości wypadkowy facet może być zupełnie inny, o ile ma to coś.

Jak junior zauważy, że niemal na każdym ogłoszeniu potrzebna jest znajomość frameworka to z automatu traktuje jego naukę niemal za cel #1 i tutaj bootcampy przychodzą z pomocą. Bootcampom znacznie prościej jest prowadzić zajęcia opowiadające o frameworkach. Bo taka rzecz możesz tłumaczyć nawet głąbom, one mają poczucie, że coś rozumią i że idą do przodu i tak się dzieje dopóki omawia się gotowe konstrukcje, które rozwiązują problemy.

Także każdy chce dobrze, bo pracodawca informuje co potrzeba, junior chce to spełnić, a bootcamp pomaga jak może.

Nie mniej to jest mocno chybione podejście.

Przykładowo weźmy framework za cel, bo często są one wymagane w ogłoszeniach, często bootcampy uczą obsługi takiego frameworka i często też ludzie są tym wstępnie zainteresowani, bo chcą widzieć efekty z nauki.

Niestety nauka frameworka to pamięciówa, tak piszesz kod, ale autorzy frameworka wyznaczyli Ci jak masz rozwiązywać pewne problemy, jakie klasy masz stosować, jak je łączyć itp. Tu zaczyna się kopiowanie kodów ze stackoverflow, i czytanie dokumentacji (o ile ktoś jest wnikliwy). Tutaj programowanie jest pasywne, bo w znacznie większym stopniu trzeba się dopasować to tego jaki workflow oferuje wybrany framework.

Ale przecież tak pracują programiści, co nie? Trochę tak, ale takie "pasywne" programowanie (jeśli mogę to tak ująć) to jest tylko pewna część pracy i oprócz tego jest też wiele sytuacji gdzie rozwiązań niestety nie ma w internecie. To rozwiązanie trzeba nie tylko w miarę szybko wymyśleć, ale również wiedzieć jak je poprawnie wdrożyć w konkretny projekt.

Jeśli ktoś zatrzyma się na frameworkach to efekt końcowy takiej nauki zależy od celu. Nauka frameworkowa zwróci się jak zaczniesz pisać własne oprogramowanie na domowy użytek, jeśli bez obaw po tygodniu możesz usunąć kod i zacząć od nowa, ale w pracy niestety to tak nie działa. Kod jaki będziesz pisał będzie się piętrzył. Każda rzecz, której nie widzisz i której nie potrafisz uzasadnić będzie się mścić. To będzie frustrujące uczucie.

Pracodawcy nie chcą frameworkowców. Oni chcą osobę, która widzi więcej i która potrafi ocenić skutek pewnych decyzji. Taka osoba jest w znacznie lepszej sytuacji, bo to jest właśnie przykład osoby, która może włączyć myślenie w pracy, a tym samym usprawnić komunikację.

Tymczasem praca z frameworkowca po bootcampie jest trudniejsza, ponieważ im cięzej może być zrozumieć co zespół mówi gdy nakreślają listę uwag do poprawy. Ciężej zrozumieć czemu tak się dzieje, cięzej temu zapobiec jeśli nie będziesz uczył się tego na pamięć.

Oczywiście, żeby nie było frameworki są pożądane, programiści którzy nimi operują też, ale lepiej przed frameworkiem z 1-2 lata poświęcić na naukę, gdzie tworzy się coraz większe rzeczy bez frameworków. Inaczej ciężko jest zrozumieć dlaczego pewne rzeczy układają się tak, a nie inaczej.

0

Ej, ale wiesz, jak uczysz się frameworka to po drodze też się uczysz innych rzeczy. To daje jednak pewne ramy (frame :)), na których się pracuje.

1

Z tymi frameworkami to problem jest trochę bardziej złożony. Jeśli osoba potrafi dowolnie manipulować pewnymi aspektami, które z reguły wymagają dopisek w raw języku, to dobrze wróży. Jeśli jest chłop, który tak jak wspomniano używa tylko i wyłącznie gotowych rozwiązań, to klęknie na pierwszym lepszym bardziej złożonym problemie. Nadal wszystko sprowadza się do rozumienia co tak na prawdę się nie dzieje.

12

Dobrze, wiemy już, że ktoś nie zna podstaw. A ja zastanawiam się dlaczego. Po trochu na pewno system edukacji.

@PerlMonk Moim zdaniem to jest wypadkowa kilku czynników. Jako dydaktyk na uczelni wyższej mogę powiedzieć, że na pewno system edukacji zatracił cel - z jakiego powodu? Nie wiem. System ma 3 typy uczelni wyższych: topowe np. PW / PG / PWr, które według własnego uznania stosują w jaki sposób uczą i jak tego przestrzegają. Są uczelnie o niskim standardzie np. wsb - gdzie każdy wie, że kandydaci z takiego miejsca są mocno życzeniowi i są uczelnie gdzieś pośrodku - z jednej strony muszą trzymać poziom z drugiej mieć niższy niż topowe uczelnie. Jak ja chodziłem na studia 1 roku, to uczelnia miała współdzielony system oceny studentów między wszystkie przedmioty, gdzie wrzucaliśmy zadania i automat testował pod względem poprawności, wydajności pamięciowej i obliczeniowej oraz edge case'ow. Na 3 trzeba było dobrze zaimplementować poprawnie algorytm / program + przemyśleć edge casey + obsłużyć wydajność. Przy 6-8 przedmiotach rocznie, gdzie na każdym pisało się od 1-4 projektów, nie było szans aby student, który sam zrobił nie miał w małym palcu podstaw programowania, nie ogarniał ArrayListy vs LinkedListy i innych rzeczy - bo to było wymuszane po prostu na nim. Więc jak czytam, że arrayLista vs linkedlista to zagadnienie javowe - to umiem tylko z tego się zaśmiać, bo to jest podstawa 1 roku studiów - nazywa się Algorytmy i Struktury danych, gdzie przez 6 miesięcy lub dłużej studenci klepią algorytmy w C na wskaźnikach by się nauczyć i na kartce papieru to rozrysować. Mało tego - idąc na informatykę, defacto to jest głównym przedmiot tego kierunku - bo na tym się opiera większość informatyki.

Teraz na 3 roku dostaję studentów, którzy nie umieją napisać w nowym języku imperatywnym fora po tablicy i wyprintować elementów pomimo pokazania składni - mało tego, nie umieją tego rozrysować na kartce papieru ani zrobić to w swoim domyślnym języku programowania "bo on nie programuje".

Co jest tego winą? W procesie uczenia jest kilka problemów:

  • dobrania odpowiedniego języka i przykładów do zobrazowania problemów i ich wytłumaczenia - przy zbyt dużych klasach / salach / grupach i za małej ilości czasu dla indywidualnych studentów, nie zawsze starczy aby im wszystko poprawnie wytłumaczyć. Wystarczy, że źle dobierzemy przykład, lub tą 1 rzecz, która mu sprawia problem nie zostanie wyjaśniona i jest problem. To odróżnia dobrego dydaktyka od złego moim zdaniem - umiejętność podejścia indywidualnego do jednostki / grupy i dostosowania poziomu nauczania do niego. Moim zdaniem da się wiele rzeczy wyciągnąć, ale trzeba czasem zaakceptować fakt, że grupa ma niższy / wyższy poziom niż nam się wydaje i się do tego zmodyfikować (niestety wykonać pracę)
  • wyegzekwowania trenowania / ćwiczeń w danym zagadnieniu. Programowanie to w dużej mierze rzemiosło - i nie da się uniknąć ćwiczeń. Ja po algebrze po kwartale liczenia całek i pochodnych do dzisiaj wyrwany w nocy umiem liczyć całki i pochodne, nie pamiętam wzorów ale umiem z nich skorzystać. Wchodzi to po prostu w nawyk. Tak samo moim zdaniem jest z programowaniem - trzeba naklepać się X lini kodu by w końcu coś weszło w pamięć, z automatu stosować wzorce, z automatu zacząć pisać testy czy wprowadzać w standard. Albo to ktoś wyegzekwuje na jakimś etapie albo ktoś sam to zrobi.
  • dyskusji w grupie - brakuje często takiej jakiejś chęci do zastanowienia się nad problemem i chęcią przedyskutowania tego indywidualnie, w grupie - po prostu taki defetyzm od strony studentów.
  • brakuj sensownych dydaktyków - pod względem umiejętności uczenia jak i pod względem technicznym i doświadczenia zawodowego (do nauczania poszedłem z branży a nie po uczelni od razu). Uczelnie musiałyby też zaakceptować, że ktoś kto umie produkować naukę nie jest dobrym dydaktykiem - to są dwa różne zestawy umiejętności i dwa różne etaty
  • dziekan przeważnie ma duże pole do popisu jeśli chodzi o modyfikację sylabusa roku / kierunku i żonglowanie tematami w ramach bieżących ustaw. Jest w stanie nawet ściągać ludzi z firm do prowadzenia przedmiotów na aktualnym poziomie jakie są stosowane na rynku - natomiast nie wywali większość kadry za niekompetencje czy nie narzuci im douczenia się - bo po prostu nie będzie miał kim robić studiów - niestety. Natomiast też jest ciężko skoordynować tyle osób i narzucić standard.
  • przez cały okres uczenia raz zostałem skontrolowany przez dziekana jak sobie radzę na zajęciach. Raz przez ministerstwo jak prowadzę przedmiot. Nie ma czegoś takiego jak code-review poziomu nauczania.
  • brakuje twardej relacji / współpracy między firmami a uczelnią, gdzie studenci by mogli iść na sensowne praktyki zawodowe i obie strony byłyby z tego rozliczane.
  • brakuje motywacji, chęci od strony studentów do wykonania pracy, przeważnie na grupę 30 studentów jest ledwo 1-2 osoby, które interesują się programowaniem i coś robią we własnym zakresie, jest większość mierna i parę osób co chce się prześlizgnąć. Przeważnie w codziennej pracy bardziej koncentruje się na pomaganiu wybitnym stać się lepszymi oraz z grupy miernej / słabej - tym, którzy chcą - wystarczy chcieć.
  • nie przepuszczania słabych studentów - egzaminy + kolokwia są dobrym motywatorem do pracy dla studentów, niestety człowiek potrzebuje rozliczenia w jakiejś formie
  • brakuje na uczelni ludzi, którym by się chciało i z wizją, którzy by mogli to poprowadzić. Dodatkowo moim zdaniem też brakuje na to zasobów.
  • brakuje jawnej wizji co uczelnia ma osiągać i jakiś rozdział między: uczelniami nastawionymi na produkcję nauki i nowych patentów i odkryć a uczelniami, które powinny być wyższą szkołą zawodową np. informatyka / programowanie.

To tak zgrubsza bieżące problemy uczelni wyższych na poziomie uczenia ludzi, które przychodzą mi na myśl.

1
MuadibAtrides napisał(a):

Więc jak czytam, że arrayLista vs linkedlista to zagadnienie javowe - to umiem tylko z tego się zaśmiać, bo to jest podstawa 1 roku studiów - nazywa się Algorytmy i Struktury danych, gdzie przez 6 miesięcy lub dłużej studenci klepią algorytmy w C na wskaźnikach by się nauczyć i na kartce papieru to rozrysować. Mało tego - idąc na informatykę, defacto to jest głównym przedmiot tego kierunku - bo na tym się opiera większość informatyki.

Ogólnie super, że udzieliłeś nam takiej wyczerpującej odpowiedzi i pokazałeś jak to wygląda z Twojej perspektywy jako pracownika na uczelni, natomiast tutaj wkradł Ci się bardzo silny bias - pamiętaj, że Ty jesteś tą osobą, która na uczelni ten czas spędza, operuje cały czas na tym, co Ty za podstawy uważasz. Tutaj chyba nikt nie podważał w tym temacie, że kandydaci na rekrutacji przez ścieżkę edukacyjną z takimi zagadnieniami przeszły. Tutaj bardziej porusza się kwestię tego, że po latach niepracowania na uczelni po prostu wiedza wyparowuje, bo zwyczajnie w praktyce ktoś się z jakimiś zagadnieniami po prostu nie stykał. Przykład jeden z wielu - ktoś pracował w Pythonie i pracował na listach, a teraz po latach wraca do Javy i pamięta, że były kolekcje, gdzieś tam z tyłu głowy ma wiedzę i jak będzie chciał użyć listy to będzie pamiętał, że trzeba zajrzeć do dokumentacji. I zajrzy. On w większości firm wcale nie musi znać na blachę wszystkich kolekcji.

3

Nie każdy studiował i nie każdy używa algorytmów w pracy. Ogólnie wdziera się myślenie, ja pamiętam, implikacja ->inni też pamiętają. Jak nie pamiętają, to mieli złe studia/nie byli pojętni i ledwo przeszli. A to już pochopny wniosek.

Dla firmy mogą liczyć się bardziej inne rzeczy, niż to czy ktoś pamięta semestry studiów z algorytmami. Wymaganie przez OPa podstaw z javy, na stanowiska juniora javy, wydaje się rozsądne - to nie są ciężkie zagadnienia i można przejrzeć je godzinę przed rozmową żeby się nie zaciąć, z fibonacim to zależy jak to jest poprowadzone przez rekrutera.

Dostawanie pytania z algorytmu na zasadzie - pamiętasz ze studiów albo nie - moim zdaniem nie tędy droga, chyba że stanowisko tego wymaga. Lepiej już zbadać logiczne myślenie, umiejętność komunikacji problemu. Znam osoby które pamiętają numer seryjny wszystkiego, ale z którymi nie chciałbym pracować.

2

Nie wiem czy już ktoś nie wrzucił https://www.darkcoding.net/software/a-day-in-the-life-of-a-professional-software-engineer/?fbclid=IwAR0lsyh3pb_b99S2qinJZd9hM7zNDU2HcDTxuVAkaPo_gPk2w6Njno-OmbM

Co do tematu, po części się zgadzam, ze to co OP wypisał powinno jednak być w miarę opanowane przez wannabe juniorów. Nie dlatego, że potrzebują liczyć fibonacciego w pracy, ale dlatego, że pokazuje to że szanują czas swój i potencjalnego pracodawcy i przed rozmową poświęcili parę godzin na przejście najbardziej typowych pytań.

Z drugiej strony, takie pytania powinny zająć parę minut i tyle, bez wchodzenia za bardzo w szczegóły i odpytywania z dokumentacji. Za to główną część rozmowy powinny według mnie zająć bardziej życiowe pytania:

  • zrób code review, nie koniecznie żeby kandydat mógł się popisać znajomością abstract factory, ale żeby wyłapał oczywiste błędy, jak potencjalny NullPointerException czy użycie float do przechowywania $
  • pytanie typu "masz taki i taki system, z produkcji wpadł błąd X, co robisz?". Przykład z mojej firmy, junior przez 3 dni "debugował" (console.log()) frontend, podczas gdy błąd leżał po stronie bazy danych.
  • masz 3 zewnętrzne API, zaprojektuj system który zagreguje z nich dane i możliwie szybko wyświetli je użytkownikowi. Tutaj już można się popisać, WebSocket, kolejka, wątki, zależy co dany kandydat potrafi. Na plus oczywiście jak zaproponuje sensowną obsługę błędów

I wiele podobnych, które IMO dużo bardziej pokazują co kandydat potrafi. Na pewno lepiej niż odpytywanie z algorytmów, których nigdy nie użyje pisząc CRUDa, albo sprawdzanie znajomości dokumentacji.

2

Może ja się wypowiem. Nawet jeśli ktoś ma doświadczenie, wydaje mi się że znajomość czy nieznajomość "podstaw" zależy od po prostu dziedziny w której się porusza. Przykładowo, klepiąc w .NETcie, miałem takie sytuacje że przez pół roku potrafiłem nie napisać żadnej pętli for, a używałem tylko foreach - działałem po prostu na zbiorach danych, i zwykła pętla nie była mi do niczego potrzebna. Nie klepałem nic algorytmicznego, etc. No i co? Zapomniałem jak się pisze najprostszego "for'a", co nie było problemem bo wystarczyło mi zerknąć na 15 sekund dosłownie do jakiegoś kodu. Tak samo "rekurencja" - przez moje 4 lata "ogólnego" czyli hobbystycznego i komercyjnego doświadczenia użyłem rekurencję może z trzy razy. Warto wiedzieć że niektóre rzeczy istnieją, ale po co mózg zasyfiać urywkami kodu, co, gdzie i jak? Również powiedzmy modyfikatory dostępu - tak na prawdę spotkałem się z trzema, public, private, protected. Inne praktycznie w bazach kodu wydaje mi się że nie istnieją, albo nie miałem z nimi styczności.

Powiedzmy sobie szczerze, większość ofert jest dla "klepaczy kodu" - więc pytania też pod takich ludzi jak ja powinny być dostosowane. Chcesz nie wiem, inne tło na stronce, albo mam dodać jakieś fajne filtrowanie na backend? Spoko. Do tego się nadam, tu miałem najwięcej doświadczenia. Chcesz replikator danych do pięciu różnych baz danych? Okej, to też ci siepnę. Masz trudny problem algorytmiczny wymagający dużej wiedzy z algorytmiki, matematyki i tak dalej? Sorry, szukaj kogoś innego bo ja się nie nadaję :P

2
FlabbergastedPenguin napisał(a):

Warto wiedzieć że niektóre rzeczy istnieją, ale po co mózg zasyfiać urywkami kodu, co, gdzie i jak?

Jeśli chodzi o znajomość na pamięć kolejności parametrów danej metody to oczywiście bez sensu zaprzątać sobie tym głowy, a jeśli o to pytają, to po prostu najlepiej wyjść, bo nic dobrego z takiej rekrutacji nie wyniknie.
Ale składnie języka to jednak wypada znać.

Również powiedzmy modyfikatory dostępu - tak na prawdę spotkałem się z trzema, public, private, protected. Inne praktycznie w bazach kodu wydaje mi się że nie istnieją, albo nie miałem z nimi styczności.

Trzeba tylko wziąć pod uwagę, że protected świadczy o dziedziczeniu, więc zasadniczo powinien występować relatywnie rzadko. Najczęstszy jest internal, bo przecież nie upublicznia się każdej klasy, a jedynie API danej jednostki organizacyjnej kodu.

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