![]() | |||
Joel on Software Joel over Software
| |||
|
Andere "Joel on Software" artikelen in het Nederlands Andere "Joel on Software" artikels in het Engels |
Door Joel Spolsky Vertaald door Jeroen van Oosten Geredigeerd door Bernard Vander Beken 23.3.2000 Het aannemen van de juiste mensen is zéér belangrijk voor Fog Creek Software. In ons vakgebied zijn er drie soorten mensen. Aan de ene kant van het spectrum zijn er degenen die nog nat achter de oren zijn, met nog niet eens een minimale hoeveelheid kennis in huis. Deze zijn er snel uit te halen, vaak door alleen maar naar het CV te kijken en twee of drie korte vragen te stellen. Het andere uiteinde bevat briljante uitblinkers die voor de lol Lisp compilers schrijven, in een weekeinde, in assembler voor de Palm Pilot. En daartussen heb je een groot aantal "misschien" die wellicht in staat zijn om iets toe te voegen. De truc zit hem er in het verschil tussen de uitblinkers en de misschien-en te zien, omdat we bij Fog Creek Software enkel de uitblinkers aannemen. Hier zijn een aantal technieken om dat voor elkaar te krijgen. Ten eerste, de absolute nummer één criteria om bij Fog Creek aangenomen te worden zijn:
Slim is ietsje moeilijker te quantificeren, maar als we straks gaan kijken naar mogelijke sollicitatievragen zullen we zien hoe we daar achter kunnen komen. Dingen Gedaan Krijgen is cruciaal. Mensen die Slim zijn maar geen Dingen Gedaan Krijgen hebben vaak ingenieurstitels en werken voor grote firma's waar toch niet naar ze geluisterd wordt omdat ze volslagen nutteloos werk afleveren. Ze houden zich liever met een of ander theoretisch probleem bezig in plaats van op tijd hun product af te leveren. Dit soort mensen herken je omdat ze je graag wijzen op de theoretische overeenkomsten tussen twee compleet verschillende concepten. Zij zullen bijvoorbeeld zeggen dat "een spreadsheet niets anders dan een speciaal geval van een programmeertaal", om vervolgens een week te spenderen aan het schrijven van een briljante white paper over de theoretische rekenkundige taalkundige attributen van een spreadsheet als programmeertaal. Briljant, maar volslagen nutteloos. Welnu, mensen die Dingen Gedaan Krijgen maar niet Slim zijn, doen domme dingen zonder er schijnbaar over na te denken, en iemand anders kan later de troep achter ze op gaan ruimen. Dit maakt ze tot kostenposten, omdat ze niet alleen niks toevoegen, maar ze verkwisten ook nog eens andermans tijd. Dit is het soort mensen dat grote stukken code kopieëert in plaats van een subroutine te schrijven omdat het zo ook wel werkt, maar niet bepaald op de slimste manier. De belangrijkste regel bij sollicitatiegesprekken is:
Aan het einde van het gesprek moet je in staat zijn een duidelijke beslissing over de kandidaat te nemen. Er zijn slechts twee uitkomsten mogelijk: Doen of Niet Doen. Ga achter je PC zitten en stuur spoedig een antwoord naar de recruiter of kandidaat. Het onderwerp moet de naam van de kandidaat zijn. De eerste regel van het mailtje luidt: Aangenomen (Doen) of Niet Aangenomen (Niet Doen). Dan schrijf je nog een tweetal paragrafen ter ondersteuning van je beslissing. Er is geen ander antwoord mogelijk. Zeg nooit: "Doen, maar niet in mijn groep." Dit is onbeschoft en impliceert dat de kandidaat niet slim genoeg is voor jouw groep, maar misschien wel voor dat stelletje imbecielen van de andere groep. Als je naar "Doen, maar niet in mijn groep" neigt, vertaal dat dan automatisch naar Niet Doen en dan is er geen probleem. Zelfs als je een kandidaat hebt die heel erg goed is in één specifiek ding, maar niet echt goed in een andere groep zou passen, ook dat is Niet Doen. Dingen veranderen zo vaak en zo snel dat we mensen nodig hebben die overal kunnen slagen. Als je op de een of andere manier een idiot savant vindt die erg, erg goed is met SQL maar niet in staat is ook maar iets anders te leren, Niet Doen. Zij hebben geen toekomst bij Fog Creek. Zeg ook nooit: "Misschien, maar ik weet het niet.". Twijfelen betekent Niet Doen. Het is echt veel gemakkelijker dan je denkt. Twijfel? Zeg gewoon nee! Zelfs als je op het randje staat, betekent dat Niet Doen. Zeg nooit: "Wel, Doen, zou ik zeggen, ik weet alleen niet of ..." Ook dat is Niet Doen. Een belangrijk iets om te onthouden bij gesprekken is dit: het is veel beter om een goede kandidaat af te wijzen dan om een slechte aan te nemen. Een slechte kandidaat kost veel geld en moeite en verspilt de kostbare tijd van anderen omdat zij de bugs mogen oplossen. Als je ook maar de geringste hoeveelheid bedenkingen hebt, Niet Doen. Als je gesprekken voert, wees dan niet bang dat als je te veel mensen afwijst, Fog Creek niet in staat zal zijn iemand te vinden om aan te nemen. Dat is niet jouw probleem. Het is het probleem van de headhunters, personeelszaken, Joel's probleem, maar niet het jouwe. Vraag jezelf telkens af wat erger is - dat we uitgroeien tot een groot, slecht software bedrijf met een stel dombo's, of dat we klein maar van hoge kwaliteit blijven? Uiteraard is het belangrijk om goede kandidaten te vinden en iedereen binnen het bedrijf zou het als zijn taak moeten zien om slimme mensen die Dingen Gedaan Krijgen te zoeken. Maar áls je uiteindelijke iemand ondervraagt, doe dan net alsof Fog Creek genoeg kandidaten heeft. Verlaag nooit je standaarden, hoe moeilijk het ook lijkt om geschikte kandidaten te vinden. Maar hoe maak je die moeilijke beslissing? Je moet jezelf tijdens het interview blijven afvragen: is deze persoon Slim? Krijgt hij of zij Dingen Gedaan? Om dat te achterhalen zul je de juiste vragen moeten stellen. Voor de lol is hier de slechste sollicitatievraag op Aarde: "Wat is het verschil tussen varchar en varchar2 in Oracle 8i?" Dat is een nutteloze vraag. Het is volslagen onmogelijk enig verband te leggen tussen iemand die dit stukje trivia weet en een persoon die Fog Creek wil aannemen. Wat maakt het uit wat het verschil is? Op het Net kun je dat binnen 15 seconden opzoeken! Nou ja, er zijn nog slechtere vragen mogelijk. Meer daarover later. Nu komen we tot het leukste deel: de vragen. Mijn lijst van sollicitatievragen komt van mijn eerste baan bij Microsoft. Er zijn in feite honderden beroemde Microsoft sollicitatievragen. Iedereen heeft er een paar die hun goed bevalt. Ook jij zult een aantal vragen ontwikkelen in combinatie met een persoonlijke interviewstijl die je zal helpen de Doen/Niet Doen beslissing te maken. Hier zijn een aantal technieken die ik gebruikt heb die successvol zijn geweest. Voor het gesprek lees ik het CV van de kandidaat en noteer een interview plan op een stukje papier. Dit is een lijstje vragen dat ik wil stellen. Hier is een typisch lijstje voor als ik een programmeur zie:
Ik probeer altijd zeer zorgvuldig te vermijden dat ik van te voren een vooroordeel krijg over de kandidaat. Als je denkt dat iemand slim is voordat ze ook maar in de kamer zijn, alleen maar omdat ze een titel van MIT hebben, dan zal niets in dat ene uur van het gesprek je daarvan af kunnen brengen. Als je denkt dat het een clown is, zal niets dat ze kunnen zeggen die eerste indruk kunnen veranderen. Een sollicitatiegesprek is als een heel gevoelige weegschaal - het is erg lastig om iemand te beoordelen op basis van een gesprek van een uur en vooral als het een moeilijke beslissing wordt. Als je dan ook maar een heel klein beetje weet van de kandidaat van te voren, fungeert dat als een zwaar gewicht op één van de schalen en is het hele gesprek waardeloos. Eens, vlak voor een gesprek, kwam de recruiter mijn kantoor binnenwandelen en zei: "Echt, de volgende kandidaat zul je fantastisch vinden." Wat ben ik daar kwaad om geworden, zeg. Wat ik had moeten zeggen was, "Nou, als jij hem zo fantastisch vindt, dan neem jij hem toch aan in plaats van er mijn tijd mee te verspillen?" Maar ik was jong en naïef, dus heb ik hem toch ondervraagd. Toen hij niet zulke slimme dingen zei, dacht ik bij mezelf, "Hmm, dit moet de uitzondering zijn die de regel bevestigt." Ik bekeek alles wat hij zei met een roze brilletje. Uiteindelijk zei ik Doen terwijl het een slechte kandidaat was. En weet je wat? Iedereen die hem had ondervraagd had Niet Doen gezegd. Dus: luister niet naar recruiters; vraag niet naar de persoon vóór het interview; en praait nooit, maar dan ook nooit, met andere collega's over de kandidaat totdat je onafhankelijk je mening hebt gevormd. Het is net wetenschap! De Introductie is bedoeld om de kandidaat op zijn of haar gemak te stellen. In ongeveer 30 seconden vertel ik de persoon wie ik ben en hoe het gesprek in zijn werk gaat. Ik vertel de kandidaat altijd dat we meer geïnteresseerd zijn in hoe hij het probleem oplost, en niet het antwoord zelf. Trouwens, zorg er tijdens het gesprek voor dat je niet aan de andere kant van het bureau zit. Dit creëert een formele drempel waardoor de kandidaat niet ontspant. Het is beter om het bureau tegen de muur te zetten of aan de andere kant van het bureau bij de kandidaat te gaan zitten; dit helpt de kandidaat gerust te stellen. Het gevolg is een beter gesprek omdat het niet verstoord wordt door zenuwachtigheid. Deel twee is een vraag over een recent project waar de kandidaat aan heeft gewerkt. Bij net afgestudeerde mensen vraag ik ze naar hun afstudeerwerk als ze er één hadden, of een vak dat ze gevolgd hebben dat een lang project omvatte dat ze echt leuk vonden. Soms vraag ik bijvoorbeeld: "Welk vak heb je het laatste semester gevolgd dat je echt leuk vond? Het hoeft niet iets met computers te maken te hebben." Vaak vind ik het zelfs beter als ze een niet-computer vak noemen. Soms kijk je naar hun CV en ziet het er naar uit dat ze het absolute minimum aan computer vakken hebben gevolgd, maar de rest is gewijd aan muziek. Dan vertellen ze dat hun favoriete vak Object Geörienteerde Databases was. Tuurlijk. Ik heb veel liever dat ze toegeven dat ze muziek veel leuker vinden dan computers, in plaats van mijn hielen te likken. Wanneer je ervaren kandidaten ondervraagt, kun je over hun vorige baan praten. Bij deze vraag kijk ik naar één ding: passie. Wanneer je praat over een onderwerp waar ze recentelijk aan gewerkt hebben, dan zijn dit de goede tekenen:
Okay, het derde item op de lijst is de Onmogelijke Vraag. Dit is altijd leuk. Het idee is om ze een vraag te stellen waar ze onmogelijk een antwoord op kunnen hebben, gewoon om te zien hoe ze er mee om gaan. "Hoeveel opticiens zijn er in Seattle?" "Hoeveel ton weegt het Washington Monument?" "Hoeveel benzinestations zijn er in Los Angeles?" "Hoeveel pianostemmers wonen er in New York?"
Voor programmeervragen moeten kandidaten een kleine C functie schrijven. Hier zijn een paar typische problemen die ik ze voorleg:
Laten we er een paar wat nauwkeuriger bekijken. Nummer 1: draai een string achterstevoren, ter plekke. Iedere kandidaat die ik tot nog toe in mijn leven heb ondervraagd deed het de eerste keer fout. Zonder uitzondering proberen ze een buffer te alloceren en draaien de string in die buffer om. Het probleem is, wie alloceert die buffer? Wie geeft hem weer vrij? Nadat ik deze vraag aan een dozijn of wat kandidaten heb gesteld is me iets opgevallen. Veel mensen die denken dat ze C kunnen programmeren begrijpen niets van geheugen of pointers. Ze snappen het gewoon niet. Het is verbazingwekkend dat deze mensen als programmeur werken, maar toch is het zo. Met deze vraag zijn er een aantal manieren om je kandidaten te beoordelen:
Bij nummer 3 kun je zien hoe goed ze om kunnen gaan met bit operators in C... Maar dit is een vaardigheid, dus kun je ze een beetje helpen. Het is interessant om ze een subroutine te zien schrijven die alle bits in een byte telt, om ze vervolgens te vragen de routine veel sneller te maken. Echt slimme kandidaten maken een opzoek-tabel (het zijn tenslotte maar 256 posities) die ze maar één keer hoeven aan te maken. Met goede kandidaten kun je interessante discussies hebben over geheugen/snelheid afwegingen. Maak het ze nog lastiger: zeg hun dat je zelfs geen tijd wil besteden aan het opbouwen van de tabel gedurende de initialisatie. Briljante kandidaten kunnen zelfs een methode voorstellen waarbij de bits gedurende de eerste keer geteld worden, en ze dan opslaan in een cache zodat ze niet opnieuwd geteld hoeven te worden. De echte briljante kandidaten zullen een manier proberen te vinden om de tabel te berekenen aan de hand van de patronen die voorkomen. Als je iemand code ziet schrijven zijn hier nog wat tips die kunnen helpen:
Het is onvermijdelijk dat je een bug in hun code zie. Dus komt vraag numero 5: Ben je tevreden met deze code? Je kan ook vragen: "Ok, waar zit de bug?" De spreekwoordelijke Open Vraag Uit De Hel. Alle programmeurs maken wel een fout; daar is niks mis mee als ze hem maar kunnen vinden. Met de string functies vergeten ze bijna altijd om de nieuwe string met een nul af te sluiten. Met vrijwel iedere functie zitten ze er eens eentje naast. Ze vergeten soms een puntkomma. Hun functie werkt niet op strings met een lengtje van 0, of knallen eruit als hun malloc() faalt. Heel zelden zul je een kandidaat treffen waar de eerste keer geen bug in hun code zit. In dat geval is het nog leuker. Als je zegt "Er zit een bug in je code.", dan zullen ze hun code zorgvuldig nalopen, en dan moet je eens kijken of ze diplomatiek maar ferm stellen dat hun code toch echt correct is... Over het algemeen is het beter om de kandidaat nadrukkelijk te vragen of ze tevreden zijn over hun code alvorens verder te gaan. Vraag 6: de ontwerpvraag. Vraag de kandidaten om iets te ontwerpen. Jabe Blumenthal, de oorspronkelijke ontwerper van Excel, vond het leuk om kandidaten een huis te laten ontwerpen. Volgens Jabe waren er kandidaten die onmiddellijk naar het whiteboard liepen en een vierkant tekenden. Een vierkant! Dat zijn dus onmiddelijk Niet Doen-ers. Bij ontwerpvragen, waar kijk je naar?
Hetgeen ons tot punt nummer 7 brengt, De Uitdaging. Ook dit is leuk. Gedurende het interview wacht je tot de kandidaat iets zegt dat ontegenzeggelijk, onherroepelijk en absoluut waar is. Dan zeg je "wacht eens even, momentje" en vervolgens speel je twee minuten lang advocaat van de duivel. Argumenteer met ze als je zeker weet dat zij gelijk hebben.
Toegegeven, een sollicitatiegesprek is een ongelijke situatie, dus het risico bestaat dat de kandidaat je niet tegen durft te spreken omdat jij in een machtspositie verkeert. MAAR, goede kandidaten kunnen behoorlijk gepassioneerd raken tijdens de discussie en tijdelijk vergeten dat ze bezig zijn met een sollicitatiegesprek en zullen je niettemin proberen te overtuigen. Dat is het soort mensen dat we willen hebben. Tenslotte vraag je aan de kandidaten of ze zelf nog vragen hebben. Sommige mensen willen graag weten of een kandidaat intelligente vragen stelt, hetgeen een standaard techniek is in alle boeken over sollicitatie-interviews. Persoonlijk interesseert het me niet wat voor vragen ze stellen omdat ik op dat moment mijn beslissing al genomen heb. Het probleem is dat de kandidaten soms vijf tot zes personen per dag moeten spreken, en het is lastig om voor al die mensen een intelligente, briljante vraag te verzinnen. Als ze niets te vragen hebben: prima. Ik laat ook altijd een minuut of vijf over aan het einde van het interview om Fog Creek aan hun te verkopen. Dit is heel belangrijk, zelfs als je ze niet aanneemt. Als je het geluk hebt om een geschikte kandidaat te treffen, dan wil je er ook voor zorgen dat ze voor Fog Creek willen gaan werken. Zelfs al heb je een slechte kandidaat, dan nog wil je ze enthousiast maken over Fog Creek zodat ze weggaan met een goede indruk van het bedrijf. Zie het zo: deze mensen zijn niet alleen potentiële werknemers; het zijn ook mogelijke klanten. Het zijn ook goede aanknopingspunten voor eventuele nieuwe kandidaten; als zij denken dat Fog Creek een prima bedrijf is om voor te werken, zullen ze hun vrienden aanmoedigen om bij jou te solliciteren. Oh ja, ik herinner me net dat ik ook nog wat voorbeelden zou geven van hele slechte vragen die je moet vermijden. Overigens, wat je ook wilt vragen, ga eerst na of het wel mag. Het volgende is bijvoorbeeld van toepassing in de Verenigde Staten. Iedere vraag die ook maar enigzins gerelateerd is aan ras, religie, geslacht, land van herkomst, leeftijd, militaire dienst, veteranen status, sexuele voorkeur of lichamelijke handicap, is simpelweg onwettig. Als op hun CV staat dat ze in 1990 in het leger zaten, vraag ze niet, al is het maar terloops, of ze aan de Golfoorlog hebben meegedaan. Dat is verboden. Als hun CV vertelt dat ze aan het Technion in Haïfa hebben gestudeerd, vraag niet of ze toevallig Israëlisch zijn; ook dat is verboden. Deze site bevat een goede samenvatting van wat wel en niet mag (maar de rest van de sollicitatievragen op die site zijn nogal dom). Vervolgens, vermijd vragen die er op zouden kunnen duiden dat we onderscheid maken of discrimineren op basis van iets waar we helemaal geen onderscheid in maken of op discrimineren. Een van de beste voorbeelden die ik kan bedenken is om te vragen of ze getrouwd zijn of kinderen hebben. Dit zou de indruk kunnen wekken dat we denken dat getrouwde mensen of mensen met kinderen niet genoeg tijd aan hun werk zullen besteden of met zwangerschapsverlof zullen gaan. Tenslotte, geef ook geen opdrachten waarbij je zes lucifers zodanig neer moet leggen zodat je precies vier identieke gelijkzijdige driehoeken krijgt. Dit een typisch geval van een "aha!" vraag, je leert niets over Slim zijn/Dingen Gedaan Krijgen op die manier, of ze de mentale sprong nu maken of niet. Interviewen is meer kunst dan wetenschap, maar als je je aan het Slim zijn/Dingen Gedaan Krijgen principe houdt, kan er weinig fout gaan. Als je de kans krijgt moet je je collega's eens vragen wat hun favoriete vragen zijn en wat voor soort antwoorden zij verwachten. In de kantine van Gebouw 16 in Redmond is dit altijd een favoriet gespreksonderwerp tijdens de lunch. De originele versie van dit artikel verscheen in het Engels onder de naam The Guerrilla Guide to Interviewing | ||
![]() Joel Spolsky is de oprichter van Fog Creek Software, een klein softwarebedrijf in New York. Hij studeerde af aan de Yale universiteit, en heeft als programmeur en manager gewerkt bij Microsoft, Viacom en Juno. | |||
De inhoud van deze pagina's vertegenwoordigt de mening van één persoon.
Alle inhoud Copyright ©1999-2005 door Joel Spolsky. Alle rechten voorbehouden.