Wpis z mikrobloga

Ostatnio robiłem zadanie rekrutacyjne na stanowisko Juniora (nie wymagali nawet żadnego doświadczenia) z takmi wymaganiami:

As an api consumer, given username and header “Accept: application/json”, I would like to list all his github repositories, which are not forks. Information, which I require in the response, is:

Repository Name

Owner Login

For each branch it’s name and last commit sha

As an api consumer, given not existing github user, I would like to receive 404 response in such a format:

{
“status”: ${responseCode}

“Message”: ${whyHasItHappened}
}

As an api consumer, given header “Accept: application/xml”, I would like to receive 406 response in such a format:

{

“status”: ${responseCode}

“Message”: ${whyHasItHappened}
}
Notes:
Please full-fill the given acceptance criteria, delivering us your best code compliant with industry standards.

Please use [https://developer.github.com/v3](https://developer.github.com/v3) as a backing API

Application should have a proper README.md file

Tutaj zrobione to zadnie przeze mnie: https://github.com/Sampeteq/github-task
Dzisiaj rano dzwoni do mnie rekruter i dosłownie zjechał mnie ostro za takie rzeczy jak:
1.Paginacja, której nie było w wymaganiach a ją dodałem. Myślałem, że to standard w każdym API, tym bardziej, że to API GItHuba zwracało czasami kilkadziesiąt wyników.
2.Mappowanie odpowiedzi z WebClienta na Stringa zamiast na jakąś klasę mimo, że później jest to robione.
3.Użycie ObjectMappera do mapowania jsona z WebClient na obiekt Javowy. Powiedział, że to mnie definitywnie skreśla
4.Utworzenie WebClienta za pomocą create() zamiast utworzenia beana. Powiedział, że widać, że nie znam Springa
4. Użycie MockMVC w testach integracyjnych controllera zamiast WireMocka czy czegoś podobnego, nazwał to zbrodnią

Jak to oceniacie? Czy rekruter miał racje i takie błędy dyskwalifikują kandydata czy może moje rozwiązanie jest w miarę ok i rekruter przesadził? Nie ukrywam, że byłem w sporym szoku. Nie bardzo mogłem wejść z nim w polemikę, bo telefon zerwał mnie z łóżka i byłem zaspany
#programowanie #programista15k #java #pracbaza
  • 49
@Nofenak: Powiem to tak, od dłuższego czasu przebranżawiam się na programistkę z montażystki video. Przerobiłam JetBrains Academy od Hyperskill, mam tytuł zawodowy inżyniera oraz naukowy (xd) magistra oraz realizuje swoje poboczne projekty.

1. Zacznijmy od: GET /api/repos/{username}/fork=false?pageSize=&pageNumber=

Coś takiego jest mocno nie efektywne nie powinno mieszać się @PathVariable oraz @RequestParam

2.Mappowanie odpowiedzi z WebClienta na Stringa zamiast na jakąś klasę mimo, że później jest to robione.

Jest to niepotrzebna operacja wystarczy
@Nofenak: Trafił ci się niepoważny frustrat. O ile faktycznie masz dość niestandardową strukurę pakietów z dość arbitralnym podziałem na application i infrastructure(chyba próbowałeś się porwać na hexagonal architecture, jednak coś nie wyszło bo masz cykl - w takim przypadku powinieneś między innymi przenieść interfejs GitHubClient do application) to ostra ocena jest nie na miejscu.

1.Paginacja, której nie było w wymaganiach a ją dodałem. Myślałem, że to standard w każdym API, tym
@Nofenak - nie masz się czym przejmować. Ta aplikacja napisana jest w mojej skali 9/10 . Jakiś junior Cię oceniał - ciesz się, że nie trafiłeś pracować pod nim bo tylko byś #!$%@?ł pod nosem na jego pomysły i byś się cofał w rozwoju. Na szybko:

Na minus:
- lombok zamiast użyć nowszej javy albo kotlina
- mało czytelny i legacy maven zamiast gradle
- mapowanie branch model <-> branch dto i
Powiem to tak, od dłuższego czasu przebranżawiam się na programistkę z montażystki video. Przerobiłam JetBrains Academy od Hyperskill, mam tytuł zawodowy inżyniera oraz naukowy (xd) magistra oraz realizuje swoje poboczne projekty.


No i fajnie, ale moja córka skończyła prawo, a ja mam doświadczenie komercyjne ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°):

1. Zacznijmy od: GET /api/repos/{username}/fork=false?pageSize=&pageNumber=
Coś takiego jest mocno nie efektywne nie powinno mieszać się @PathVariable oraz @RequestParam

@kwas_rybonukleinowy: Dlaczego?

Należy pamiętać, że ObjectMapper może prowadzić do niepożądanych zachowań, takich jak ignorowanie nieznanych właściwości, co może prowadzić do utraty danych. Jednak to są skrajne sytuacje, alternatywą jest standard JSON-B (pozdro dinozaury) lub Gson / Moshi

@kwas_rybonukleinowy: wiesz, że używając automatów (po prostu klasę) Spring aby to zmapować pod spodem domyślnie używa object mappera? To co
@Nofenak: Dlatego najlepsze sa rekrutacje do big tech, klepiesz 3 algosy i gitara, nigdzie nie spotkalem takich kozakow jak w big techu mimo tego ze nikt nie kazal im klepac jakies gowno appki na rozmowie. Za to najwiekszych frustratow spotykalem wlasnie w firmach gdzie na rozmowie kaza ci znac framework na pamiec czy komendy wiersza polecen xd, albo wymieniac pattern designy z pamieci
@Nofenak: Co do punktu 1 to dorzucę swoje trzy grosze, bo często sam spotykałem się z nadinterpretacją zadania. Jeśli jest podany jakiś kontrakt, czy sformułowane oczekiwane zapytanie i odpowiedź, to jeśli zmienisz któreś z nich, to może to być uznane jako trochę nieumiejętność zrozumienia zadania. Inną rzeczą byłoby, gdyby przykładowo nie było nic wspomniane o logach, a Ty byś takie logowanie dodał. Warto podczas robienia zadań rekrutacyjnych patrzeć też na tą