Dlaczego "juniorzy" nie mogą znaleźć pracy

21

Ciekawy koncept, który kiedyś przećwiczyłem . Jak już przygotujemy sobie test do przemaglowania kandydatów (musi być szybki typu - a,b,c,d)... to można dać ten test do rozwiązania obecnemu zespołowi.
Jest to wyjątkowo wredne .. i daje do myślenia.

5
jarekr000000 napisał(a):

Ciekawy koncept, który kiedyś przećwiczyłem . Jak już przygotujemy sobie test do przemaglowania kandydatów (musi być szybki typu - a,b,c,d)... to można dać ten test do rozwiązania obecnemu zespołowi.

Jest to wyjątkowo wredne .. i daje do myślenia.

Ja tak swego czasu robiłem. Jak doświadczeni programiści wykładali się na czymś, to pytanie najcześciej wywalałem uznając za mało miarodajne.

Najlepiej sprawdzały mi się pytania, która potem można użyć za punkt wyjścia do otwartej dyskusji na temat głębszego tematu.

3
WhiteLightning napisał(a):

Pod katem procesu rekrutacyjnego zazdroszcze lekarzom. Idziesz pokazujesz papiery, ustalasz godziny pracy dogadujesz sie o stawke i tyle. Nikt nie pyta czy np. hobbistycznie operujesz kurczaki wieczorami, albo czy w ramach pet projectow leczysz sasiadow po godzinach.

I dlatego właśnie polski system zdrowia jest jednym z gorszych w europie. A przychodzi covid, lekarze z nfz'tu robią sobie co chcą. (a o dziwo słyszałem gdzieś, że Polska ma jednych z najlepszych specjalistów z IT na świecie)

Myślę, żew IT jest bardzo podobnie do lekarzy o ktorych wspominacie. Jak taki mgr/doktor studiów informatycznych pójdzie do rządowej spółki i za sam papier dostaje robotę. A później "is_pies" to ich najmniejsze zmartwienie.

Miałem "przyjemność" mieć kontakt z ludźmi co przebimbali studia medyczne i dostali robotę za sam papier i tacy sobie lądują na SOR'ach i innych ubojniach ludzi.
Korzystałem też z usług chirurga-fachowca co faktycznie wracał po pracy "robił" operacje, pisał artykuły do gazet medycznych, prowadził badania nad swoją działką i dokształcał się. Kontakt z nim był przyjemny i bardzo wartościowy (bezoperacyjnie rozwiązal problem, którego chirurdzy neurolodzy z NFZ i luxmedu nie byli w stanie, a kierowali mnie na cięcie) ale też bardzo bolesny dla mojego portfela (250zł - 30min).

4

Mąż mojej kuzynki jest kardiochirugiem. Napierdziela po świecie na różnych konferencach. Moja kuzynka w wieku 40 lat obroniła doktorat, jest ginekologiem, Przez pewien czas chodziłem do gastrologów z problemami które na całe szczęście "same" mineły. Najwięcej pomógł mi lekarz o którym bylo widac że na bieżąco śledzi branże, standardy leczenia itp.
Więc te porównania lekarz vs programista są śmieszne, tzn domyślam się że @Shalom wrzucił to dla beki, ale chyba rzeczywiście ludzie w to wierzą.
PS.
Mnie nikt nigdy nie pytał o open-source, fora, stackoverflow ani czy prowadze bloga, no ale to dowód anegdotyczny więc mało naukowy.

2
Interpod napisał(a):
WhiteLightning napisał(a):

I dlatego właśnie polski system zdrowia jest jednym z gorszych w europie.

Po 1 czy na zachodzie rekrutacja wygląda inaczej?
Po 2 nie wiem jaki jest system zdrowia, ale na zachodzie lekarze z przychodni leczą jeszcze gorzej niż w Polsce. Na wszystko aspiryna albo antydepresanty.

5

Tak z boku - uwielbiam te eskalacje tematów na 4p :D

Zaczęło się od zamiany ciągu Fibonacciego z rekurencji na liniowy. W tej chwili wiemy, że to zadanie jest "be" bo:

  • wszyscy bez wyjątku wykładamy się na podstawach
  • junior może go nie przejść
  • nikt nie będzie pamiętał algorytmu Djikstry
  • kolizje brył to w gamedevie, nie w programowaniu
  • ktoś kiedyś się spotkał z sytuacją, że dali jakiś ultrahard przykład z Codility juniorowi
    itp. itd.
2

Heh, z takim podejściem jak tutaj sporo ludzi prezentuje to ja się nie dziwię że potem twierdzicie że w firmie same CRUDy się robi, nikt was przecież do niczego ambitnego nie zatrudni xD
Narzekanie na konieczność napisania fibonacziego, WTF xDDDDD
Przecież to jest lvl tylko lekko wyżej niż hello world a wy już z tym macie problem xD

0

Mnie to zaskakuje, że ktoś nazywający się "programistą" ma problem z manipulacją dwoma zmiennymi. A co jak funkcja będzie miała ze 3 argumenty, trochę logiki aby je obrobić, i jeszcze nie daj Boże coś trzeba będzie zwrócić???

11

Wy udajecie czy serio nas nie rozumiecie?

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.

Jeśli twoja praca polega na obliczeniach RealTime np śledzisz obiekty poruszające się z dużą prędkością to lepiej jest dać zadanie gdzie gość będzie musiał wykorzystać jakieś prawo z fizyki. Ale na boga jak oprogramowuje bankomat to nie potrzebuje by junior znał się na algorytmice albo wiedział co to liczby urojone :| To standardowe oprogramowanie z GUI i api za sobą czyt CRUD.

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

2

@YourFrog2: wszystko racja, ale pamiętasz jak padding w JSie popsuł pół Internetu? ;)

0

@YourFrog2: Właśnie robię RCA dlaczego pewien zespół nie może sobie poradzić z pobraniem plików. Niby banalne jak piosenki Martyniuka, a nie potrafią poradzić sobie z błędem przez kilka miesięcy. Ale oczywiście "po co komu algorytmy, albo po co komu wiedzieć czym jest FSM".

1

@piotrpo: Ale ty widzisz czego dotyczy temat? To są pytania dla juniora.

Nie wiem jak wy obsługujecie pobieranie pliku w swojej aplikacji bo możecie mieć własny algorytm który pobiera pliki częściami jak kiedyś robił np Emule czy inne Kazy. Ale żaden junior nie machnie takiego programu na TCP, a pewnie dodatkowo otwieracie połączenia na udp'ie w oddzielnym wątku który może działać po zminimalizowaniu aplikacji. Jasne że maszyna stanowa to fajny wzorzec ale też często nadużywany. Ja kiedyś zastanawiałem się jak zrobić różne animacje postaci 2D na frame'ach i maszyna to upraszcza maksymalnie jak się da (oczywiście nie za darmo)

Spójrzcie prawdzie w oczy 90% rynku to apki po HTTP'ie ze zwykłym api po reście. Już nawet mało kto zna różnice między SOAP, REST a Binarnym protokołem itp. Robicie z siebie wielkich programistów, a powiedzcie tak szczerze co robiliscie zawodowo max w życiu?

Śmiem twierdzić że napisanie algorytmu do problemu plecakowego (Ta tego nie rozwiązywalnego) było trudniejsze niż zrobienie migracji 4 systemów z paroma mln klientów i bazami liczonymi w TB. Podpinanie się do zewnętrznych dostawców czy sortowanie listy < 100 elementów naprawdę nie wymaga znajomości bóg wie czego.

Ilu z was jak czyta pliki np xml / csv to zasysa go całego do pamięci?

Nie chce wywoływać g**no burzy ale wymagacie od juniora znajomości algorytmów które są zbędne. Weźcie sobie kartkę papieru i spróbujcie napisać implementacje ArrayList, LinkedList, Two ways list, one way list, stosu, jakiś b-tree index itp. bez patrzenia w internety. Jak macie inteligentnego kandydata który rozumie co się do niego mówi to można mu DAĆ ZA DARMO książkę https://helion.pl/ksiazki/piramidy-szyszki-i-inne-konstrukcje-algorytmiczne-maciej-syslo,pirami.htm#format/e i po tygodniu będzie znać te ZAJEBIŚCIE WAŻNE algorytmy...

2

@YourFrog2: Jaki niby super zbędny algorytm jest tym, którym męczymy tych bogu ducha winnych biedaków? Pętla z licznikiem? Sumowanie 2 wyrazów, żeby dostać 3?

8

Mawiają, że syty głodnego nie zrozumie.
W tym przypadku programiści nie zrozumieją crudowców i ich strachu przed dodawaniem.

1

Mi podobają się rozmowy na wzór tego: Tylko nie jestem pewien czy na juniora by się to opłacało.

3

OK żeby sprowadzić temat na ziemię bo już nie mogę czytać tych odlotów.

Cały czas mówimy o zadaniu polegającym na napisaniu takiego kodu:

    private static int fibonacci(int n) {
        int a_n = 0;
        int a_nplus1 = 1;

        for(int i = 0; i < n; i++) {
            int a_next = a_n + a_nplus1;
            a_n = a_nplus1;
            a_nplus1 = a_next;
        }

        return a_n;
    }

Napisanie tego dla średnio rozgarniętego 15-latka to jakieś 5 minut. To nie jest algorytmika tylko zupełnie podstawowe zadanie z programowania zanim ktoś zrozumie co to jest tablica, obiekt, API itd. Prostsze zadanie to już tylko wypisanie wszystkich liczb od 0 do N. Nie potraficie tego napisać? Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować. Czy będziecie pisać fibonacciego w pracy? Nie ale wyłożycie się na tasku który wymaga czegoś więcej od delegowania wywołań i trzeba będzie was wiecznie kontrolować. Bo nie potraficie programować tylko deklarować metody i przeklejać kod.

YourFrog2 napisał(a):

@piotrpo: Ale ty widzisz czego dotyczy temat? To są pytania dla juniora.

Nie chce wywoływać g**no burzy ale wymagacie od juniora znajomości algorytmów które są zbędne. Weźcie sobie kartkę papieru i spróbujcie napisać implementacje ArrayList, LinkedList, Two ways list, one way list, stosu, jakiś b-tree index itp. bez patrzenia w internety.

Wyobraź sobie że kiedyś pisałem na kartce listę dwukierunkową w rekrutacji do Ocado i dostałem max punktów. Nauczyłem się co to jest lista i drzewo w liceum z mądrej ksiązki o Pascalu i nie wiem jakim cudem miałbym zapomnieć na czym to polega. A jak wiem na czym to polega to mogę to zaimplementować na kartce papieru z głowy po prostu wymyślając wszystkie operacje na poczekaniu bo umiem programować. Na tym polega programowanie że piszę program z głowy a nie kopiuję z internetu.

3

Ja tylko napisalem, że nie uważam zadań tego typu (i nawet powielałem wiadomość, że nie chodzi mi tylko o Fibonacciego, który oczywiście jest banalny) za najwłaściwszą formę sprawdzania wiedzy, bo zwyczajnie nie sprawdza nic poza elementarnym pisaniem kodu, a do tego jak się jeszcze trafi na nieodpowiednio przedstawione polecenie, to można uwalić mimo że jednak nie jest się na poziomie dno i wodorosty, np. gdyby mi polecono napisać bubble sort to nie wiem czy bym to zrobił (na rozmowie bym dopytywał jesli bym miał możliwość, no ale zrobić ot tak na sto procent - nie wiem), bo zwyczajnie nie pamiętam które to, chociaż wydaje mi się, że wiem i że pewnie bym napisał. Znam ludzi, którzy piszą sobie kod w pytongach czy wyklikują coś w różnych ETLach i nigdy pewnie nawet z pojęciem bubble sort się nie spotkali (bo nie studiowali kucotroniki ani z typowych dla kucotroników materiałów). Czy oni są jacyś gorsi ode mnie z tego powodu? Powinni mieć gorszy wynik na rekrutacji z tego powodu? No ja tak nie uważam.

A, i fakt, że Ty się czegoś nauczyłeś z mądrej książki i do tej pory pamiętasz, to dotyczy on tylko Ciebie. Wiele osób czyta mądre książki i zaraz treści nie pamięta. Co więcej, to nie jest nietypowa sytuacja tylko tak wygląda pamięć normalnej osoby. Uważam że super, że masz dobrą pamieć, zazdroszczę Ci jej, ale rozciąganie Twoich zdolności na całą populację po prostu pokazuje, że nie potrafisz podejść do tematu z dystansem.

4

Nauczyłem się co to jest lista i drzewo w liceum z mądrej ksiązki o Pascalu i nie wiem jakim cudem miałbym zapomnieć na czym to polega.

Może i struktury danych ludzie pamiętają, ale wątek jest o pisaniu algorytmów z pamięci. Nie napisałbym pewnie z pamięci nawet Dijkstry po studiach. Zresztą nie każdy szedł na studia i tacy ludzie też programują. Jeżeli chodziło Ci o algorytmy, to pogratulować pamięci, ale nie wszyscy tak funkcjonują.

15 latkowie programujący fibonaciego z pamięci albo wykonujący polecenie "przekształć to na wydajniejszy" ? Nie wiem kto tu odleciał troszkę.

Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować.

Ale my tu mówimy o realiach czy o tym kto jest fajny z programowania?

4

Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować.

A BTW, dlaczego większość specjalistów jak zahaczy o rekrutacje z tej drugiej strony to później stara się wszystkim udowodnić ze ma większego JSONA-a?

1

@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. Mało tego ten kod jest tak oklepany że znajdą się osoby które go pamiętają 1:1 i ich nie odsiejesz.

Inaczej bym powiedział gdybyś mówił o zadaniu "dany jest ciąg liczb 0, 1, 2, 3, 5, 8, 13" napisz program wyświetlający "n-ty wyraz w ciagu". Bo w tak skonstruowanym zagadnieniu sprawdzasz czy kandydat potrafi wykorzystać posiadaną wiedzę do problemu który napotkał.

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.

Powtórzę raz jeszcze. Paradoksalnie to Ci co w tym wątku postulują nie robienie zadań jak w/w ciagu fibonaciego wymagają większej wiedzy od kandydata.

1
ToTomki napisał(a):

A, i fakt, że Ty się czegoś nauczyłeś z mądrej książki i do tej pory pamiętasz, to dotyczy on tylko Ciebie. Wiele osób czyta mądre książki i zaraz treści nie pamięta. Co więcej, to nie jest nietypowa sytuacja tylko tak wygląda pamięć normalnej osoby. Uważam że super, że masz dobrą pamieć, zazdroszczę Ci jej, ale rozciąganie Twoich zdolności na całą populację po prostu pokazuje, że nie potrafisz podejść do tematu z dystansem.

Ale co mam specjalnego pamiętać, lista to ciąg elementów z których każdy ma wskaźnik czy referencję na element kolejny albo kolejny i porzedni. Drzewo binarne ma wskaźnik na lewe i prawe poddrzewo. Co więcej mam pamiętać?

15 latkowie programujący fibonaciego z pamięci? Nie wiem kto tu odleciał troszkę.

A co niby innego programują 15 latkowie zanim nauczą się co to są tablice? Wczytaj dwie liczby i wypisz sumę, wczytaj N i wypisz wszystkie liczby parzyste od 0 do N, wczytaj N i wypisz N-ty element ciągu arytmetycznego albo Fibonacciego.

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. Mało tego ten kod jest tak oklepany że znajdą się osoby które go pamiętają 1:1 i ich nie odsiejesz.

Oczywiście że sprawdza warunek konieczny jakim jest umiejętność napisania jakiegokolwiek elementarnego kodu. To jest warunek konieczny do dalszego sprawdzania kandydata a nie wystarczający. Wystarczający to by były jakieś cuda jak na rekrutacji do Google ale nie o tym mówimy bo nie potrzebujemy geniusza od algorytmiki tylko zwyczajnego programisty.

2
p_agon napisał(a):

Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować.

A BTW, dlaczego większość specjalistów jak zahaczy o rekrutacje z tej drugiej strony to później stara się wszystkim udowodnić ze ma większego JSONA-a?

Bo #15k nie wystarczyło, żeby podtrzymać ich kruche ego ;) . A tak poważnie, to możliwe, że dalej w ich przekonaniu nie wolno być przeciętnym i zapomnieli jak to jest zaczynać karierę i się uczyć.

0

@The Pontiff: Z tak postawioną tezą że jest to pytanie "rozgrzewkowe" żeby były pierwsze koty za płoty albo w ramach small talku to faktycznie się zgodzę.

Np "Dzień dobry, tak z ciekawości aby ustalić poziom naszej rozmowy powie nam Pan/Pani coś o dowolnie wybranym przez Pana/Pani algorytmie, strukturze danych albo o tym jak działa komputer. Jeśli nie to ja tutaj mam dla Pana/Pani ciąg liczb i jakby mi Pan/Pani mógł o nim coś opowiedzieć albo napisać program jak ten ciąg jest generowany". To fajny patent na zrekrutowanie ogarniętego juniora.

9

Jeśli chodzi o zadania rekrutacyjne to moim zdaniem dużo lepsze od 17 metod liczenia fibonacciego (ciekawe ile osób da radę rozwiązać to jako jednorodne równanie rekurencyjne / funkcje tworzącą i wyprowadzić wzór który daje n-ty wyraz w O(1), albo wyprowadzić z palca wzór macierzowy na O(logn)), są zadania w stylu tych z Advent of Code. Sam chyba zaczne dawać ludziom adwentowe zadania :) Czemu uważam ze są dobre?

  1. Są proste i da się je zrobić w 15-20 minut
  2. Wymagaja zrozumienia wymagań
  3. Wymagają sparsowania jakiegoś dziwnego formatu na wejściu
  4. Wymagają ogarnięcia jakichś prostych przekształceń danych, zwykle jakiejś listy, mapy, seta, grupowania, zliczania
  5. Wymagają wygenerowania wyjścia w zadanym formacie

Czyli generalnie sprawdzaja praktycznie dowolny task z jakim spotka sie programista.

2

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.

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

"Nie rozmawiamy o algorytmach tylko o napisaniu programu który dodaje dwie liczby. Proszę spróbować to napisać. Nie chce pan spróbować? Dobrze dziękujęmy skontaktuje się z panem dział rekrutacji"

0

Nie no jakbyśmy chcieli program co dodaje liczby do siebie to by nam pierdzielnął jeszcze ONP.. Ale wyjaśniłbyś mu na czym polega dany algorytm? W sensie rzucałbyś wędkę żeby zrozumiał problem który ma rozwiązać? Może odejdźmy od fibonaciego mówiąc po prostu jakiś algorytm? Bo to w zasadzie NIE MA znaczenia którego kandydat nie zna. Po prostu spotkał się z tym co my się spotykamy przy normalnej pracy czyli nie umiem ale się nauczę.

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.

2

@The Pontiff:
Z góry założyłeś, że zadanie polega na podaniu któregoś elementu ciągu fibonacciego. Nie dopytałeś. Rekruter mówi, że chodziło mu o napisanie kodu na otrzymanie ciągu fibonacciego do n-tego elementu. W tym momencie oblałeś.

Pozdrawiam.

1

Tak mi się przypomniało odnośnie tej dyskusji. Polecam sobie obejrzeć w wolnej chwili.

3

Rozwiązanie rekurencyjne nie musi być wolne :P

import java.util.*;

public class WriteOnly{
  private static long  fib(Map<Integer, Long> cache, int n) {
      return n == 1 || n == 2 ? 1 : cache.computeIfAbsent(n, k -> fib(cache, n-1) + fib(cache, n-2));
  }

     public static void main(String []args){
        Map<Integer, Long> cache = new HashMap<>();    
        System.out.println("WriteOnly " + fib(cache, 100));
     }
}

I wersja na BigInteger:

import java.util.*;
import java.math.*;

public class WriteOnly{
    

  private static BigInteger  fib(Map<Integer, BigInteger> cache, int n) {
      return n == 1 || n == 2 ? BigInteger.ONE : cache.computeIfAbsent(n, k -> fib(cache, n-1).add(fib(cache, n-2)));
  }

     public static void main(String []args){
        Map<Integer, BigInteger> cache = new HashMap<>();    
        System.out.println("WriteOnly " + fib(cache, 1000));
     }
}

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