Rant na temat rekrutacji w Polsce (i nie tylko?)

Rant na temat rekrutacji w Polsce (i nie tylko?)
ItsFine
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 miesiące
  • Postów:44
15

Chciałem to napisać po prostu w ""Rekrutacyjne WTF" ale nie wiedziałem jak to ująć, bo raczej nie miałem problemu z jakimiś konkretnymi rekrutacjami. Miałem problem z prawie każdą i to zwykle ten sam. Dodatkowo, mam wrażenie że to, że rekrutacja była przeprowadzona w przyjemny i logiczny sposób bardzo pozytywnie wpłynęło na mój ostateczny wybór firmy. Gadałem z kilkoma znajomymi, którzy uważają tak samo jak ja. Po rekrutacji natrafiłem jeszcze na poniższy filmik, który dokładnie ujął to co chciałem przekazać, ale mówił o rynku programistów w USA.

Standardowa rekrutacja

TL;DW: Algorytmiczne interview polegają na wkuwaniu na pamięć, a to co sprawdzają czyli kodowanie na czas i pod presją, nie przyda się w 90% firm.

W Polsce mamy podobnie, ale często zamiast algorytmicznych problemów dostajemy dosłownie pytania które sprawdzają czy kandydat wie coś, co można wygooglować w 5 sekund. I tutaj mamy jeszcze dodatkowy problem z rekrutacjami on-line, gdzie faktycznie jest to możliwe, nawet bez wiedzy rekrutera. W niektórych rekrutacjach dosłownie udzielałem odpowiedzi "nie wiem, ale jak chcesz to wygoogluje Ci odpowiedź jak dasz mi 10 sekund" i obstawiam że nie było to pozytywnie odbierane.

Jak zostać w Polsce Programistą 15k

  1. zapisz się na 15 interview na Seniora, najlepiej żeby były zdalne
  2. Na każdym zapisuj pytania i wkuwaj na pamięć odpowiedzi (albo po prostu miej je spisane na drugim ekranie)
  3. Na pierwszych pięciu prawdopodobnie Cię 'wyśmieją, ale zapisuj pytania i nie przejmuj się.
  4. ???
  5. Profit! Na kolejnych dziesięciu dostaniesz ofertę pracy jako Senior Developer, możliwe że z wyższą stawką niż początkowo chciałeś.

Naprawdę żaden z rekruterów nie widzi problemu z takim podejściem? Z moich rozmów wynika że doskonale zdają sobie sprawę że kandydat bierze udział w wielu procesach rekrutacyjnych, ale powtarzalność pytań rzadko zdaje się im zapalać nad głową lampkę.

Inne typy rekrutacji, albo czy da się jeszcze pogorszyć ten proces

Tutaj będzie moja sekcja "Rekrutacyjnych WTF":

  1. Kodowanie w Google Docs, oczywiście na czas i głównie sprawdzające jakie metody/funkcje znasz
  2. Kodowanie na czas gdzie jednocześnie wymaga się rozwiązania dobrego i przemyślanego, ale również kompilującego się i działającego.
    *Śmieszna anegdotka, miałem dwa "kodowania na czas" w rekrutacji do tej samej firmy, z innymi osobami. Po rekrutacji dostałem feedback:
    w pierwszym za bardzo skupiłem się na zadawaniu pytań żeby dostarczyć optymalne rozwiązanie i przez to nie dostarczyłem działającego rozwiązania na czas (w skrócie, koduj szybciej),
    w drugim co prawda dostarczyłem działające rozwiązanie, ale powinienem więcej czasu poświęcić na zastanowienie się nad algorytmem, bo nie był optymalny. You just can't win...
  3. Kodowanie na czas w którym główny nacisk nakłada się na używanie jednej, konkretnej klasy z którą ktoś mógł nigdy nie mieć do czynienia.
  4. Interviewer siedzi nad tobą i patrzy jak kodujesz, ale na pytania CO DO TREŚCI ZADANIA odpowiada lakonicznie lub wcale

Dobre typy rekrutacji

Jak można więc ten proces poprawić? Spotkałem się z kilkoma firmami które kompletnie inaczej podchodzą do rekrutacji i według mnie kilka kroków które bardzo pozytywnie wpłynęły na sprawdzenie wiedzy i satysfakcje kandydata:

  1. Wypytywanie z wiedzy w formie luźnej rozmowy o doświadczeniu do tej pory lub pracy w ostatniej firmie. Zadawanie pytań na podstawie tego co opowiada kandydat, na przykład: pracowałeś w TDD? To opisz jak to wyglądało. Zmieniłbyś coś? Co według ciebie było złego/dobrego w tym podejściu.
  2. Kodowanie NIE NA CZAS!!! Daj kandydatowi problem do rozwiązania i kilka dni na dostarczenie rozwiązania. Oczywiście szanujmy się i niech to będzie maks 2h kodowania, prosty problem. W ten sposób kandydat nie musi kodować pod presją i może zapoznać się z problemem, klasami, czymkolwiek co jest potrzebne.
    *Żeby upewnić się że to kandydat to pisał, zrób follow up call w którym mówisz "Klient zmienił troche wymagania, jak byś to wprowadził?" Albo po prostu wypytaj dlaczego tą część kodu napisano w taki sposób a nie inny, czy gdyby wymagania były takie i takie to zrobiłbyś to inaczej?
  3. "System design" interview, prawdopodobnie dopiero przydatne na wyższe stanowiska, ale bardzo dobrze sprawdza wiedzę z wielu zakresów. Według mnie interview z kodowania można by również poprowadzić w tym kierunku, tzn. rozmawianie o tym jakie rozwiązanie byś tu zaimplementował i dlaczego, bez pisania konkretnego kodu (albo tylko pseudokodu). Ale niestety nie spotkałem się z czymś takim

Am I being crazy?

Czy tylko ja widzę te problemy? Na pewno nie jestem ani najbardziej doświadczonym, ani (NA PEWNO) najbardziej błyskotliwym programistą. Nie jestem też jedynym programistą który chodzi na rekrutacje. Dlaczego pomimo tego wszystkiego, rekrutacje dalej wyglądają tak samo w 70% firm? Czy może ktoś mi to rozjaśnić i dać pozytywne strony tego na co właśnie narzekam?

randomize111
Imo może na takie firmy trafiłeś, bo ja raczej spotykałem się z tymi rzeczami z punktu "Dobre typy rekrutacji" niż te z "Rekrutacyjnych WTF", a co do "System Design" to w tych wielkich korpo to standardowy etap nawet dla osób z kilkoma latami doświadczenia
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:2787
2

W sumie jest tak jak piszesz, no może jednak ktoś bez doświadczenia nie zostanie programistą 15k chodząc jedynie na rozmowy - jednak ten brak doświadczenia prędzej czy później wyjdzie, często (zwłaszcza w instytucjach finansowych) jest też background check, który może też wykryć czy ktoś nie ma żadnego doświadczenia.

Czy tylko ja widzę te problemy? Na pewno nie jestem ani najbardziej doświadczonym, ani (NA PEWNO) najbardziej błyskotliwym programistą. Nie jestem też jedynym programistą który chodzi na rekrutacje. Dlaczego pomimo tego wszystkiego, rekrutacje dalej wyglądają tak samo w 70% firm? Czy może ktoś mi to rozjaśnić i dać pozytywne strony tego na co właśnie narzekam?

A dlaczego ludzie uważają BMW za samochód bardziej prestiżowy niż Opel? Dlaczego kobiety wiążą się z patusami? Dlaczego Putin zaczął wojnę zamiast żyć sobie w spokoju?

Bo tak po prostu działa świat ¯_(ツ)_/¯ można to zaakceptować lub nie

AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:minuta
  • Postów:973
1

Czemu ingorujesz kompletnie zalety takiego rozwiązania? Nie jestem jego zwolennikiem ale trzeba je zauważyć:

  1. Jeśli, ktoś potrafi szybko napisać algorytm to znaczy, że jest raczej inteligentny i poradzi sobie też dobrze z prostymi zadaniami. Jeśli możemy wybierać pomiędzy lepszym a gorszym programistą to wybierzmy tego lepszego.
  2. Jeśli ktoś wykuje te algorytmy to znaczy, że mu się chciało i potrafi zauważać wzorce - nawet jeśli nie jest inteligenty i tak może się przydać.

Zdalna praca dla Senior Python Developerów --> PW
SE
3. Potrafi wynalezc kolo na nowo, wiec mozemy rozwiazywac problem ktory zostal juz dawno roz...oh wait
LukeJL
Co do 1. to praca programisty to jest maraton, a nie sprint. Żółw wygrywa z zającem. Może ktoś będzie w stanie napisać algorytm w kilka minut, ale to nie znaczy, że sobie poradzi z projektem, który ciągnie się miesiącami. Zresztą czasami tak jest, że osoby, które znają się na algorytmach albo matmie, niekoniecznie są dobrymi programistami w sensie big picture (czyli umieją napisać algorytm, ale są kiepscy w architekturze, piszą kod najeżonymi złymi praktykami, ifologią, duplikacjami, brakiem odpowiedniej abstrakcji). Są jednocześnie zdolnymi programistami, jak i kiepskimi.
AN
Ale przecież pod innymi względami też tę osobę sprawdzasz tak jak resztę
ledi12
  • Rejestracja:ponad 5 lat
  • Ostatnio:25 dni
  • Lokalizacja:Wrocław
11
anonimowy napisał(a):

Czemu ingorujesz kompletnie zalety takiego rozwiązania? Nie jestem jego zwolennikiem ale trzeba je zauważyć:

  1. Jeśli, ktoś potrafi szybko napisać algorytm to znaczy, że jest raczej inteligentny i poradzi sobie też dobrze z prostymi zadaniami.

A jak ktos napisze go troche wolniej to inteligentny juz nie jest i nie poradzi sobie z prostymi zadaniami? Tego typu zadania weryfikuja jedynie umiejetnosc rozwiazywania zadan rekrutacyjnych na czas - nic wiecej.


Robię http response status cody w martwych ciągach
kevin_sam_w_domu
kevin_sam_w_domu
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:196
1

Nie są broken, mi zajmuje około 60-90 minut np. wyczaić kandydata czy ogarnia np. Java + Springa + AWS. Wystarczy poprosić o share'owanie ekranu i poprosić porobić parę rzeczy, od razu widać obycie.

edytowany 2x, ostatnio: kevin_sam_w_domu
MU
Kazujesz kandydatowi sharowac swoj wlasny ekran i robic zadania na jego infrastrukturze prywatnej? Czy dajesz mu wjazd na konto testowe AWSowe? Bo raczej dawanie wjazdu do zywej infrastruktury z danymi bez podpisania NDA jest niezgodne z prawem
UR
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:360
6
anonimowy napisał(a):

Czemu ingorujesz kompletnie zalety takiego rozwiązania? Nie jestem jego zwolennikiem ale trzeba je zauważyć:

  1. Jeśli, ktoś potrafi szybko napisać algorytm to znaczy, że jest raczej inteligentny i poradzi sobie też dobrze z prostymi zadaniami.

Albo farmił rok na leetcode, a zejsra się przy najprostszym casie biznesowym, napisze nietestowalny kod niezgodny z wymaganiami.

AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:minuta
  • Postów:973
0

@urke Przecież inne aspekty też mogą sprawdzić przy rekrutacji. Spotkałeś taka osobę co ogarnia algorytmy i farmila długo leetcode a nie potrafiła programować?


Zdalna praca dla Senior Python Developerów --> PW
TY
Osobiście wszystkie osoby jakie spotykałem, które wymiatały w algorytmice, były skrajnie beznadziejne w programowaniu web-appek
DB
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:227
12

Ja ostatnio przeszedlem sporo rozmow wysylalem na potege CV do roznych firm od software houes-ow az po kontraktornie i firmy produktowe.

Jak zaczynalem sie rekrutowac bylem Midem.... 3 msc i bodajze 9 technicznych interview pozniej juz bylem Seniorem....
Pierwsza oferte otrzymalem 18k b2b konczylo sie na ofertach 25k b2b. W 3 msc tak duzy "skok" umiejetnosci no po prostu "szok i niedowierzanie... "
Zaczynalem rekrutowac sie z marszu z kazdym kolejnym interview mialem "lepsze odpowiedzi"

przyklad nr 1: "Co to jest Singleton ?"

  1. interview: Wzorzec projektowy ze 1 instancja i ze antypattern (ze trudno testowac, i refactor psuje i efekt zlego desingu bla bla) ze praktyczne zastosowanie to logger.
  2. interview: to co wyzej + no i ze mamy singleton ze mozna go zaimplementowac tak czy siak i ze jest Borg ktory sie rozni tym czy tamtym - ladnie skladnie argumentowalem podalem przyklady z zycia itp itd.
    Tak szczerze to nie wiem zupelnie na jakiego grzyba mi ta implementacja Singletona i najpewniej to zapomne niedlugo.

przyklad nr 2: "SOLID"

  1. interview zasady znam mysle ze uzywam i wiem na czym polegaja - rozwinalem skroty o kazdym cos powiedzialem a przyklady na szybko w glowie jakies wymylilem - wmiare sensowne chyba :P
  2. interview to samo co wyzej w sposob przemyslany i przyklady mialem w glowie 'przygootoowane' i odpowieednio dobrane wczesniej zeby najlepiej odzwierciedlaly te zasady

przyklad nr 3: "Python GIL/ Threading itp" pytanie mordowane przez wszystkich :D

  1. interview - no i znowu wiem co to GIL ze concurrency ze zmiana contextu ze w IO Bound w sumie daje rade ze jest threadsafe itp itd
  2. interview - no a tutaj znowu to samo ale ladnie elegancko i rozszerzone o info o garbage collector w py o zasade dzialania + nawet obejrzalem sobie kilka filmikow na yt z pyconow gdzie python core developerzy o tym mowia i na rozmowie podalem nazwiska konkretnych kolesi

I tak wiekszosc standardowych pytan odnosnie teorii z programowania mozna "rozklepac" cos tam sie nauczylem utrwalajac ale tak naprawde usystematyzowalem wiedze i podrasowalem swoje odpowiedzi na pytania. Jestem takim samym januszem developmentu jak bylem i moj kod jest tako samo "dobry" albo tak samo "zly" niezaleznie jak pieknie odpowiadam na postawione wyzej pytania a Singletona typu Borg lada chwila zapomne albo juz zapomnialem...

Zmierzam do tego ze przy takich super teoretycznych rozmowach mozna wzglednie latwo podbic swoje "Seniority" cwiczac na interview a co za tym podniesc sobie stanowisko czy $.

Wiem ze Ameryki nie odkrylem ;p ale moze komus kto sie zasiedzial w 1 firmie otworzy to oczy tak jak mi.

edytowany 1x, ostatnio: DolBo
Zobacz pozostały 1 komentarz
DB
na LI ustawiasz przelacznik w profilu ze jestes otwarty na zmiane pracy.... czekasz 2-3 dni az skrzynka sie wypelni i wtedy ogien ! :D
randomize111
a, dobrze wiedzieć na przyszłość :D
DO
No i zobacz, ale jednak skilla sobie jakiegoś wyrobiłeś. Poszerzyłeś horyzonty, pogłębiłeś wiedzę, zorientowałeś się bardziej w temacie itd. Nie masz pojęcia ile ludzi nie robi nawet połowy tego co ty i jadą w januszexach na pensji poniżej 10000zł
DB
ja sie lubie uczyc ogolnie - pracowalem w niezlej firmie wmiare i za przyzwoita kase ale no mimo wszystko za dlugo w 1 miejscu - pierwszy raz uczylem sie "pod rozmowy" i moja wartosc jako pracownika dla firmy w zasadzie w ciagu tych 3 msc nie wzrosla/ nie zmienila sie a jednak jestem 'na rynku' inaczej postrzegany i wiecej 'warty' dla potencjalnych pracodawcow
MU
Dokładnie. Jakby nie patrzeć poszerzyles wiedze. Na tym wlasnie to polega. To moze specyficzny przyklad ale uczac sie w ten sposob roznych rzeczy kiedys w praktyce z nabyciem expa po czasie bedzie Ci łatwiej z tych puzzli skrawkow wiedzy w głowie cos sklecic
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 6 godzin
  • Postów:8409
2

Kodowanie NIE NA CZAS!!! Daj kandydatowi problem do rozwiązania i kilka dni na dostarczenie rozwiązania

Tylko, żeby to było ciekawe, a nie traktowanie kandydata jak przedszkolaka i podsuwanie zadania, które jest nudne, a jedynie sprawdza podstawy.

Dwie rekrutacje w dwóch firmach do projektu używającego biblioteki Three.js (grafika 3D w przeglądarce):

  • dobre zadanie - masz stronkę, która ładuje model 3D i umożliwia poruszanie kamerą (jest już napisany kod). To, co musisz zrobić, to 1. zadbać, żeby aplikacja nie kolidowała z eventami przeglądarkowymi (musiałem oczywiście pod Safari to dostosowywać specjalnie) 2. napisać zoom-to-pixel (i to był problem, nad którym się wiele godzin głowiłem, bo miałem istniejącą kontrolkę do obrotu kamery, ale nie wspierała zoom-to-pixel. I jak to zaimplementować w sprytny sposób? Plus musiałem wyobrazić to sobie geometrycznie i użyć odpowiednich funkcji do przeliczeń na wektorach).

Zadanie jednocześnie:

  • ciekawe
  • będące wyzwaniem
  • takie, które można spotkać na produkcji

I zrobiłem, nawet byli zadowoleni i przeszedłem do kolejnego etapu (co prawda później odpadłem po tym kolejnym, bo to ileś etapowa była rekrutacja)..

Dla odmiany zadanie z tej samej biblioteki w innej firmie na live codingu:

  • postaw projekt od zera i wyświetl tekst HelloWorld w 3D

I to spieprzyłem koncertowo. Byłem zestresowany, plus wtedy pisałem dłuższy projekt w Three.js i umiałem się posługiwać tą biblioteką, ale... zapomniałem, jak się stawia nowe projekty (co nie jest oczywiste, Three.js wymaga inicjalizacji - utworzenia renderera, sceny, kamery, świateł i dopiero później można cokolwiek wyświetlać. A jak się chce tekst wyświetlić, to trzeba najpierw załadować fonta itp. Więc łatwo się pomylić i co chwila się myliłem).

Tylko to zadanie niewiele sprawdzało tak naprawdę. Ale mam wrażenie, że gość, który mnie rekrutował, sam nie miał pojęcia o tej bibliotece i dał, bo myślał, że to powinna być chwila, że w 5 minut to zrobię. A robiłem jakoś 40 minut. Tylko, że w realnej pracy poświęcenie 40 minut na inicjalizację projektu to nie jest dużo. No i w moim CV był link do o wiele bardziej zaawansowanego projektu niż to zadanie rekrutacyjne, więc to też zabawne, że na zaawansowany projekt nie spojrzeli, a ocenili tylko po tym, że miałem pewne randomowe problemy w stawianiu nowego projektu od zera.

w Polsce

Pierwsza firma była międzynarodowa (podczas rekrutacji gadałem z ludźmi kilku kontynentów) i zajmowała się tylko 3D (software house ale robiący apki 3D).
Druga firma była polska, jakiś outsourcing chyba, i szukali programisty do konkretnego projektu, gdzie akurat było 3D.


edytowany 7x, ostatnio: LukeJL
KM
  • Rejestracja:około 9 lat
  • Ostatnio:około 8 godzin
  • Postów:86
0

Jezeli tak łatwo jest wykuć zadania typu leetcode, to dlaczego 90% kandydatów których przepytuję wywala się na części rozgrzewkowej? I połowa z nich nie potrafi zakodować prostej pętli.

Najgorsze jest to, że oni wszyscy przeszli wstępny screening... I wszyscy wiedzą jakich zadań oczekiwać w rekrutacji do FANG.

Zobacz pozostałe 12 komentarzy
KM
Pracuje w FANG. Mam feedback na każdym etapie rekrutacji, stąd wiem że tym najlepszym dają ofertę a oni odrzucają. Czasem dostaję cały pakiet z notatkami i ocenami innych np. żebym mógł się lepiej "skalibrować".
AM
cały pakiet z notatkami i ocenami innych ale to dopiero po rekrutacji?, żeby nie być biased
KM
Och tak, już jak wszyscy wysłałi swoje oceny i komitet podjął decyzję
randomize111
@kmle: to ciekawe, myślałem że w Polsce ludzie nie obeznani jeszcze z takim procesem to mogą iść "na żywioł" i dlatego takie sytuacje, a to w USA też się zdarza
ToTomki
Ale to że ktoś uważa, że grindowanie jest bez sensu to nie wiem jak można się dziwić, że "są to osoby, które takich zadanek nie przejdą", bo to brzmi przecież jak bycie konsekwentnym - jeśli uważam, że coś jest bez sensu, to nie robię rzeczy bez sensu ;d
Sensacyjny Sebastian
  • Rejestracja:ponad 5 lat
  • Ostatnio:dzień
  • Postów:382
5

Mówi się, że rekrutacje są po to, by znaleźć najlepszego kandydata. Ale "najlepszy" wcale nie musi oznaczać kogoś z największymi umiejętnościami technicznymi - firmy szukają ludzi, którzy będą w wstanie wtopić się w istniejącą strukturę i w niej pracować. Wielkie korporacje typu FAANG mają, generalnie, dwie cechy:

  1. Dużo korpobetonu
  2. Rozpoznawalną markę

Punkt pierwszy powoduje, że częścią sprawdzania culture fit musi być zdolność potencjalnego pracownika do radzenia sobie z corpobullshit typu konieczność zaklepania zmiany w projekcie przez hierarchię co najmniej 3 managerów, albo konieczność składania wniosków formalnych do działu zaopatrzenia, żeby dostać papier do drukarki. Masa ludzi będzie się źle czuła w takim środowisku - dlaczego więc nie zmienić środowiska?

Ponieważ punkt drugi - taki Goolag nie musi zamartwiać się tym, że ich proces rekrutacyjny poskutkuje odrzuceniem tego jednego kandydata na sto tysięcy, który jest technicznym superwymiataczem i naprawia bugi po prostu patrząc karcąco na komputery, aż bity ze strachu same się ułożą poprawnie - bo w ciągu roku przepracowują ponad milion kandydatów, więc takich gurusów jeden-na-sto-tysięcy przewinie się co najmniej dziesięciu. Dla kogo innego będzie to niepowetowana strata i zaprzepaszczenie okazji, które nadarza się raz w życiu - oni nazywają to kwietniem.

edytowany 1x, ostatnio: Sensacyjny Sebastian
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:27 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10056
9

Ale wiesz że to wszystko jest spowodowane tym, że w większości firm nie ma osób odpowiedzialnych za techniczną rekrutacje?

To wygląda tak że przychodzi manager, mówi: "mamy tutaj kandydata", i wybiera jednego z programistów w projekcie żeby go przepytał. Ale ten ktoś wcale nie musi umieć robić rekrutacji. Jego jedynym atutem jest to że już jest w projekcie, a rekrutowany nie. (Noi to że był wcześniej sprawdzony przez poprzedniego programistę).

edytowany 1x, ostatnio: Riddle
Zobacz pozostały 1 komentarz
Miang
bo nie ma technicznego manago
ToTomki
Jak ktoś jest słaby technicznie to już jest technicznym menago czy nietechnicznym?
Miang
@ToTomki: ale w jakim sensie słaby, bo jak nie rozumie po co mu w projekcie ktoś lepszy technicznie od niego to nie jest
ToTomki
Jak nurkuję w szambie to znalezienie przyczyny wyjebki aplikacji zajmuje mi 10x więcej czasu niż bym racjonalnie zadanie estymował.
Miang
no to jeżeli doceni tego gościa co znajdzie tę przyczynę i w ogóle se z aplikacją radzi a nie zastąpi go skończoną ilością studentów to jest
MU
  • Rejestracja:ponad 4 lata
  • Ostatnio:4 dni
  • Postów:102
4

Rekrutacja to jest coś czego nie ogarniam
jest to (z mojej perspektywy) jedyny moment gdzie trzeba wykazać się największą wiedzą, która z realną pracą ma co najwyżej mało wspólnego.

przykład z mojego życia - firma szuka ludzi bo trzeba zrobić mega integrację, system rozproszony, nacisk na performance i na współbieżność, na rozmowie przetrzepali mnie z asynchroniczności, jakieś szmery bajery, pipeline, channels, synchronizacje itp itd (.net)
po czym w pracy okazało się że trzeba na szybkości zrobić coś w starym synchronicznym systemie, bo nagle klienci się uruchomili. Nawet jednego asnyc await nie napisałem.
Liczyłem, że wiedza utrwali się i rozwinie w praktyce, tym czasem, moja wiedza dot współbieżności w .net zaczęła usychać (nic w tym dziwnego)

przykład nie z mojego życia, projekt kilkudziesięcioletni, praca w nim to głównie utrzymanie, biznesowo fajny, technicznie masakra - kolega kiedyś mówił, że sam nie wie jak ma rekrutować, bo czy senior czy mid czy junior, praca wygląda +/- tak samo, problem na twarz i pchasz, a senior od juniora to przede wszystkim różni się znajomością systemu i biznesu, a nie tzw. dojrzałością techniczną

moim zdaniem rekrutacja idealna to: masz kandydacie serdeczny kod, powiedz co on robi
kto będzie bliższy prawdy/szybszy ten wygrywa :)
może być też opis storyjki i powiedz kandydacie serdeczny co trzeba zrobić - jak farmaceuta w aptece odczytuje doktora, tak dev odczytuje PM-a, BA - czy jak tam zwał tą funkcję

bo w pracy kod to się głównie czyta, a tylko czasami pisze

z mojej perspektywy to główne problemy w pracy to:

  1. rozumienie biznesu
  2. komunikacyjne
  3. w jasnym formułowaniu myśli
  4. w czytaniu czy to dokumentacji czy to kodu (miałem kiedyś takiego pisarza historyjek, który tak dziwnie formatował tekst, że trzeba było zrozumieć jego formę/szablon, aby potem zrozumieć treść)
  5. w szukaniu, wiedzy, człowieka, łączeniu kropek - tzw zdolności analityczne

problemy techniczne, moim zdaniem, są najłatwiejsze do ogarnięcia

edytowany 1x, ostatnio: mussel
SE
przykład z nie mojego życia w takim wypadku najlepiej chyba zatrudniac juniorow/midow i nie zapominac o awansach
KamilAdam
@Senek: gorzej jak uciekną zaraz po awansie
SE
@KamilAdam: wlasnie chyba po to ich awansujesz zeby nie uciekli, zreszta jest to pewna analogia do kwestii szkolen: -Co jeśli przeszkolimy pracowników a oni odejdą? -A co jeśli ich nie przeszkolimy i zostaną?
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 dni
  • Lokalizacja:Warszawa
  • Postów:2251
3

Opiszę moje doświadczenia.
Nigdy na rekrutacjach nie dostałem dwóch takich samych pytan. Każda była inna. Najdłuższa trwała 2 godziny (techniczna część) i w tej pracy też zdobyłem najwięcej doświadczenia.

Na żadnej z chyba 20 rozmów nie miałem programowania na żywo, raczej jakiś prosty kodzik ogarnąć lub opisać jak bym coś zrobił.

@ItsFine: Mam wrażenie że aplikujesz tylko do samych korpo. Tam niestety masz czesto sztywne reguły i dzieje się to wszystko o czym pisałeś. Jednakże to pociąga za sobą duża rotację pracowników, często też kod bywa "różnej" jakości, bo może Ci się trafi zapyziały senior, co wszystkie rozumy pozjadał.

Myślę że problem rozwiąże się sam, gdy programiści po prostu nie będę brać ofert gdzie wymaga się kodowania na czas.

edytowany 2x, ostatnio: axelbest
Miang
łapka za ostatnie zdanie
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 11 godzin
  • Postów:5109
3

Ask HN: When did 7 interviews become “normal”?


Różni ludzie mają różne preferencje

Jak można więc ten proces poprawić? Spotkałem się z kilkoma firmami które kompletnie inaczej podchodzą do rekrutacji i według mnie kilka kroków które bardzo pozytywnie wpłynęły na sprawdzenie wiedzy i satysfakcje kandydata:
Kodowanie NIE NA CZAS!!! Daj kandydatowi problem do rozwiązania i kilka dni na dostarczenie rozwiązania.

Ja na przykład wolałbym dostać jakieś zadanko na pół h podczas rozmowy niż dostawać jakieś mini projekciki do zaklepania w swoim czasie.

A w dodatku im więcej etapów tym coraz gorzej to świadczy o rekrutujących

zapisz się na 15 interview na Seniora, najlepiej żeby były zdalne
Na każdym zapisuj pytania i wkuwaj na pamięć odpowiedzi (albo po prostu miej je spisane na drugim ekranie)
Na pierwszych pięciu prawdopodobnie Cię 'wyśmieją, ale zapisuj pytania i nie przejmuj się.
???
Profit! Na kolejnych dziesięciu dostaniesz ofertę pracy jako Senior Developer, możliwe że z wyższą stawką niż początkowo chciałeś.

a za jakiś czas zrywają z tobą współpracę / nie przedłużają umowy

serio, nie tylko ciężko mi sobie wyobrazić jakby taka osoba mogła funkcjonować w zespole, to dodatkowo słyszałem o takim przypadku gdzie pracownik (lub ex) danej firmy powiedział kandydatowi z czego tam pytają i faktycznie udało się gościowi przejść rozmowę

ale wywalili go chyba po 3 miesiącach.

@anonimowy:

Jeśli, ktoś potrafi szybko napisać algorytm to znaczy, że jest raczej inteligentny i poradzi sobie też dobrze z prostymi zadaniami. Jeśli możemy wybierać pomiędzy lepszym a gorszym programistą to wybierzmy tego lepszego.

inteligentny albo po prostu zetknął się z danym lub podobnym problemem

Na olimpiadzie z matmy również masz tzw. "wytrychy olimpijskie"

edytowany 11x, ostatnio: WeiXiao
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 6 godzin
  • Postów:8409
3
1a2b3c4d5e napisał(a):

Ask HN: When did 7 interviews become “normal”?
(...)
A w dodatku im więcej etapów tym coraz gorzej to świadczy o rekrutujących

Też tak myślałem, ale jak poczytałem o tym na HN, to zaczynam postrzegać to inaczej. Faktycznie po jednym etapie ciężko sprawdzić kandydata. Zatrudniasz randomów. I jak cię zatrudnią w takiej firmie, to dlatego, że miałeś farta/dobry timing. Jak cię odrzucą, to też raczej przez przypadek.

A wiele etapów, to dopiero jest coś. Rekrutacja staje się przygodą i czelendżem. Jako firma wtedy możesz faktycznie sobie ustawić jakieś swoje standardy rekrutacji i przefiltrować sobie wszystkich i zatrudniać tylko tych, którzy nie zostaną wyeliminowani po iluś etapach.

Jeśli zaś przejdziesz jako kandydat taką wieloetapową rekrutację, to poczujesz się mocny, że jednak ktoś cię sprawdził i że się faktycznie nadajesz, że to nie przypadek. A jak cię odrzucą, to też możesz się pocieszać, że przecież dotarłeś do któregoś etapu i przynajmniej zobaczyłeś, jakie pytania zadawali, to potem w następnej firmie będzie łatwiej.


edytowany 1x, ostatnio: LukeJL
Zobacz pozostałe 4 komentarze
Miang
nie czytaniem mojego cv , a wcześniej oferowaniem mi urlopu ;) całe 24 dni mi proponowała ;)
LukeJL
@Miang to źle, że ci proponowała urlop?
Miang
ale jak juz to by się należało 26 na UoP
LukeJL
może jej się coś pomyliło.
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 11 godzin
  • Postów:5109
1

@LukeJL:

Faktycznie po jednym etapie ciężko sprawdzić kandydata.

gdzie jest granica? 2 etapy? 3? 4? 5? 10? mam sobie rezerwować czas po pracy bo jakaś firma chce ze mną zrobić tygodniowy maraton rekrutacyjny? a co jeżeli rekrutuje do 2 czy 3 (co chyba i tak jest słabym wynikiem)?

to może urlop wezmę aby te wszystkie rekrutacje ogarnąć :D

Jeśli zaś przejdziesz jako kandydat taką wieloetapową rekrutację, to poczujesz się mocny, że jednak ktoś cię sprawdził i że się faktycznie nadajesz, że to nie przypadek. A jak cię odrzucą, to też możesz się pocieszać, że przecież dotarłeś do któregoś etapu i przynajmniej zobaczyłeś, jakie pytania zadawali, to potem w następnej firmie będzie łatwiej.

prędzej bym powiedział że od tego co faktycznie pojawiło się na tej rozmowie i ewentualnie gdzie się rekrutowałem, a nie ile było etapów

śmiem twierdzić że na 1 spotkaniu 1.5h czy 2x 1.5h można bardzo dużo rzeczy wyciągnąć z kogoś

edytowany 4x, ostatnio: WeiXiao
randomize111
to firma ustala ile ma etapów, jak komuś nie pasuje to się tam nie rekrutuje :d
WeiXiao
@randomize111: jak komuś nie pasuje to się tam nie rekrutuje nie, czemu?
AM
@randomize111: 'nie czemu?' bo jak firma oferuje ci 500k usd/y to ma swoje wymagania i jeżeli Twoim jest, że chciałbyś poświecić <5h na rekrutacje, bo jak się nie dostaniesz to Ci szkoda, to po prostu nie jesteś odpowiednim kandydatem
WeiXiao
@amd: (nie wiem komu w końcu odpisujesz, bo cytowałeś mnie, a jego oznaczyłeś, ale:) no właśnie? no to dlatego jak komuś nie pasuje N etapów to się nie rekrutuje nie do końca jest prawdą, bo dla dobrych ofert można przymknąć oko, ale nadal można uważać że N etapów jest słabe
AM
damn racja, żle mi się wkleiło, chodziło o @1a2b3c4d5e, ale każdy zgodzi się, że jest słabe tylko często nie ma innego wyjścia (dla firmy)
MU
  • Rejestracja:około 4 lata
  • Ostatnio:3 miesiące
  • Postów:270
3

Mysle ze Twoje problemy przy rekrutacji i kompleksy spowodowane są tym, ze jestes po prostu słaby i jeszcze brakuje Ci doswiadczenia/umiejetnosci. A odpowiedzi typu "jak chcesz to znajde w Google" pokazuja niejako postawe roszczeniową i cwaniacką. Niestety przy rekrutacji trzeba być miłym i przynajmniej udawać poczciwego. A jezeli nie znasz odpowiedzi na jakies pytanie, to trzeba wprost to przyznac + dobrze jest lać wodę i nawet jesli cos Ci sie wydaje ale nie jestes pewien to o tym mowic przedstawiajac swoj tok rozumowania.

Co do tych pytan typu "wykuj i bedziesz seniorem za 15k" to w skrajnych przypadkach moze tak byc, tylko jaki to ma senS? Jezeli jestes bardzo slaby to potem w pracy mogą to zweryfikowac lub/i bedziesz się bardzo w niej męczył.
Prawdopodobnie potem bedzie na forum kolejny temat typu Wylewanie żali, że nie wyrabiam się z taskami i zasuwam darmowe nadgodziny za frajer...

Niemniej jednak w ten sposob wyzej opisany mozesz przejsc rekrutacje w kontraktorni gdzie szukaja byle kogos zapchaj dziura na szybko do klienta byle prowizje zgarnac. Mozliwe nawet ze jak trafisz do jakiegos banku czy innwgo korpo do projektu gdzie jest burdel to jakos to bedzie i schowasz się w tle nawet bedac slabym.
Jednak gdy rekrutacja na seniora jest powiedzmy "normalna" nikt nie zadaje raczej tego typu pytan, tylko pytaja o use csy konkretne, problemy co bys zrobil wtedy i wtedy. Jezeli ktos umie prowadzic rekrutacje umie tez latwo wyczuc czy jestes ogarniety, slaby czy słaby + ściemniacz.
P.S. Najfajniej jest być ogarniętym + umies ściemniac gdy trzeba.

edytowany 1x, ostatnio: Misiek_Uszaty
WK
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:163
3

Jest pewien minut googlania w 10s. Można w 10s wygooglać jak wygląda pętla for each w danym języku, ale oczekiwałbym, że kandydat będzie to wiedział. Można w 10s wygooglać jakiś specyfiki w danym języku i można się przy tym upierać, że tenże specyfik jest rzadko potrzebny i znaczna część ludzi go nie zna, ale dla mnie to pokazuje, że ktoś z wieloletnim doświadczeniem był zainteresowany tematem i wgłębiał się w szczegóły, bo go to bawi i jest ciekawski. Ile rozmów sam przeprowadziłeś jako interviewer?

Zobacz pozostałe 4 komentarze
ToTomki
Jakoś mi w sparku są mało potrzebne
WK
Myślę, że jest to dość jasne, że mówię ogólnie i w przypadku scali byłoby to może coś w stylu jak dodać nowy element do listy.
KamilAdam
@WyjmijKija: wiesz że tego też nigdy nie pamietam? Może :+ a może +:
ToTomki
zwłaszcza że nie wiem kiedy ostatni raz dodawałem element do listy ;D. Raz w zadanku typu codility?
KA
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 2 lata
  • Postów:594
3

Ja sie przebranzawialem wiec wedlug mnie rekrutacje w IT są bardzo głupie. W poprzedniej branży głównie pytali o doświadczenie i czy to jest to co pasuje do firmy oraz o znajomość procesów itp. Ale kwiatków też nie brakowało tam gdzie był kreatywny dział HR.

Robiąc takie same rekrutacje dla ludzi z 6-10 lat doświadczenia trochę odbieram za brak szacunku czy lenistwa bo "taki mamy proces i co nam zrobisz i mam X ludzi na twoje miejsce".
Co ja czy inni ludzie kłamiemy w CV?

Jak dostaje jakas bzdure typu lista ciagow znakow i chodzenie po indexach to mnie osłabia.

Osobiscie to na codzień potrafilem robić w Golangu, Kotlinie, Pythonie, bashu, yamlu, terraformie. Kiedys jak klepalem jakis kod jednej aplikacji to pamietalem dobrze syntax ale przy mnogosci technologii zaczyna sie to mylic ;) No ale ja przeszedlem z roli klepacza do infry więc troche inna rzecz.

edytowany 1x, ostatnio: karsa
SE
Co takiego ciekawego da się robić w yamlu?
KA
odpowiednio skonfigurowac rzeczy by dzialaly poprawnie na produkcji, a duże CI na mnostwo zepsolow to też nie taka prosta sprawa
MU
Ale jesli chodzi o jakiekolwiek algorytmy czy techniki programowania to w yamlu nie ma nic zeby sie tym nawet chwalic w CV czy w ogole.
KA
coscie sie uwzieli na tego yamla, jakie to ma znaczenie, uamlel to sterujesz deployem np. do K8S, Gitlab-CI, appka, AWS, whatever też mozesz robić reużywalne templaty dla modulów które trzeba jakoś umiejętnie dystrybuowac bez dependency hell, jest też czesto zwyczajnie inputem dla wlasnych tooli napisanych w Go czy Pythonie...
KA
X lat programowalem w roznych jezykach o wiecej o algorytmach to wiem, że sa zaimplementowane w SDK, libkach niż pisałem cokolwiek od 0, nie wiem też gdzie w CV jest miejsce na chwalenie sie "technikami programowania"
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 16 godzin
  • Lokalizacja:Poznań
  • Postów:8769
9

Co ja czy inni ludzie kłamiemy w CV?

Tak, dokładnie tak. Może akurat Ty jesteś OK i nie kłamiesz, ale chociażby zobacz, co ludzie piszą w "rekrutacyjne WTF". Jest tam wiele opowieści z drugiej strony barykady.

Poza tym doświadczenie z miejsca A nie jest równe doświadczeniu z firmy B. Można przez 2 lata uczestniczyć w mega rozwijającym i ambitnym projekcie, dzięki któremu się mocno rozwiniesz i zdobędziesz doświadczenie, a można 10 lat klepać strony na wordpressie i przesuwać inputy na formatce. Do tego jeszcze część firm, żeby oszczędzić na kasie to ludzi trzyma w inny sposób, np. kupując ich etykietkami na wizytówce. I potem trafiają się seniorzy 2 lata po studiach.

Tak więc -tutaj jest potrzebna jakaś weryfikacja, bo ani staż, ani nazwa stanowiska wcale niczego nie gwarantują. No i jeszcze taki szczegół - w innych branżach jest brak chętnych do pracy, więc się bierze kto się nawinie, a programowanie jest jedną z niewielu, gdzie jest znacznie więcej kandydatów, niż wolnych stanowisk.


edytowany 1x, ostatnio: cerrato
Zobacz pozostałe 36 komentarzy
KA
O ile te trudniejsze testy mają jakiś sens to te Associate to według mnie nic nie dają. Niektóre pytania też są głupie, nauka na pamięć rodzajów usług czy rodzajów instancji itp
randomize111
Tak z ciekawości te cloudowe egzamiy jak wyglądają? I są do tego jakieś materiały od np. amazona czy samemu się gdzieś uczy? Bo te CCNA sieciowe to praktycznie zawsze się powtarza i dla mnie to było jak świstek papieru (ten certyfikat zakończenia kursu, bo chyba jest coś też od cisco ale to już się trochę płaci za przystąpienie) :d
ledi12
@randomize111: W przypadku Azure masz oficjalne ścieżki szkoleniowe. Egzamin wygląda tak, że albo idziesz do centrum szkoleniowego np. we Wrocławiu, albo online. Są to testy abcd, czasami wielokrotnego wyboru.
KA
AWS i GCP raczej to samo. No imo to jest jednak głównie takie CCNA 2.0
MU
Mysle ze nawet te Associate coś daja bo o ile w relalnym projekcie uzywa sie 2-4 powiedzmy serwisow i mozna procowac w chmurze AWS nie majac pojecia o reszcie serwisow i sposobie w jaki ze soba "wspolpracuja", to po nauce na taki certyfikat z fajnego kursy na Udemy nawet duzo mozna sie nauczyc i rozszerzyc swoja wiedze i potem nawet jak musisz zrobic cos w innym projekcie czy jakis PoC to masz juz spoko wiedzę. Plus zawsze mozna na rozmowie nagiąć ze uzywalo sie dany serwis w pracy mimo ze tak nie było.
KA
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 2 lata
  • Postów:594
1

Ostatnio przeglądam sobie Team Blind, Glassdoory itp. często o jakis duzych firmach.
Kiedys slyszalem dobre rzeczy np. o Stripe, które ponoć takie super, niebo a ziemia w porownaniu do Amazona czy Ubera albo nawet Google. Pewnie zalezy glownie od zespolu gdzie sie trafi a tu trafiam na coś takiego: https://www.teamblind.com/post/Avoid-Stripe-oMHuWXW6 xD

To może lepiej aplikować do mniejszych firm ale z jakąś prawdziwą produkcją gdzie mają szybkie rekrutacje gdzie człowiek jednak nie jest kolejnym kafelkiem w excelu xD

AM
  • Rejestracja:około 12 lat
  • Ostatnio:około 7 godzin
  • Postów:195
4

Wydaje mi się że niestety nie ma idealnej rekrutacji.

Moją preferencja są zadania do domu. Ale niestety zadanie które idzie zrobić w 3-5h nie bardzo odpowiada na pytanie, co kandydat umie. A zadanie na 30h+ spotyka się z dużym niesmakiem osób które są odrzucane.

Fangii korzystają z LC bo jest to chyba najprostsza droga na zrobienie 5 interview (tak żeby dostać 5 niezależnych ocen)
Czy LC są idealne, oczywiście że nie, i tak jak nie jesteś na bieżąco z algorytmami, to musisz się uczyć pod nie specjalnie. Natomiast chciałbym poznać kogoś kto jest bardzo słaby ale poćwiczył LC i jest w stanie mieć na 4-5 interview na strongly-hire

Najsłabiej wypadają hacker-ranki bo masz mały czas i sprawdzanie w stylu 0-1. Z drugiej strony są najtańsze dla pracodawcy.

A co do pytań które można znaleźć w google. Ja rozumiem, że jak ktoś cię pyta o wymienienie wszystkich konstruktorów stringa to jest głupie pytanie i to można znaleźć w Google.
Ale jak pytam się czym są filtry Blooma (czy np takie trie), a dostaje odpowiedź 'nie wiem ale se mogę w google znaleźć' to wiem, że problemu który one mogą pomóc rozwiązać mi (raczej) nie rozwiążesz.
Bo w pracy nie będzie problemem znaleźć czym są filtry Blooma czy jak je zaimplementować, ale raczej wiedzieć w głowie, że jest coś takiego i kiedy może się przydać.

edytowany 3x, ostatnio: amd
Zobacz pozostałe 25 komentarzy
randomize111
@amd: na niektórych to czasami nie warto się produkować xd
LukeJL
@amd rekrutujesz do FAANG?
AM
@Misiek_Uszaty: gratulacje ale ogarniam X rzeczy na wysokim poziomie + jednej sie doucze to nie jest sytuacja z moich przykładów. Bliżej Ci chyba do tego kandydata co odpowiada na 95% pytań w takim razie niż do tego co nie zna odpowiedzi na większość pytań.
AM
@LukeJL : nie nie FAANG, moje wpisy są hipotetyczne i dotyczą (chyba każdej) firmy co jest w stanie zapłacić mocno ponad rynek stawki. A hipotetyczne bo ja mocy sprawczej do zatrudniania nie mam ani nie negocjuje kasy, ja tylko daje swoją cząstkę oceny, i jeśli koleś idzie na seniora i odpowie na <90% moich pytań to z całą pewnością to będzie negatywny feedback (choć pewnie zdarzą się wyjątki, bo jak widzę że człowiek z potencjałem to sugeruje danie mu niższej pozycji (co równa się z mniejszą kasą) żeby właśnie się douczył).
MU
No tak jest jak napisales z tymi 95% pytan. To w takim razie ty piszesz o innym troche przypadku. Zle zrozumialem wybacz.
randomize111
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:137
0

@amd: Z zadaniami w domu też ten problem, że nie wiadomo jak samodzielnie było one zrobione. Co do tej drugiej części to się zgadzam, jeśli ktoś nie ma pojęcia o jakiś rzeczach np. coś z security czy ze skalowalnością to nie wyszuka tego w Google, bo nawet o tym nie słyszał.

Zobacz pozostałe 18 komentarzy
AM
Tylko dlaczego uważasz że to jest wykucie. Nikt tam raczej nic nie wykuwa.
KA
Czepiasz się słówek. Chodzi mi o to, że doświadczenie z pracy powinno być wystarczające a nie powinienem musieć się specjalnie uczyć
Miang
na hali pewnie tak ;)
veneficus
@karsa: nikt nie każe ci wykuwać, jeżeli potrafisz algorytmikę i rozwiązywać zadania w optymalny sposób i to właśnie to wyniosłeś z pracy no to powinieneś dać radę :) To nie jest wykuwanie tylko trenowanie i uczenie się rozwiązując X problemów, ich jest tyle że nawet jak wykujesz rzekomo wszystkie możesz trafić na inny :)
KA
@veneficus: no powiedzmy, ale jak chodzilem regularnie na rekrutacje to z algorytmami bylem bardziej na bieżąco, obecnie 3 lata jestem w tej samej firmie i no niezbyt mi sie to przydawalo, żebym czegoś takiego używał w pracy lub żebym z marszu teraz mogl isc rozwiazac medium/hard leetcode. Potrzebuje odświeżenia i treningu. A czasu też coraz mniej bo są inne obowiązki.
PC
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 miesiące
  • Postów:59
2

Brałem niedawno udział w rekrutacji gdzie było proste zadanie do zakodowania w domu (max 2h ) za co było płacone 400 zł. Później był interview na którym omawiałem rozwiązanie. Myślę że taka forma jest całkiem fajna. Z kolei jak jestem po drugiej stronie to jakieś proste zadanie do zakodowania + rozmowa techniczna i na 90% można wyczuć czy ktoś jest dobry czy tylko coś tam sobie poczytał przed interview. Tak BTW to rynek przynajmniej Javowcow jest tak wyssany że ostatnio na Senior Backenda miałem gości którzy nie znali Javy, ale nawet jak pytałem ogólnie np po co są thread poole czy immutability to nic nie byli w stanie wydukać:D

UR
Nic dziwnego, jak w sporej ilości firm tylko klepią bugfixy, albo dodają kolumny w bazach :)
SE
Proste zadanie na zywo to napisanie bubble sorta, fizzbuzza, jakiejs metody w istniejacym kodzie czy cos bardziej wymagajacego?
PC
Stworzyć własną strukturę do reprezentacji plików i katalogów wyświetlić w konsoli, zamienić stringa na inta itp
axelbest
ThreadPool - co ten Ryan Reynolds tu robi to ja nie wiem... Ale to dobry film, polecam.
WA
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 2 lata
  • Postów:73
1

Napisałeś kilka kroków jak zostać seniorem 15k, problem w tym, że senior który zarabia 15k musiał przespać ostatnie 5 lat. 15k to dostaje każdy srednio ogarniety programista z 2 letnim stazem. Wiec nic dziwnego ze latwo sie dostac do takich firm.

edytowany 1x, ostatnio: watpliwosci
SW
A senior ile powinien mieć? Bo ja z tym ch przespali 3 lata i się fest zasiedziałem w pandemi
CZ
"15k średnio ogarniety programista z 2 letnim stażem." - no chyba w Javie, albo jakichś webowych technologiach.
WA
nie ma czegos takiego ile senior powinien miec, ale raporty pokazuja ze midzi maja juz grubo ponad 20k, 15k aktualnie to junior/mid
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 3 godziny
  • Postów:3552
4

Rekrutacja nie ma na celu wyłonienia najlepszego kandydata, tylko wystarczająco dobrego kandydata. Jeśli mam dwóch ludzi, za tę samą cenę, z których jeden jest trochę lepszy od drugiego - ale nie jakoś dramatycznie - to świat się nie zawali jeśli weźmiemy gorszego.
Rekrutacja musi też być wydajna. Jeśli jakaś kosztowna zmiana sprawi, że będziemy profilować kandydata o te dwa procent lepiej to wolę jej nie wdrażać.

Teraz wracając do mojego ulubionego tematu, tj. live-coding. Nie rozumiem niechęci do prostych zadań algorytmicznych, ponieważ nie mają one zbyt wiele wad, za to mają kilka zalet.

  1. Sprawdzają, czy kandydat potrafi pisać bez Stackoverflow. O ile stronkę lubię i cenię, o tyle uważam SO-DD za antywzorzec, który prawie zawsze skończy się źle.
  2. Nie wymagają wiedzy domenowej.
  3. Można prześledzić, jak ktoś rozwiązuje problemy, czy panuje nad czasem, czy nie ma gonitwy myśli itp.
    Jedyna wada takiego rozwiązania to myślowy deadlock, tj. kiedy ktoś za bardzo skupi się na błędnym toku myślenia. I tutaj trzeba po prostu czasem kandydata naprowadzać na rozwiązanie.

Zaznaczam, problem do rozwiązania powinien być względnie prosty i dobrany pod poziom stanowiska.

RE
  • Rejestracja:prawie 5 lat
  • Ostatnio:13 minut
  • Postów:105
1

@wartek01: live coding chyba jest jedną z lepszych sposobów na weryfikację

Chociaż osobiście mam jedno traumatyczne przeżycie związane z tą formą rozmowy technicznej
Otóż kiedyś kazano mi zaimplementować bubble sort. Algorytm do sortowania pisałem ostatni raz przed tą rozmową sam nie wiem kiedy. No i się spaliłem.
Zapomniałem na czym polega, coś zacząłem pisać, koło mówi że to chyba przez wstawianie robię. To jeszcze do pieca dorzucił.
Gdyby zadanie było żeby napisać algo do sortowania to pewnie bym zrobił, a tak nie pamiętałem jak te bąbelki latają. W głowie pustka.
To było pierwsze zadanie. Inne mi poszły dobrze ale i tak decyzja na nie.
Czułem się jak debil, miałem takie poczucie wstydu i zażenowania że długo nie mogłem tego rozchodzić.

Wydupczyć się na bubble sort. Masakra.

Zobacz pozostały 1 komentarz
randomize111
@LukeJL: mi się to kojarzy z wyprowadzaniem wzorów na matematyce/fizyce - widać jak ktoś rozumie coś
AM
@LukeJL: czy umiejętność pisania tego od zera w ogóle się przydaje w realnym programowaniu przydaje się, choć nie widzę przydatności znania bubble sorta. A co do realnych case'ów to przykład [dane tak duże, że wykraczają poza pamięć, dane tak specyficzne, że można/trzeba skorzystać z sortów o czasie linearnym, sortowanie na wielu watkach, sortowanie na gpu (we wczesnych wersjach API nie było sortów), ... i pewnie cała masa innych]
LukeJL
Hmm... a co jeślibyśmy chcieli posortować ogromny zbiór danych, tak wielki, że nie możemy tego zrobić normalnie, bo by wszystko zamuliło? Wtedy moglibyśmy sortować po trochu, ręcznie. Chociaż też pytanie, czy w takiej sytuacji nie oddelegować tego do bazy danych. No ale moglibyśmy założyć, że nie możemy skorzystać z bazy danych. Albo, że dane są rozproszone... Tak tylko gdybam.
LukeJL
@amd sortowanie na GPU brzmi ciekawie
AM
@LukeJL: Wtedy moglibyśmy sortować po trochu w dużym uproszczeniu tak się to robi, ale żaden sort tego nie rozwiąże. Chociaż też pytanie, czy w takiej sytuacji nie oddelegować tego do bazy danych a co jak właśnie implementujesz to w silniku bazy danych :P
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 6 godzin
  • Postów:8409
1
wartek01 napisał(a):

Rekrutacja nie ma na celu wyłonienia najlepszego kandydata, tylko wystarczająco dobrego kandydata.

Jeśli mam dwóch ludzi, za tę samą cenę, z których jeden jest trochę lepszy od drugiego - ale nie jakoś dramatycznie - to świat się nie zawali jeśli weźmiemy gorszego.

Zgadzam się, że na tym to często polega. Pytanie, czy tak być powinno. Które podejście do rekrutacji jest lepsze:

  • bierzemy nawet słabych gości, byleby spełniali pewne minimalne kryteria
  • staramy się zatrudniać faktycznie najlepszych

Myślę, że obydwa podejścia mogą się sprawdzić. Jak komuś nie zależy na jakości (a projekt to zwykła klepanka), to może zatrudnić słabych ludzi, bo i tak co mają zrobić, to zrobią, lepiej lub gorzej. Jednak jak komuś faktycznie zależy na jakości (a sam projekt jest trudny), to chyba jednak lepiej szukać najlepszych, zamiast zatrudniać tych słabszych.

  1. Można prześledzić, jak ktoś rozwiązuje problemy, czy panuje nad czasem, czy nie ma gonitwy myśli itp.

Sprawdzanie czy ktoś panuje nad czasem każąc mu rozwiązać w ciągu kilku minut zadanie w stresie i sprawdzanie czy ktoś nie ma gonitwy myśli? WTF programista to nie prezenter telewizyjny, że musi "panować nad czasem". I co złego w gonitwie myśli? To chyba dobrze właśnie, jak ktoś myśli i kmini niż jakby nie miał żadnych pomysłów (albo wstydziłby się mówić je głośno).


AM
Jedno i drugie podejście ma racje bytu. Zależy od projektu, zależy od sytuacji firmy. Pytanie gdybyś miał iść do firmy/teamu, to które podejście byś wolał. Ja z całą pewnością drugie.
LukeJL
@amd ja też drugie, bo bym się tam bardziej odnalazł wśród podobnie myślących programistów. Pierwsza opcja to trochę jak "ojej, muszę poprawiać kod po słabszych ode mnie i nikt mnie nie rozumie, bo sami nie wiedzą tego, że są słabi".
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 3 godziny
  • Postów:3552
3

@___ref___: na pewno bym nie wymagał znajomości definicji dowolnego sortowania. Natomiast jeśli miałeś podane jak to wygląda to ok.

@LukeJL: tak.

Jeśli ktoś nie potrafi zrobić prostego zadania, którego wyklepanie zajmuje 3 minuty (jeśli już zna się rozwiązanie) w 30 minut (lub więcej, ja daję 30-45 minut, nie mam zielonego pojęcia skąd wziąłeś "kilka" minut) to coś jest nie tak. I tak, programista musi panować nad swoim czasem. Co do gonitwy myśli - to jest bardzo duży problem u potencjalnego pracownika, z takimi osobami nie da się pracować bo potrafią kilkukrotnie zmienić koncepcję, ale nie sprawdzić żadnej z nich.

No i jest jeszcze podstawowy problem: https://blog.codinghorror.com/why-cant-programmers-program/amp/

Kiedyś miałem na rozmowie osobę, która:

  • wiedziała, że String ma metodę charAt() I length() i wiedziała, co one robią
  • jednocześnie nie potrafiła wypisać odwróconego String na wyjście standardowe bez użycia StringBuilder.reverse().
    Człowiek miał 3 lata expa. Nawet gdy jasno powiedziałem, żeby zrobił pętlę od length-1 do zera - nie potrafił.

Można spytać "czy komuś w pracy się przyda takie odwracanie String?". Odpowiedź brzmi prawie na pewno nie". Natomiast ja osobiście takie rzeczy mogę tolerować u stażysty, ale u osób wyżej nie.

I tak, takich historii gdzie ktoś się wywala na najprostszych zadaniach mam więcej.

RE
Po prostu miałem polecenie, napisz bubble sort, no i dziura w głowie, jak to było z tymi bąbelkami, a tu czas leci, ludzie patrzą - no to wiedziałem że tu już dobrego wrażenia nie zrobię. Bywa, ale jak widać nawet i teraz jakoś mnie to męczy....
randomize111
@___ref___: zdarza się, ważne żeby wyciągnąć wnioski :) też trzeba się w proces rekrutacji wdrożyć, są osoby które specjalnie najpierw idą na te rozmowy na których im nie zależy żeby na te inne być wprawionym
WeiXiao
żeby zrobił pętlę od length-1 do zera przecież tak się nie powinno odwracać stringa (produkcyjnie) :P
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)