![]() | ||
Joel a szoftverről szoftvermenedzsment egyszerűen
| ||
Az interjúztatás gerilla-taktikájaÍrta: Joel Spolsky (2000. március 23.)
A Fog Creek Software-nek roppant fontos, hogy a megfelelő embereket vegye föl. A skála egyik felén vannak a mosdatlan tömegek, akiknek még a legalapvetőbb képzettségük sincs meg a munka elvégzéséhez. Ezeket könnyű kirostálni, elég csak ránézni az önéletrajzukra, és kérdezni tőlük egy-két gyors kérdést. A másik végpont a ragyogó elmék, akik Lisp értelmezőt írnak szórakozásból egy hétvégén, assembly-ben, Palm Pilot-ra. Aztán ott van a közepe, a rengeteg „talán”, akik úgy tűnik, épphogy hozzá tudnak nyúlni valamihez. Az a trükk az egészben, hogy észrevedd a különbséget a ragyogó elmék és a talánok között, mivel a Fog Creek Software-nél csak a ragyogó elmékre van szükség. Van is erre néhány technika. Előszöris az egyes számú követelmény a Fog Creek-nél: Ügyes, és Ez az egész. Csak ennyire van szükségünk. Memorizáld. Ismételgesd magadban minden este, mielőtt elaludnál. Olyan ember felvétele a célunk, akiben megvan a rátermettség, nem valami megadott tudáshalmaz. Szinte az összes tudáshalmaz elavul néhány éven belül, amit az ember az új munkahelyére hoz. Szóval inkább olyat vegyél fel, aki képes bármilyen új technológiát megismerni, mint olyat, aki most rögtön tud SQL-ben programozni. Az ügyességet nehéz meghatározni, de néhány lehetséges interjúkérdéssel meglátjuk, hogy tudjuk kiszűrni. A feladatok megoldásának képessége szintén alapkövetelmény. Azok, akik ügyesek, de nem tudják megoldani a feladatot, gyakran rendelkeznek doktori címmel, és nagy cégeknél dolgoznak, ahol senki sem figyel rájuk, mivel egyáltalán nem praktikusak. Inkább rágódnak elméleti dolgokon, minthogy időre kész legyenek. Ezeket az embereket könnyű észrevenni, mert szeretnek hasonlóságot észrevenni homlokegyenest ellentmondó elgondolások között. Például olyanokat mondanak, hogy „a számolótáblák tulajdonképpen a programozási nyelvek egy speciális formája”, majd elnyammognak egy hetet a számolótáblák és az elméleti számítástechnikai nyelvezet összefüggéseinek megrázó, brilliáns tézisbe foglalásával. Ügyes, de semmi gyakorlati haszna nincs. Aztán azok, akik meg tudják oldani a feladatot, de nem elég ügyesek, sok hülyeséget is megcsinálnak, látszólag át sem gondolva azokat, hogy aztán valaki más rendet rakjon utánuk. Ezek kárt okoznak a vállalatnak, mert ők nem hogy nem vesznek tevékenyen részt a munkában, de még hátráltatják is a jó emberek munkáját. Ezek képesek másolgatni hatalmas programrészleteket ahelyett, hogy az egészet beraknák egy szubrutinba. Végülis így is el lesz végezve a munka, bár nem a legügyesebben. Az interjúztatás legfontosabb szabálya: Dönts Az interjú végén már tudnod kell, hogy mit akarsz a jelölttől. Csak két lehetséges eredménye lehet a döntésnek: felveszed, vagy nem veszed fel. Menj a számítógépedhez, és írj azonnali választ a felvételizőnek. Az e-mail első sora legyen felveszünk vagy nem veszünk fel. Aztán írj kb. két bekezdést döntésed megtámogatandó. Nincs más lehetséges válasz. Sose mondd azt, hogy „Felveszünk, de nem a mi részlegünkbe”. Ez durva, és azt sugallja, hogy a jelentkező nem elég ügyes ahoz, hogy veled dolgozzon, de annyira azért még igen, hogy egy másik, gyengébb csapatba bekerülhessen. Ha úgy érzed, mégis azt kéne írnod, hogy „felveszünk, de nem a mi részlegünkbe”, egyszerűen fordítsd le mechanikusan „nem veszünk fel”-re, és így rendben is van. Még ha a jelentkező egy megadott dologban tökéletes is lenne, de nem lenne jó más dolgokban, ne vedd fel. Az ilyeneknek nem lenne jövője a Fog Creek-ben. Sose mondd, hogy „Talán, nem tudom megmondani”. Ha nem tudod megmondani, az azt jelenti, hogy nem veszed fel. Ez sokkal egyszerűbb, mint hinnéd. Nem tudod eldönteni? Csak mondj nemet! Hasonlóan, ha rezeg a léc, ne vedd fel. Sose mondd, hogy „úgy gondolom felveszünk, de azért aggódom amiatt, hogy…”. Ez is egy ne vedd fel eset. Ne felejtsd el azt a fontos dolgot interjúztatáskor, hogy sokkal jobb nemet mondani egy jó jelentkezőre, minthogy igent mondanál egy rossznak. Egy rossz jelentkező sok pénzedbe, erőfeszítésedbe fog kerülni, nem beszélve a kollégái többletmunkájáról, amit a rossz munka után kell végezniük. Szóval ha bármilyen kétséged felmerül, ne vedd fel. Az interjúztatáskor ne törődj azzal, hogy sok embert fogsz elutasítani, és így a Fog Creek sosem lesz képes megtalálni bárkit is, akit felvehet. Ez nem a te problémád. Ez a munkaerőtoborzó problémája, a HR problémája, Joel problémája, de nem a te problémád. Kérdezgesd magadtól, hogy melyik a rosszabb – ha egy nagy, órmótlan szoftvercéggé válunk sok semmirekellővel, vagy kicsik maradunk, de megtartjuk jó minőségünket? Természetesen az fontos, hogy jó jelentkezőket találjunk és mindenki feladatának érezze, hogy ügyes, problémát megoldani képes embereket kutassunk fel és alkalmazzunk. Ám mikor épp interjúztatsz, tégy úgy, mintha a Fog Creek-nek rengeteg jó jelentkezője lenne. Sose ereszd lejjebb a lécet, akármilyen nehéznek tűnik jó jelentkezőket találni. De hogy hozd meg ezt a nehéz döntést? Csak kérdezgesd magadtól: ügyes ez az ember? Vajon meg tudja oldani a feladatokat? Hogy ezekre válaszolni tudj, a jó kérdéseket kell feltenni neki az interjún. Csupán a móka kedvéért álljon itt a világ egyik legrosszabb interjú kérdése: „Mi a különbség a varchar és a varchar2 között Oracle 8i-ben?” Elég borzasztó kérdés. Nincs bármilyen lehetséges, elképzelhető korreláció az ilyen használhatatlan kvízkérdést megválaszolni képes ember, és az olyan közt, akit a Fog Creek fel kívánna venni. Kit érdekel, mi a különbség? Az egészet kb. 15 másodperc alatt megkeresheted a hálón! Tulajdonképpen vannak ennél rosszabb kérdések is, de azt inkább csak később. El is érkeztünk a legizgalmasabb részhez, az interjú kérdésekhez. Az én interjú kérdéseim a Microsoft-os első munkámból adódnak. Ezernyi ismert Microsoft interjúkérdés van. Mindenkinek megvan egy csokorral abból, amit szeret. Te is kifejlesztesz majd egy saját kérdéscsokrot és interjú stílust, ami a felveszem / nem veszem fel kérdést segíti eldönteni. Íme néhány technika, amit eredményesen használok: Az interjú előtt elolvasom a jelentkező önéletrajzát, és leskiccelem az interjú tervet egy papírfecnire. Ez csak egy kérdéslista, amit meg akarok kérdezni. Egy programozó esetében általában ilyen a listám:
Az interjú előtt nagyon, nagyon körültekintően elkerülök bármi előítéletre okot adható dolgot a jelölttel kapcsolatban. Ha az előtt gondolod úgy, hogy egy jelölt ügyes, mielőtt egyáltalán bemennél a tárgyalóba, csak azért, mert a M.I.T.-n szerzett doktori címet, akármit is mond az egy órában, semmi sem fogja túlszárnyalni az előítéletet. Ha azt gondolod, hogy hülye, semmivel sem tudja bebizonyítani az ellenkezőjét. Egy interjú nagyon, nagyon finom mérce – nagyon nehéz egy órás interjúval megítélni bárkit is, mivel a lehetséges értékek nagyon közel esnek. Ám ha már előre tudsz valamit a jelentkezőről, az könnyen elbillentheti a mérleget az egyik irányba, az egész interjút fölöslegessé téve. Egyszer pont interjú előtt a fejvadász bejött az irodába, mondván, „egyszerűen imádni fogod ezt az embert”. Majdnem felrobbantam. Olyasmit kellett volna válaszolnom, hogy „ha annyira biztos vagy benne, hogy imádni fogom, akkor miért nem veszed fel anélkül, hogy pazarolnád az időmet?”. Ám akkor fiatal voltam és naív, és meginterjúztattam. Amikor nem túl ügyes dolgokat kezdett mondani, mondtam is magamban, „ej, hát itt a kivétel, ami erősíti a szabályt”. Mindent rózsaszín szemüvegen át néztem. A végén úgy döntöttem, felvesszük, mégha egész gyenge kis jelölt is volt. Aztán tudod, mi történt? Mindenki más, aki szintén meginterjúztatta, nem vesszük fel-ot mondott! Szóval ne hallgass a fejvadászokra! Ne kérdezd körbe az embert, mielőtt meginterjúztatod, és soha, de soha ne beszélj a többi interjúztatóval a jelentkezővel kapcsolatban, amíg külön-külön meg nem hoztátok a döntéseiteket. Ez a tudományos módszer! A Bemutatkozás fázisban könnyen kell fogni a jelentkezőt. Kb. fél percben elmondom, hogy ki vagyok, és hogyan fogom interjúztatni. Mindig biztosítom a jelentkezőt, hogy arra leszünk kíváncsiak, hogyan oldja meg a feladatot, nem a tényleges válaszra. Egyébként az interjú alatt mindig győződj meg, hogy nem ülsz az asztal a jelentkezővel ellentétes oldalán. Ez formai akadályt képez köztetek, amitől a jelentkező kényelmetlenül fogja érezni magát. Jobb, ha az asztalt a falhoz állítod, vagy körbemész, és a jelentkező melletti helyet foglalod el. Ez jobb interjút eredményez, mert kevésbé fogja zavarni az idegesség. A második rész a jelentkező egy nem régi projektjéről szól. Főiskolás gyerekeket interjúztatva kérdezd a diplomamunkájukról, ha már van, vagy egy olyan tárgyukról, amiben olyan hosszabb projektben vettek részt, amit nagyon szerettek. Például néha azt kérdezem, hogy „az utolsó szemeszterben melyik tárgyat szeretted a legjobban? Nem muszály csak számítógépekkel kapcsolatosakra gondolni”. Tulajdonképpen nagyon örülök, ha egy nem számítógépes tárgyat választanak. Néha, mikor bepillanthatsz az órarendjükbe, olyasmiket láthatsz, hogy csak a legkevesebb időt töltenek számítástechnikával, míg minden nagyobb tárgyuk valahogy a zenével kapcsolatos. Ezek után ha azt mondják, hogy az objektumorientált adatbázisok a kedvenc témájuk, hát persze. Ilyenkor jobban örülnék, ha elismernék, hogy jobban szeretik a zenét, mint a számítógépeket, ahelyett, hogy hazudnának. Tapasztalt jelentkezők interjújánál rákérdezhetsz előző munkájukra. Ebben a kérdésben egy dolgot keresek: a szenvedélyt. Ha egy friss projektről beszél a jelentkező ezek mind jó jelek:
A harmadik sor a lehetetlen kérdésről szól. Ez megint csak egyszerű. Az ötlet az, hogy olyat kérdezz, amire nincs lehetséges válasz, csak hogy lásd, hogy oldja meg a feladatot. „Hány szemvizsgáló szalon van Seattle-ben?” „Hány tonnát nyomhat a Washington Szobor?” „Hány benzinkút van Los Angeles-ben?” „Hány zongorahangoló van New York-ban?”
Programozási kérdésekre rövid programot iratok a jelentkezőkkel C-ben. Íme néhány tipikus kérdés:
Ne akarj olyan feladatot adni nekik, amit több, mint öt sorban kell leírni: nincs elég időd arra. Lássunk néhányat részleteiben. Vegyük például az elsőt: szövegmegfordítás helyben. Akit csak eddig interjúztattam, elsőre rosszul csinálta. Kivétel nélkül helyet akartak foglalni egy másik puffernek, és abba akarták berakni a megfordított stringet. A baj ezzel csak az, hogy ki foglalja le a helyet? Ki szabadítja majd fel? Tucatnyi jelentkezőnek feltéve a kérdést nagyon érdekes tényre lettem figyelmes: a legtöbb C programozó valójában nem érti a mutatókat és a memóriafoglalást. Egyszerűen nem fogják. Igen különös, hogy ezek az emberek programozóként dolgoznak, de ez az igazság. Ezzel a kérdéssel sok mindent lemérhetsz a jelentkezőről:
A harmadik feladatból azt tudhatod meg, hogy mennyire tanulták meg a bitorientált operátorokat C-ben. Ám ez mindenképpen ismeret, és nem adottság, szóval ezen még lehet javítani. Az ebben az érdekes, hogy láthatod, hogyan írja a függvényt, ami megszámolja a biteket egy bájtban, majd megkérheted, hogy sokkal, de sokkal gyorsabban működjön. A nagyon ügyes jelöltek egy adattáblát készítenek (végülis csak 256 elemből áll), amit csak egyszer kell felépíteni. Jó jelöltekkel nagyon érdekes vitába bocsátkozhatsz a különböző hely/sebesség arányokról. Gyakorolj rájuk még nagyobb nyomást: mondd nekik, hogy nem akarsz időt pazarolni az adattábla elkészítésére inicializáláskor. A brilliáns jelentkezők javasolhatják a gyorstárat is, ahol a biteket minden első alkalomkor számolják csak ki. Az eredményt aztán elteszik az adattáblába, és többet már nem kell újra kiszámolni. Nagyon, nagyon brilliáns jelöltek olyan módszert eszelhetnek ki, amivel a táblát valami egyszerűsített eljárással számolhatják ki, bizonyos minták alapján. Mások kódírásának figyelésekor érdemes figyelembe venni néhány dolgot:
Elkerülhetetlen, hogy hibát ejtsenek a függvényben. Így elérkeztünk az ötös kérdéshez: Elégedett vagy a kóddal? Már a nyelveden van, hogy „OK, hol lehet a hiba?” Ez a Minden Nyitott Kérdések Horrorának kvintesszenciája. Minden programozó vét hibákat, ezzel nincs semmi baj. Csak meg kell találniuk azokat. A string függvényeknél szinte mindig elfelejtik null-lal lezárni az új stringet. Szinte az összes függvénynél vannak szinte mindig elkövetett hibák. Néha lefelejtik a pontosvesszőt. Függvényük nem működik nulla hosszúságú string-eknél, vagy GPF-ezik, ha a malloc() nem sikerül… Nagyon, nagyon ritka, hogy olyan jelöltet találsz, akinek először sincs hiba a kódjában. Ebben az esetben a kérdés még érdekesebb. Ha azt mondod, hogy „van egy hiba a kódodban”, tüzetesen átnézi a kódot, és a végén kapsz egy diplomatikus, de határozott választ, hogy a kód tökéletes… Általában mindig jó ötlet megkérdezni, hogy elégedett-e a kóddal, mielőtt tovább lépsz. Légy precíz. Hatodik kérdés: a tervezési feladat. Kérd meg a jelöltet, hogy tervezzen valamit. Az Excel eredeti tervezője, Jabe Blumenthal azt akarta, hogy a jelöltek tervezzenek házat. Jabe szerint voltak olyanok, akik kapásból odaléptek a táblához, és rajzoltak egy négyzetet. Négyzetet! Ezek kapásból nem veszük fel esetek. Tervezési kérdésben mit is keresünk?
Ami elvezet a hetes ponthoz, A Vitatkozáshoz. Ez is jó móka. Az egész interjú alatt keress a jelölt állításai közt olyat, amiben teljesen, pozitívan, megkérdőjelezhetetlenül igaza van. Aztán mondd azt, hogy „várj csak egy percet”, és két percig legyél az ördög ügyvédje. Vitatkozz vele, miközben tudod, hogy igaza van.
Az interjú kétségkívül nem két egyenlő fél között zajlik. Ezért megvan a veszélye annak, hogy a jelölt fél vitatkozni veled, mivel alacsonyabb pozícióban van. Ám a jó jelöltek elég szenvedélyesek lesznek a vitában, és akár még azt is elfelejtik egy pillanatra, hogy interjún vannak, annyira meg akarnak győzni. Ezeket az embereket akarjuk mi felvenni. Végül meg kell kérdezned a jelölttől, hogy van-e valami kérdése. Néhányan látni akarják, hogy a jelölt intelligens kérdéseket tesz fel, ami az interjúról szóló könyvek szokványos technikája. Személy szerint nem érdekel, milyen kérdéseket teszek fel. Ekkorra már meghoztam a döntésemet. A baj az, hogy a jelöltek egy nap 5-6 emberrel találkoznak, és nehéz mindegyiknek különböző, brilliáns kérdéseket feltenni, szóval ha nincs kérdésük, az sem baj. Én mindig hagyok öt percet az interjú végére, hogy eladjam a Fog Creek-et. Ez még akkor is fontos, ha nem akarod felvenni őket. Ha elég szerencsés vagy, és kifogsz egy igazán jó jelentkezőt, mindent meg akarsz tenni azért, hogy a Fog Creek-hez jöjjön dolgozni. Még ha rossz is a jelölt, azt akarod, hogy érdekelje őket a Fog Creek, és pozitív benyomásaik legyenek, mikor elmennek. Gondolkodj erre úgy, hogy ezek az emberek nem csak lehetséges alkalmazottak, de lehetséges vásárlók is. Ők lehetnek a toborzási erőfeszítéseink kereskedői: ha úgy gondolják, a Fog Creek-nél jó lehet dolgozni, barátaikat is rávehetik, hogy jelentkezzenek. Á, eszembe jutott, hogy megígértem, mondok még néhány példát az igazán rossz, kerülendő kérdésekre. Legelőszöris kerüld a tilos kérdéseket. Minden fajra, felekezetre, nemre, nemzetiségre, életkorra, katonai alkalmasságra, harci tapasztalatra, szexuális érdeklődésre vagy fizikai fogyatékosságra vonatkozó kérdés tilos. Ha az önéletrajzukban az áll, hogy 1990-ben a hadseregnél szolgált, ne kérdezz rá, még ha csak csevegni is akarsz, hogy részt vett-e az Öbölháborúban. Ez a törvényekkel ellentétes. Ha azt írják az önéletrajzukban, hogy a Technion-on tanultak Haifában, még csak említés szintjén se kérdezd meg, hogy izraeli-e. Ez is törvényellenes. Van egy nagyon jó értekezés a weben arról, hogy mi tilos (de az ott felsorokt interjú kérdések elég idióták). Aztán kerüld azokat a kérdéseket, amik úgy tűnhetnek, hogy érdekel bennünket, vagy amik diszkriminatív dolgokon alapulnak, ám egyáltalán nem érdekelnek bennünket, és egyáltalán nem zavarnak. A legjobb példa erre megkérdezni valakit, hogy vannak-e gyerekei, vagy hogy házas-e. Ezek hamis benyomásokat keltenek bennük, hogy azt feltételezzük, a gyerekek mellett már nem tudnak elegendő időt szánni a munkájukra, vagy hogy majd elmennek szülési szabadságra. Aztán végül kerüld az olyan agyra gyúró kérdéseket, mint azt, hogy helyezzen el hat egyenlő hosszúságú gyufát úgy, hogy pontosan négy egyenlő oldalú háromszöget kapjunk. Ezek az ún. „aha!” kérdések, amiből az „ügyes / meg tudja oldani a dolgokat” kérdésekre nem tudsz válaszolni, pusztán arra, hogy képes volt-e a mentális ugrásra. Az interjúztatás inkább művészet, mint tudomány, de ha nem feleded az ügyes / meg tudja oldani a dolgokat alapelvet, már egész jól állsz. Ha alkalmad van rá, kérdezd meg egy munkatársadat, hogy mik a kedvenc kérdései, és hogy milyen válaszokat várnának. Redmondban, a 16. épület ebédlőjében ez a társalgás állandó témája. | ||