Rekrutacja na senior java developer - Utworz mikroserwis z api CRUD

Rekrutacja na senior java developer - Utworz mikroserwis z api CRUD
DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Cześć!
Będę rekrutować na stanowisko Senior Java Developera i dostałem do przygotowania zadanie rekrutacyjne. Ma to być napisanie mikrousługi z API typu CRUD dla pewnej domeny.

Robiłem bardzo podobne rzeczy kilka lat temu, startując w rekrutacjach jako junior, ale to przecież senior, więc chciałbym, żeby zadanie faktycznie pozwoliło ocenić dojrzałość techniczną, a nie tylko znajomość podstawowych frameworków.

Co według was powinno znaleźć się w takim zadaniu, żeby faktycznie sprawdzało seniora?

Jakie elementy są wg was mile widziane i mogą zapunktować (np. testy, zabezpieczenia, walidacje, monitoring)?

I odwrotnie — czego unikać, żeby nie popaść w niepotrzebny overengineering?

Każdy insight z waszego doświadczenia — czy to jako rekrutujący, czy kandydaci — będzie super pomocny!

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5017
0

Testy, logi, łapanie wyjątków, kiedy, 404, 422, 5xx itp., asynchroniczność, publiczne repo na githubie, wszystko w dockerze, (docker compose z bazą i apką) - to możesz wymagać. A będziesz oceniał, pokrycie testowe, jak sobie api radzi w krytycznych przypadkach, dobre praktyki, design, naming, jakieś Javove must do...

Mjuzik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 742
4
lion137 napisał(a):

Testy, logi, łapanie wyjątków, kiedy, 404, 422, 5xx itp., asynchroniczność, publiczne repo na githubie, wszystko w dockerze, (docker compose z bazą i apką) - to możesz wymagać. A będziesz oceniał, pokrycie testowe, jak sobie api radzi w krytycznych przypadkach, dobre praktyki, design, naming, jakieś Javove must do...

A to wszystko w 8h do zrobienia przez sprawnego seniora 😄

Jak dasz za dlugie zadanie rekrutacyjne to pozbędziesz się dobrych kandydatów, którzy szanują swój czas. Mam nadzieję, że jak przyjdzie 50 zgłoszeń i zrobionych zadań to sprawdzisz wszystkie te zadania i dasz feedback każdemu z nich.

Zdecydowanie lepiej poświęcić ten czas na realne rozmowy. Wybierz 10 kandydatów, porozmawiaj z nimi po godzinie. Z 10 wybierz top3 i wybierzesz eksperta.
W krótkim zadaniu nie sprawdzisz realnie umiejętności programowania, dasz dłuższe to pozbędziesz się ekspertów z rekrutacji. Podczas rozmowy przy okazji sprawdzisz umiejętności miękkie.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5017
0

Ale napisał, że będą rekrutować przez zadanie, a takie wymagania dostałem w zadaniu na seniora; no, ten docker był opcjonalny.

marian pazdzioch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 783
3

Ja mam insight. Nie rób zadania. Bo ty się narobisz, guzik sprawdzisz, a możliwe że odstraszysz co lepszych kandydatów którzy pójdą na rozmowę gdzie nie było zadania, a ciebie oleją (ja jak dostaje rekrutację z zadaniem to wychodzę wywracając stolik, a nawet nie jestem najlepszy).

Zrób po prostu proste, naprawdę proste zadanie typu live coding na 10-15 minut i niech tamten kodzi i mówi co robi. To w zupełności wystarczy.

Vladyslav Kraiev
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
3

Naprawdę chcesz rekrutować seniora na podstawie takiego zadania? Masz dużo potencjalnych kandydatów do odsiewania, czy co? Myślałem, że z seniorem bardziej rozmawia się o system designie, niuansach pracy z JVM itp.

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1629
1
dziki_kret napisał(a):

Co według was powinno znaleźć się w takim zadaniu, żeby faktycznie sprawdzało seniora?

Nawal tyle klas/abstrakcji że nawet class loader klęknie a następnie każ kandydatom w ramach homeworka zrobić na tym KISS z zachowaniem logiki.

Następnie odsiej tych co powiedzą że trzeba zrestartować to from scratch - ci którzy zostaną to seniorzy.

B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 474
0

Takie rzeczy się sprawdza na normalniej 1h rozmowie, mówisz że ma zaprojektować takie i takie API i kandydat mówi jak to by zrobił. Jak sam lub z lekkim naprowadzeniem zaproponuje te testy, zabezpieczenia, walidacje, monitoring, dockery, skalowalność, architekturę, itp. to jest to senior, a ja nie to mid. Jak ktoś myśli o takich rzeczach to jest ogarnięty, więc z pisaniem kodu też sobie poradzi.

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8486
0
dziki_kret napisał(a):

Cześć!
Będę rekrutować na stanowisko Senior Java Developera i dostałem do przygotowania zadanie rekrutacyjne. Ma to być napisanie mikrousługi z API typu CRUD dla pewnej domeny.

Na seniora? Nie piszę w Javie (kiedyś coś w niej robiłem, ale przez krótki czas i dawno temu), ale myślę, że byłbym w stanie napisać napisanie mikrousługi z API typu CRUD dla pewnej domeny. posługując się Google, dokumentacją, StackOverflow, ChatGPT i pod warunkiem, że byłoby to zadanie domowe, na które miałbym kilkudniowy zapas czasu (a nie livecoding, gdzie ciężej udawać skille. Zresztą na livecodingu robienie całej funkcjonalnej apki w 30 minut to też bezsens).

Anyway - nie mając skilla w Javie, byłbym w stanie zrobić to zadanie, czyli kiepsko to filtruje seniorów. Z kolei jak ktoś jest dobry w Javie, to czy mu się będzie chciało robić (albo czy będzie miał czas) przez kilka godzin coś, co nie jest jakoś specjalnie ciekawe nawet?

Ogólnie tego typu zadania filtrują bardziej osoby zmotywowane do znalezienia pracy i mające dużo czasu, np. na bezrobociu. Natomiast umyka ci wtedy wiele dobrych technicznie kandydatów, którym się po prostu nie chce takich zadań robić.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 54
0

Mam lepszy pomysł, bo takie zadania są spoko dla juniorów/midów jakie wskazałeś.

Senior powinien ogarniać TDD, DDD (system design), CI/CD, a jeśli chodzi o mikrousługi - dodatkowo zagadnienia związane wyłącznie z nimi.
Przykładowe zadanie 1h z omówieniem może być takie:

Przygotuj monolitową bazę danych (wraz z API). Następnie daj kandydatowi zadanie polegające na stworzeniu konceptu mikrousług z tego monolitu wraz z wyjaśnieniem dlaczego i jak. To pole do popisu, które daje wgląd w DOŚWIADCZENIE w budowaniu systemów u kandydata, a nie jego umiejętności w programowaniu - moim zdaniem od seniora wymaga się patrzenia trochę dalej niż (EDIT poprawne, zgodne z SOLID, z logowaniem) zrobienie API

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8486
0
Majksu napisał(a):

Mam lepszy pomysł, bo takie zadania są spoko dla juniorów/midów jakie wskazałeś.

Senior powinien ogarniać TDD, DDD (system design), CI/CD, a jeśli chodzi o mikrousługi - dodatkowo zagadnienia związane wyłącznie z nimi.
Przykładowe zadanie 1h z omówieniem może być takie:

Przygotuj monolitową bazę danych (wraz z API). Następnie daj kandydatowi zadanie polegające na stworzeniu konceptu mikrousług z tego monolitu wraz z wyjaśnieniem dlaczego i jak. To pole do popisu, które daje wgląd w DOŚWIADCZENIE w budowaniu systemów u kandydata, a nie jego umiejętności w programowaniu - moim zdaniem od seniora wymaga się patrzenia trochę dalej niż (EDIT poprawne, zgodne z SOLID, z logowaniem) zrobienie API

Może jeszcze inaczej. Jak chcemy sprawdzić seniority, to możemy badać umiejętność przewidywania, co pójdzie nie tak albo modyfikowania rozwiązania do okoliczności. Nie tyle kazać wymyśleć rozwiązanie wyidealizowanego problemu od zera (bo tego można się na pamięć nauczyć), co przedstawić mu jakiś wcześniej wymyślony prosty schemat apki (np. w formie diagramu) i spytać np. jaki potencjalne problemy widzi, albo w jaki sposób by zmodyfikował rozwiązanie, żeby osiągnąć jakiś cel (np. skalowanie albo dodanie możliwości konfiguracji czegoś albo zrobienie integracji z czymś itp.).

Czyli coś takiego, co faktycznie będzie jakoś emulowało problemy, które natrafi się w pracy w istniejącym już jakiś czas projekcie, a nie tylko "jakbyś napisał skalowalną aplikację od zera". Firmy pytają kandydatów o całościowe rozwiązania wymyślone na szybko, podczas gdy realnie to aplikacje tworzy się kawałkami przez lata.

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1903
2

A jakie sygnały chcesz zebrać? Jakie kompetencje oceniasz? Co chcesz osiągnąć?

ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 237
3

Kto robi takie zadania bedac seniorem lol. Z seniorem lepiej po prostu pogadac co robil, jak robil, z jakimi ciekawymi problemami sie spotkał itd W rozmowie samo wyjdzie czy wie o czym mowi itd a nie czy potrafi z glowy napisac cos co w google znajdzie w 30 sekund. Kompletny bezsens

MO
  • Rejestracja: dni
  • Ostatnio: dni
2

w dobie chataGPT to w sumie można by tu zrekrutować nawet ogarniętego poloniste na senior java dev jak to zadanie do domu.

(bo ja bym tego w całości z dokerem w godzine nie podniósł, chyba nawet z czatem)

elwis
  • Rejestracja: dni
  • Ostatnio: dni
0

W sumie nigdy nie rekrutowałem seniorów Javy (więc może mam błędne wyobrażenie), ale bym nie bawił się w zadania, bo zwłaszcza w dobie ChataGPT to mało efektywne. Spytałbym po prostu o to jak zrobić (bez zmieniania istniejącego kodu, tworząc nową klasę), żeby wywołania wybranej funkcji były logowane na stderr z wartością parametrów i zwróconą wartością. Zakładam, że prawdziwy senior chociaż ma jakieś pojęcie o refleksji i class loaderach i umie połączyć kropki. Po kształcie odpowiedzi będziesz wiedzieć z kim masz do czynienia. Do tego jeszcze parę pytań o refleksje nad pracą programisty i to tyle. W zbytnich szczegółach technikaliów nie ma co pytać, bo zwykle AI dobrze w tym pomaga (zwłaszcza w javie). Kluczowe, żeby gość wiedział na czym polega programowanie w Javie i czemu tak. Ewentualnie można jeszcze dopytać o Garbage Collector i streamy.

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1778
0
lion137 napisał(a):

Ale napisał, że będą rekrutować przez zadanie, a takie wymagania dostałem w zadaniu na seniora; no, ten docker był opcjonalny.

bo masz wszystkich uwalić, takie dostałeś zlecenie z góry, nie ma za co

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1778
0
lion137 napisał(a):

Ale napisał, że będą rekrutować przez zadanie, a takie wymagania dostałem w zadaniu na seniora; no, ten docker był opcjonalny.

bo masz wszystkich uwalić, takie dostałeś zlecenie z góry, nie ma za co

Hodor
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 337
2

A na seniora to nie pyta się o equals i hashcode, arraylist vs linkedlist, scope beanów?

Korges
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 597
2

Nie robić takich zadań. Zawsze się znajdzie frajer który napisze więcej. (poświęci za darmo więcej czasu)

DM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 284
0
dziki_kret napisał(a):

Cześć!
Będę rekrutować na stanowisko Senior Java Developera i dostałem do przygotowania zadanie rekrutacyjne. Ma to być napisanie mikrousługi z API typu CRUD dla pewnej domeny.

Robiłem bardzo podobne rzeczy kilka lat temu, startując w rekrutacjach jako junior, ale to przecież senior, więc chciałbym, żeby zadanie faktycznie pozwoliło ocenić dojrzałość techniczną, a nie tylko znajomość podstawowych frameworków.

Co według was powinno znaleźć się w takim zadaniu, żeby faktycznie sprawdzało seniora?

Jakie elementy są wg was mile widziane i mogą zapunktować (np. testy, zabezpieczenia, walidacje, monitoring)?

I odwrotnie — czego unikać, żeby nie popaść w niepotrzebny overengineering?

Każdy insight z waszego doświadczenia — czy to jako rekrutujący, czy kandydaci — będzie super pomocny!

Teleportowales sie do 2018? Teraz trzeba napisac AI od nowa w Javie na rekrutacji.

nowy_kret_2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 316
0

takim zadaniemm to gowno sprawdzisz, jakbym dostal cos takiego to bym to wypromptowal, albo nie robil w ogole

marian pazdzioch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 783
2

@dziki_kret umieramy z ciekawości jaką ścieżką poszłeś i ilu super seniorów nałowiłeś?

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10215
1
dziki_kret napisał(a):

Cześć!
Będę rekrutować na stanowisko Senior Java Developera i dostałem do przygotowania zadanie rekrutacyjne. Ma to być napisanie mikrousługi z API typu CRUD dla pewnej domeny.

Jeez 🥱 Takie zadania niczego nie sprawdzają.

dziki_kret napisał(a):

Co według was powinno znaleźć się w takim zadaniu, żeby faktycznie sprawdzało seniora?

Możesz kogoś sprawdzać przez x godzin, a i tak Ci to nie powie czy Ci się będzie z nim dobrze pracowało i czy będzie dobrym fitem do zespołu.

Sam pomysł że takim zadaniem albo interviewsem jesteś w stanie wydedukować czy ktoś "się nadaje" moim zdaniem jest skopany na poziomie logiki.

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1903
0
Riddle napisał(a):
dziki_kret napisał(a):

Cześć!
Będę rekrutować na stanowisko Senior Java Developera i dostałem do przygotowania zadanie rekrutacyjne. Ma to być napisanie mikrousługi z API typu CRUD dla pewnej domeny.

Jeez 🥱 Takie zadania niczego nie sprawdzają.

dziki_kret napisał(a):

Co według was powinno znaleźć się w takim zadaniu, żeby faktycznie sprawdzało seniora?

Możesz kogoś sprawdzać przez x godzin, a i tak Ci to nie powie czy Ci się będzie z nim dobrze pracowało i czy będzie dobrym fitem do zespołu.

Sam pomysł że takim zadaniem albo interviewsem jesteś w stanie wydedukować czy ktoś "się nadaje" moim zdaniem jest skopany na poziomie logiki.

Jestem sobie w stanie wyobrazić, że właśnie testują, np. zrozumienie problemu czy wyjaśnienie wymagań, które celowo mogłyby zostać pominięte. Pierwsze z brzegu - może w danej domenie update i delete nie mają sensu, albo trzeba je zaimplementować inaczej niż zmieniając rekordy. Może w API pojawiają się wartości pieniężne, które trzeba umieć zdeserializować (popularna pułapka z floatem/doublem). Może też się wywiązać ciekawa dyskusja o kontrakcie, o testach, obsłudze błędów. Wreszcie, jeśli ktoś po prostu usiądzie i zakoduje, nie wyjaśniając co robi i dlaczego, to też coś mówi o kandydacie.

Widzę tutaj szerokie pole do manewru pomimo pozornie prostego problemu (na którego temat spekulujemy, bo finalnie nie znamy treści zadania).

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10215
1
Charles_Ray napisał(a):

Jestem sobie w stanie wyobrazić, że właśnie testują, np. zrozumienie problemu czy wyjaśnienie wymagań, które celowo mogłyby zostać pominięte. Pierwsze z brzegu - może w danej domenie update i delete nie mają sensu, albo trzeba je zaimplementować inaczej niż zmieniając rekordy. Może też się wywiązać ciekawą dyskusja o kontrakcie, o testach. Wreszcie, jeśli ktoś po prostu usiądzie i zakoduje, nie wyjaśniając co robi i dlaczego, to też coś mówi o kandydacie.

Widzę tutaj szerokie pole do manewru pomimo pozornie prostego problemu (na którego temat spekulujemy, bo finalnie nie znamy treści zadania).

Niby tak, ale częste są przypadki że ktoś rozwiązuje bezbłędnie takie zadanie, a i tak nie pasuje do zespołu/projektu i ciężko się z nim pracuje; i odwrotnie, osoby które byłyby idealnym fitem odpadają bo się nie wstrzelą w klucz.

marian pazdzioch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 783
3

Czas na oftipiki już był, idźcie gdzie indziej, ja czekam na wynik tego pytania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.