Wpis z mikrobloga

Zawsze myślałem, że zadanie rekrutacyjne ma sprawdzić wiedzę kandydata, a nie pracowników. Otóż nie tym razem XD

W procesie rekrutacyjnym pewnej firmy IT z Krakowa dostałem zadanie rekrutacyjne "na max 4h". Trochę dużo, ale w rozmowie z leadem wyszło, że "no tak 2-3h powinno ci to max zająć". Nigdy zadań nie robiłem, ale skoro ma to być 2h, a teraz gorzej z otrzymaniem oferty, no nic, poduczę się może czegoś.
Scope zadania prosty - napisz scenariusze i zautomatyzuj jeden endpoint podanego api, pokryj testami wszystkie statusy odpowiedzi. Brzmi spoko.
Zadanie nie zajęło ani 2, ani 3, ani 4 godziny, ale skoro już zaakceptowałem wyzwanie, to czemu by tego nie skończyć. Zadanie umieściłem na repo, wysłałem link na maila no i czekam na odpowiedź.

Dwa dni później dostaję feedback:
- Testów w ogóle nie da się odpalić, nie działają, nie potrafią wykryć kroków
- Kroki świecą się jako niezaimplementowane
Myślę co jest k*rwa, przecież przy oddawaniu wszystko sprawdziłem i działało, no nic odpale jeszcze raz - nadal wszystko śmiga.
A drugi punkt - od 5 lat jest błąd w pluginie, który podświetla kroki jako niezrobione w przypadku mapowania zmiennych na obiekty (w kodzie wszystko działa) - ale to ich też przerosło ( ͡° ͜ʖ ͡°)

- brak runnera testów, brak readme, brak pliku konfiguracyjnego, brak tworzenia branchy i commitów
No tak, projekt na dwie godzinki będzie miał 10 pull requestów sam ze sobą, a najlepiej to jakby jenkinsfile i dockerfile był zrobiony ( ͡° ͜ʖ ͡°) Nie było w scope to nie robim.
Myślę sobie, no dobra może oni ten generyczny runner sklepali w 2 minuty i odpalili, może tam testy nie działały - doklepałem runner, wszystko śmiga elegancko.

- za mało przypadków testowych
Spisałem kilkanaście scenariuszy, pokryłem wszystkie przypadki statusów, wszystkie możliwe kombinacje parametrów wejściowych jak i zabezpieczenia tego endpointa (zadanie na 4h). Liczy się pokrycie, a nie ilość testów XD
No fakt, w przypadku zwrotki z danymi mogłem przecież wygenerować wszystkie możliwe kombinacje 150 danych, które przychodzą, wtedy testy liczylibyśmy w tysiącach

- Kod statusu X nie był w dokumentacji, a kod statusu Y nie był uwzględniony w tasku
XD patrzę na zadanie, a kod X został podany w tasku, a kod Y nie był w ogóle uwzględniony w testach, ktoś po pijaku to czytał

- Stworzyłeś w klasach settery/gettery, których nie używasz
Specjaliści używający Lomboka myślą, że skoro wrzucą adnotacje getter/setter, to tych setterów i getterów nie ma, same się generują jak potrzebujesz. ( ͡° ͜ʖ ͡°)

- Brak klas POJO, działania na JSONie
POJO oczywiście były użyte - przecież żeście wyżej stwierdzili, że settery i gettery mam nieużywane, a jedyne settery nieużywane były w tych klasach. Ale widocznie za daleko było, żeby sprawdzić xD

- Requesty wysyłasz RestAssured, a asercje sprawdzasz JUnitem
Dzięki za info, że requesty wysyła się frameworkiem do restów, a frameworkiem testowym robi się asercje ( ͡° ͜ʖ ͡°)

Ale tym dzbanom nawet nie chciało się projektu odpalić, nawet nie spojrzeli co w nim jest. Zmarnowane kilkanaście godzin na rekrutację do takiej firmy i nauczka, żeby nigdy więcej nie brać już zadań rekrutacyjnych.

#programista15k #programista25k #it #pracait
  • 47
  • Odpowiedz
  • 0
@slgdfhsdhjfbs: Oczywiście że nie - kliknięcie prawym na teście i kliknięcie "Run" to wszystko, co trzebabyło zrobić w tej sytuacji. To tak jakbym miał pisać instrukcję uruchomienia do klasy Main z metodą main. Kwestia runnera została tu przytoczona z powodu możliwości, że poprzez uruchomienie tego z innej rzeczy (tak jakbym np. mavenem to skompilował i odpalił bez podania np. ścieżki do katalogu z testami, jeżeli nie są w domyślnym katalogu) mogło
  • Odpowiedz
@nugla3371: niekoniecznie zmarnowane - lesson learned, dodatkowo jedna firma sprawdzona że nie chcesz tam pracować, a to czego się nauczyłeś/odświeżyłeś/utrwaliłeś podczas pisania - twoje. Natomiast fakt, zadania na długie godziny bywają podejrzane, czy firma nie chce zmonetyzować procesu rekru. Wiele firm niestety ma tragiczne procesy. Ja osobiście w ogóle odszedłem od zadanek bo i tak g..no sprawdzają, zwłaszcza w czasach chat-gpt, rozmowa i pytania szybko wykryją czy ktoś wie o czym
  • Odpowiedz
Oczywiście że nie - kliknięcie prawym na teście i kliknięcie "Run" to wszystko, co trzebabyło zrobić w tej sytuacji.


@nugla3371: jenkins też klika prawym i wybiera "run"? ( ͡º ͜ʖ͡º)
  • Odpowiedz
@nugla3371: ja nie jestem z branzy it i az nie moge uwierzyc w to co czytam. Wy serio na rozmowe o prace musicie robic jakies zadania i siedzicie nad tym po pare godzin w waszym wolnym czasie? xd przeciez to jakis absurd. To tak jakby w mojej pracy (budowlanka) kazali mi przyjsc na pol dnia i wylewac beton za darmo xd
  • Odpowiedz
  • 0
@liskowaty bruh, masz dwie opcje odpalania w projekcie:
Poprzez mavena - projekt jest z mavenem, bezpośrednio te narzędzie służy do budowania i odpalania projektu
Bezpośrednio na pliku - zintegrowane z intellij lub z konsoli
A ty mi sugerujesz, że ten trzeci jest jedyną możliwością do odpalenia projektu? To jest dodanie maina który zrobi ci runa na tych plikach
To tak jakbyś zbudował jenkinsfile, ale odpisali ci, że nie da się odpalić bo
  • Odpowiedz
@nugla3371: gościu, problem leży w tym, że zakładasz, że rekruterzy używają tego samego IDE co ty. Napiszesz im instrukcję dla intellij, a oni używają vs code i co teraz? To że coś działa u ciebie lokalnie nie znaczy, że zadziała od ręki na innej maszynie. Swojego komputera klientowi też nie dasz ( ͡º ͜ʖ͡º).
  • Odpowiedz
  • 0
@liskowaty jedyne wymagania - napisz scenariusze, zautomatyzuj je, pokryj statusy odpowiedzi. Nawet w wiadomości zwrotnej im odpisałem, że nie tworzyłem runnera, ale myślę że nie jest potrzebny, bo nie było go w scope taska
  • Odpowiedz
@nugla3371: no to sam przyznajesz, że runner jest standardową praktyką w takich zadaniach, bo sam o nim pomyślałeś. Zazwyczaj w tego typu zadaniach potrzebują rozwiązań end to end. Myślę, że nawet jeśli nie było tego w scope to byłaby to wartość dodana. I ułatwiłoby to zadanie osobom sprawdzającym, bo po prostu uruchomiliby sobie tego runnera zamiast konfigurować i odpalać mavenowe komendy. W ogóle w wymaganiach było to, że ma być to
  • Odpowiedz
  • 0
@liskowaty maven jest standardem jeśli chodzi o budowanie projektów, jak chcą end to end to powinni zawrzeć specyfikację, bo mając scope "napisz scenariusze i napisz do nich kod", to mógłbym oddać same pliki ze scenariuszami i kodem.
Runner w kwestii tego nie jest standardem - przy użyciu TestNG w ogóle nie robi się runnera, jeżeli masz mavena to nie robisz runnerow jeżeli nie ma takiej potrzeby - co najwyżej, jeżeli chcesz odpalać
  • Odpowiedz
@liskowaty: Jaki runner? Normalnie do takiego czegoś siadasz ściągasz kod i masz z klasy odpalić klikając run. TYLE. Zabawa, żeby to działała jako coś oddzielnego to:
1. Nie było w wymaganiu
2. Po co się nad tym zmóżdżać skoro potem i tak to ustawiasz na jakimś agent builderze
3. No to nawet jak wymagali to trzeba było napisać.

To jest zadanie rekrutacyjne, więc jak czegoś takiego wymają to niech to napiszą.
  • Odpowiedz