Ile czasu na takie zadanie

1

Implementacja w javie to gdzieś godzinka, ale później zabawa z:

  1. Pisaniem dokumentacji (także budowania i uruchomienia)
  2. Poszukaniem jakiejś darmowej publicznej bazy danych i zintegrowanie się z nią (może jakieś porty będą zablokowane itp itd)
  3. Jak chciałbyś zrobić bonus czyli opakować ten serwis dockerem a potem może kubernetesem to znowu sporo główkowania

EDIT: Jeśli to miałoby być zadanie rekrutacyjne, to jako kandydat chciałbym mieć kilka dni.

1

Crud z jedną tabelą? Jak ktoś je biegły z jakimś Spring Bootem, Spring Data i Swaggerem, to myślę że można by to zrobić w godzinę, przynajmniej część implementacyjną.

3

Z Django i DRF to jakieś 15 minut roboty, wliczając w to odpalenie IDE i zaciągnięcie zależności, jeszcze pewnie zmieściłbym się z jakimiś podstawowymi testami w tym.

P.S jeszcze nie widzialem tak prymitywnego zadania rekrutacyjnego ;D

1

Jeżeli ktoś nie użyje gotowego szablonu build+pusta apka to 1h na samo postawienie projektu który nic nie robi :D (przynajmniej w Javie)
Jeżeli ktoś zrobi klona popularnej aplikacji demonstracyjnej w Java+Spring Boot Pet Clinic (https://github.com/spring-petclinic/spring-petclinic-rest)
to 1h na spokojne pousuwanie nadmiarowych encji :D

Można się zastanowić co w takim razie takie zadanie ma sprawdzić, git clone? A może autor chce nas tutaj sprawdzić na innym poziomie?
Może będzie się pytał dlaczego jest architektura typu Controller -> DTO -> Service -> Repo -> Encja, a może wolałby Controller -> Query -> DB i Controller -> Command -> Handler -> DB ?
A może zainteresowało by go użycie RxJava/Reactor ? A może skoro baza danych jest dowolna to wykorzstamy plik JSON na dysku i będziemy bronić tego podejścia?

To samo dotyczy testów, sky is the limit, można potestować bardzo dokładnie i narobić mnóstwa testów jednostkowych. Lub dodać na krzyż jeden E2E na każdą metodę api, ale
nadal można zabłysnąć pokazując np. znajomość mockMvc lub innego ustrojstwa.

Obraz dockera potrafi wykonać wtyczka maven'owa - więc w świecie javowym można uznać że jest za darmo.

Podsumowując, będą osoby co przeznaczą na to zadanie 2h, i takie co będą szlifować przez 2 dni. Jeżeli komuś bardzo zależy to zapewne pomyśli o architekturze/designie/testowaniu/wzorcach projektowych i postara się wcisnąć w ten mikro projet ile będzie mógł. Czy zadanie odda faktyczny poziom wiedzy? Wg. mnie nie, ale pokaże czy komuś zależy i zapewne o to autorowi chodzi...

EDIT: Dawno dawno temu jak byłem jeszcze młody i -głupi- niedoświadczony, rekrutowałem bodajże do pragmaticcoders, wtedy dostałem takie zadanie do domu i tyle naklepałem: https://github.com/marcin-chwedczuk/tmp-checkout.
Zadanie się nie spodobało, dostałem feedback ale nie był jakiś super - zapewne z szablonu wysyłanego większości kandydatów. Strasznie mnie to wkru***, jeżeli wiec OP chce wykorzystać to zadanie to warto pomyśleć o jakieś miłej odpowiedzi dla kandydatów tak żeby się nie denerwowali że klepali przez cały weekend i nic z tego nie mają...

1

Ja tam takich zadań nie robię, ale ono jest proste w opór, poza tym do tego zadania odpowiednią architekturą jest monolit a nie mikroserwisy. Druga sprawa jest taka, że potem takie coś Ci programista może ocenić różnie, coś jak polonista wypracowanie na maturze. Jednemu Twoje rozwiązanie się spodoba, a innemu nie.

Osobiście preferuje codility, leetcode, testy algorytmiczne, inżynieryjne gdzie 1 to 1, a 0 to 0 i nie każdy jest już taki cwany aby to przejść.

0

Tylko że ja muszę to zrobić w Pythonie to może mi trochę więcej zająć.

0

Oho widzę że jednak zadanie spełnia swoją rolę <szok> ;)

13

W scrumie to jakieś dwa-trzy sprinty. Zależy czy scrum master certyfikowany czy nie.

3

Obecnie pewnie z kilkanaście godzin, bo przecież to nie jest żaden JavaScript czy frontend, więc większość czasu zajęłoby mi przypominanie sobie Pythona, czytanie dokumentacji Django (albo jakiegoś lżejszego frameworka), bo lata temu w tym pisałem, no i oczywiście instalacja samego frameworka, konfiguracja Dockera, bazy danych, konfiguracja serwera, wymyślanie zapytań SQL albo pisanie w ORM, ale znowu - bym musiał poczytać dokumentację o tym, jak to się robiło w Django albo w innym frameworku.

Ale jakbym robił na codzień w backendzie i miałbym obcykane zarówno frameworki jak i kwestie konfiguracyjne albo gotowy obraz w Dockerze, żeby nie konfigurować nowych projektów - to pewnie samo zakodzenie tych endpointów to może z godzinę by mi zajęło plus 2 godziny, żeby to jakoś udokumentować pewnie, jak każą. A że to na ocenę, to trzeba byłoby to jakoś ładnie ubrać w słowa, żeby było widać, że ładnie udokumentowane ;)

Wydaje mi się, że ten test bardziej sprawdza umiejętność postawienia projektu (co też jest dobre, bo filtruje osoby, które z backendem nie mają wiele wspólnego i nie potrafią sobie zainstalować czy skonfigurować niczego i muszą co chwila zaglądać do dokumentacji) niż umiejętności czysto programistyczne.

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