czwartek, 25 lipca 2013

Czy programista musi koniecznie być na bieżąco?

W nawiązaniu do poprzedniego wpisu, dziś o innych pytaniach z "wielkiej piątki" pytań wymyślonych przez pewnego rekrutera IT. 

Pytanie "Jakie jest Twoje podejście do dokumentacji" zadane jest, by sprawdzić tzw. dobre praktyki programistyczne kandydata. Problem w tym, że większość programistów uczestniczących w komercyjnych projektach zdaje sobie sprawę z tego, iż należy wykazać korzystanie z owych dobrych praktyk, niezależnie od tego, czy korzysta się z nich faktycznie. Który programista przyzna się na rozmowie rekrutacyjnej, że nie dokumentuje swojego kodu? Albo że nie lubi pracować w zespole? Obawiam się, że powyższe pytanie, jakkolwiek dobre w rekrutacyjnych intencjach, może być zbyt łatwo rozszyfrowane przez kandydata, który da odpowiedź taką jakiej rekruter oczekuje, jednak niekoniecznie zgodną z prawdą. 

Podobnie z pytaniem o wykorzystywane przez kandydata systemy kontroli wersji. Któż przyzna się, że z nich nie korzysta? W wyjaśnieniu zasadności pytania jego autor twierdzi, że można z jego pomocą (oraz kilku innych) dowiedzieć się, jakie standardy programowania panują w firmie czy w zespole, gdzie pracuje rekrutowany kandydat. Faktycznie, ma znaczenie to, gdzie nauczono nas programować, w jakim środowisku przyszło nam zdobywać programistyczne szlify. Znów jednak pytanie wydaje mi się zbyt wprost, by kandydat nie zorientował się, po co jest zadane i jak n a l e ż y na nie odpowiedzieć.

Pytanie "Podaj przykład projektu, który kompletnie się nie udał" rzeczywiście może doprowadzić nas do dowiedzenia się o radzeniu sobie kandydata z trudnościami. Może, ale nie musi. Wiele bowiem zależeć będzie od pytań kolejnych, wnikających w naturę porażki projektu i odkrywających faktyczne (!) zachowania kandydata wobec pojawiających się w projekcie trudności.

Wreszcie pytanie o wersje beta programów, z jakimi "bawi się" kandydat (użyję zaproponowanego tłumaczenia któregoś z czytelników: "Jakimi wersjami beta programów zajmujesz się najczęściej?"). Chodzi tu rekruterowi o sprawdzenie, czy kandydat jest na bieżąco, czy nadąża za nowinkami technologicznymi. Oczywiście, w branży tak dynamicznie rozwijającej się jak IT, lepiej być niż nie być na bieżąco. Ale nie należy to, moim zdaniem, do kluczowych przewag dobrego developera nad takim sobie. Są technologie, gdzie ma to większe znaczenie (np. iOS), ale są i takie (np. COBOL), gdzie codzienne śledzenie newsów niewiele programiście da i bez tego może być bardzo dobry w tym, co robi.

Klasyk w ocenianiu kompetencji developerów napisał kiedyś, że jedyne dwie rzeczy, których oczekuje od programisty, to by był bystry i by doprowadzał rzeczy do końca (smart and gets things done). Nie oparłbym żadnej rekrutacji tylko na tych dwóch wskaźnikach, ale podobają mi się. Często w rekrutacji proste pytania sprawdzają się bardziej niż te wydumane.

_______
fot.: creattica.com

czwartek, 18 lipca 2013

Czas wolny programisty jako wskaźnik jego kompetencji?

Przeczytałem niedawno krótki tekst, w którym pewien brytyjski rekruter IT wskazał na 5 najlepszych, jego zdaniem, pytań jakie powinno się zadawać programistom na rozmowach rekrutacyjnych. Ciekawe to pytania, ale na pewno nie określiłbym ich mianem najlepszych. Niektórych pewnie nie zadałbym w ogóle...

Co to za pytania?

1) "Nad jakimi projektami pracujesz w domu?" (Ma rzekomo sprawdzić, czy programista rzeczywiście ma pasję, której to oznaką będą domowe projekty i programowanie po godzinach).
2) "Z jakimi wersjami beta programów bawisz się?" (Zdaję sobie sprawę, że głupio brzmi w moim tłumaczeniu z angielskiego to pytanie, ale nie wpadłem na lepsze. W oryginale brzmiało "What beta toys are you playing with?" (nieco erotycznie). Pytanie ma za zadanie zbadać, czy programista nadąża za nowinkami technologicznymi, czy jest na bieżąco).
3) "Z jakich systemów kontroli wersji korzystasz?" (Dzięki temu pytaniu powinniśmy dowiedzieć się nt. praktyk programistycznych kandydata).
4) "Jakie jest twoje podejście do dokumentacji?" (j.w.)
5) "Podaj mi przykład projektu, który kompletnie się nie udał?" (Pytanie ma zbadać, jak kandydat reaguje w trudnych sytuacjach oraz jak naprawdę zachowuje się w miejscu pracy).

Właściwie zasadność każdego z tych pytań byłbym w stanie poddać sensownej krytyce. Tu skupię się na dwóch pierwszych, które wprawdzie są całkiem do rzeczy, ale chyba tylko tyle - daleko im do "top 5"?

Zasadność pytania nr 1 w sprawdzeniu, czy na rozmowie rekrutacyjnej mamy do czynienia z dobrym programistą, opiera się na założeniu, że dobry programista to programista z pasją; taki, dla którego programowanie jest nie tylko zawodowym, ale i życiowym powołaniem; taki, który programuje nie tylko w pracy, ale i po pracy. Jeśli ma jakieś hobby, to jest nim głównie programowanie. Rzeczywiście, trudno odmówić takiej osobie pasji do programowania. Czy jednak oznacza to koniecznie, że jest taki ktoś dobrym programistą? Fakt, spędza więcej czasu nad kodem, ma styczność z większą liczbą technologii. Ale co jeśli kiepsko przy tym myśli, nie "dowozi" rzeczy do końca i ma złe praktyki programistyczne?

Podstawowy jednak problem z tym pytaniem mam taki, że programiści-pasjonaci, spędzający znaczną część czasu wolnego na programowanie to chyba mimo wszystko mniejszość programistów. Większość ludzi, niezależnie od wykonywanego zawodu, ma jakieś rodziny, jakieś obowiązki domowe, lubi obejrzeć film czy poczytać książkę, pójść na piwo ze znajomymi, pouprawiać jakiś sport. Zostaje mało czasu na coś więcej. Dodatkowo, wielu programistów, po intensywnej intelektualnej pracy 8 godzin dziennie, woli najzwyczajniej odpocząć. Czy są gorszymi programistami niż ci kodujący również w domu? Niekoniecznie.

Oczywiście, zajmowanie się własnymi projektami "domowymi" może przynieść programiście wiele korzyści. Może być np. dobrym sposobem na poznanie technologii, z którymi nie ma się szansy styczności w pracy. Każdy czas spędzony z kodem jest dla developera cenny. Jednak sam fakt spędzania wolnego czasu na programowanie to moim zdaniem zdecydowanie zbyt mało, by mogło być kluczowym atutem w dowiedzeniu swoich kompetencji na rozmowie rekrutacyjnej. Programiści zaczynający po godz. 17 "życie pozakodowe" często są równie dobrymi specjalistami jak ci programujący także po godzinach.

Stąd pytanie "Nad jakimi projektami pracujesz w domu?", jakkolwiek nie najgorsze - gdyż może powiedzieć co nieco o pasjach kandydata - nie jest na pewno pytaniem "top 5".

O pozostałych pytaniach w kolejnym wpisie (też mam życie poza rekrutacją :)

_______

czwartek, 11 lipca 2013

Jak rekrutował Monthy Python

Mój kolega, wychodząc kiedyś ze spotkania w pewnej zaprzyjaźnionej firmie i widząc czekającego na rozmowę rekrutacyjną w tej firmie kandydata, zrobił żart, w udawanym zdenerwowaniu krzycząc: "jeszcze nikt nigdy mnie tak nie potraktował!".

To samo mógłby krzyknąć kandydat po rozmowie rekrutacyjnej przedstawionej na poniższym filmie. Miał pecha, gdyż rekrutującym był tu członek grupy Monty Python.

No i stanowisko, na które aplikował, i tak było już od kilku tygodni zajęte...





_______