Ostatnio tak się złożyło, że szukałem programistów. Kilku, do quasi-startupu. Inwestor oferował na starcie niezłe pieniądze, oczekiwał pewnego poziomu skilla, umiejętności myślenia... Żadnych z góry narzuconych wymagań dotyczących wybranej technologii, za to możliwości (i chęci) pracy w czymś, na co pomysł przyjdzie później.
Ogólnie, oczekiwania wobec programisty były: Smart, and gets things done.
rekrutacja 
Przed przeprowadzeniem interviews posiłkowałem się tym poradnikiem zresztą, a też zajrzałem na bloga interview (gdzie nowsze odcinki, no gdzie?).Okazało się, niestety, że niepotrzebnie aż tak się wysilałem.
CV, które podrzucał mi inwestor, nie były rewelacyjne. Nie wiem, skąd on je brał - chodził na zaplecza agencji rekrutacyjnych i przeglądał kosze z papierami?
Serio...
Wszyscy mieli wyższe wykształcenie. Co z tego, że mamy poważną nadprodukcję tegoż, teraz na własnej skórze przekonałem się, że to nic nie znaczy. Ludzie z wyższym technicznym / informatycznym wykształceniem nie nieli pojęcia o niczym. Na przykład:
- nie potrafili mentalnie sparsować 5 linii pseudokodu.
- Nie rozumieli rekurencji
- że o wskaźnikach i zarządzaniu pamięcią nie wspomnę
// N - liczba badana
for (i=2; i<N; i++) {
if (N mod i == 0) {
dzielisie = 1;
}
}
if (dzielisie == 1) {
return 0;
} else {
return 1
}
czym mnie zaskoczył, bo w miarę rozwiązywało to problem (nie chodziło o optymalizację oczywiście).
Zapytałem o modyfikację powyższego algorytmu tak, aby podawał liczby pierwsze takie, które są podzielne przez trzy. Zaproponował modyfikację ostatniego bloku else {} taką, żeby:
- zamienić liczbę N na stringa
- brać kolejne litery tego stringa (a więc cyfry), zamieniać je na liczby i sumować w zmiennej tymczasowej
- jeśli suma cyfr będzie podzielna przez 3 (tu wchodzi rekurencja, a jakże!) zwrócić 1, w przeciwnym wypadku 0.

1 comments:
Tak, pewnie tak jest
Prześlij komentarz