Spørgsmål:
Hvordan kan jeg afgøre, om en kodningsopgave er for hård for en interviewkandidat?
libik
2017-11-07 14:27:08 UTC
view on stackexchange narkive permalink

Jeg er senior softwareingeniør og lederudvikler i en virksomhed med 250 ansatte. Virksomheden ansætter mellemudviklere til seniorniveauer. Jeg laver tekniske interviews, selvom jeg kun har været her i to måneder. Jeg har ikke meget tidligere erfaring med interviews, da mit tidligere firma var meget mindre, og det var meget sjældent at ansætte nye backendingeniører.

En del af interviews er live-kodning, normalt via Skype. Kandidaterne kan bruge deres egen IDE eller bruge en samarbejdsredigering i realtid, såsom CollabEdit. De har 20 til 30 minutter til at fuldføre opgaven. Jeg er ligeglad med syntaksen, opgaven er at bevise evnen til at finde løsningen og implementere den.

Mange lovende kandidater (med god erfaring, viden og evne til at evaluere, hvorfor en bestemte rammer / teknologier bruges) mislykkes på, hvad jeg synes er lette kodningsopgaver (for eksempel at finde det næststørste tal i en matrix). Jeg forstår, at de er under pres, men jeg prøver at guide dem og få dem til at føle sig godt tilpas. Jeg forsyner dem normalt også med kodeskeletter for at komme i gang.

Jeg har konsulteret den tekniske leder. Han siger, at hvis kandidaten ikke er i stand til at gøre dette, skal vi ikke fortsætte, da vi leder efter programmører, og vi forventer, at de skriver kode.

Da så mange lovende kandidater ikke klarer disse kodningsopgaver, undrer jeg mig over, om de virkelig er så "lette" som jeg havde antaget. Hvordan kan jeg afgøre, om en kodningsopgave, der bliver spurgt i interviewet, er for hård?

Kommentarer er ikke til udvidet diskussion;denne samtale er blevet [flyttet til chat] (http://chat.stackexchange.com/rooms/68396/discussion-on-question-by-libik-how-can-i-determine-if-a-coding-task-er for hårdt).
Design en opgave, der kan udføres af enhver udvikler, men som giver en god mulighed for en god udvikler til at gøre et bedre job.
* Midt til senior-niveau udviklere * - hvis de ikke kan sortere række med store til små og få indeks 1, så er de naturligvis ikke kvalificerede til positionen ...
Du behøver ikke engang at sortere.Du analyserer bare arrayet en gang og beholder det største og næststørste tal.Jeg betragter mig selv som en seniorudvikler, og det tog mig 6 minutter at implementere det på et sprog, jeg ikke er fortrolig med: måtte søge efter et eksempel på array-parsing, få en indledende arbejdsløsning, indse, at den har en fejl, ogrette fejlen.Under min ph.d. anvendte jeg TA "datastrukturer og algoritmer".Vi havde bachelorstuderende implementere sværere problemer på papir for en brøkdel af karakteren.Indrømmet, nogle af dem gjorde ikke kodningsdelen, men jeg vil ikke råde OP til at ansætte dem.
Syv svar:
Eric Lippert
2017-11-08 00:39:48 UTC
view on stackexchange narkive permalink

Hvordan kan jeg bestemme, om en kodningsopgave er for hård for en interviewkandidat?

Dit spørgsmål er tvetydigt. Lad mig prøve at sprænge det op. Jeg tror, ​​hvad du virkelig beder om er:

Vi har en proces til at opnå et signal fra kandidater om deres fitness . Hvis processen producerer et "no hire" -signal for kandidater, der faktisk er egnede, kan den tekniske spørgsmålsdel af processen muligvis være for vanskelig. Hvordan kan jeg afgøre, om et spørgsmål er for svært?

Det er let; som andre har sagt, sæt dine kolleger, der er kendt for at være fit gennem processen; hvis processen konsekvent afviser dem, så er der noget galt med processen.

Men det er ikke det problem, du har . Dette er et spørgsmål og svar-websted, og du har stillet det forkerte spørgsmål.

Det problem, du faktisk har, er en betydelig del af kandidaterne er klart uegnede , og dette spilder tid, kræfter og penge, der bedre kan bruges andre steder.

Du har et pipeline-problem, ikke et kodningsspørgsmålsproblem. Noget i din kandidatrørledning producerer en stor brøkdel af klart uegnede kandidater. Som det er kendt, har en lang række ansøgere til programmeringsjob ingen evner overhovedet til at skrive selv enkle programmer : https://blog.codinghorror.com/why-cant-programmers-program/

Spørg rundt og se om andre interviewere har lignende problemer. Hvis de er det, skal du skubbe tilbage til ledelse og rekruttering for at se, om de kan finde ud af, hvad der tilskynder rekruttering til fortsat at sende dig ukvalificerede kandidater.

Din løsning antager stærkt, at kodningsopgaven er en passende vanskelighed for dette interview, hvilket er den eneste ting, du ikke kan påtage dig.Hvis kodningsopgaven faktisk er for vanskelig, kan vi ikke antage noget om kandidaternes egnethed.
@TheSoundDefense Eksemplet på kodningsopgaven er at finde det næststørste tal i en matrix ... dødt enkelt for alle, der legitimt kan hævde at være en professionel programmør.
@TheSoundDefense: Jeg vil gå endnu længere end MaybeFactor og sige, at det er forbandet let.Ikke kun kandidaten skal være i stand til at klare det, men også under hårdt pres.Sagt andet er det svært at finde gode kandidater, og nogle gange er det bedre ikke at ansætte nogen end at ansætte en uegnet person, fordi "vi er nødt til at tage nogen".
@gazzz0x2z: Jeg er uenig i din "undertiden".Det er ** ALTID ** bedre at ikke ansætte nogen end at have en uegnet person.At have ingen betyder, at deres arbejde ikke bliver gjort.At have en uegnet person * bremser også alle andre i organisationen *.Du skal aldrig * tage * nogen.
@EricLippert: du har ret, jeg har været for forsigtig i min kommentar
Hvis nogen ikke kan tilberede en kode, der finder det næststørste tal i en matrix, er jeg ikke engang sikker på, om jeg overvejer dem som en praktikplads.Lad være med at udviklere på mellemniveau til seniorniveau.Problemet er virkelig det, @EricLippert foreslog.
DarkCygnus
2017-11-07 23:08:03 UTC
view on stackexchange narkive permalink

Hvordan kan jeg bestemme, om en kodningsopgave, der bliver spurgt i interviewet, er for hård?

Synes, at de svigtende kandidater er bevis for, at din kodningsopgave kan være mere udfordrende end du tænker.

Empirisk kan du afgøre, om fremtidige kodningsopgaver er "for hårde", hvis du ser flere kandidater mislykkes eller tager for meget tid på at gøre dem.

Du kan også få dig selv eller nogle tekniske kolleger til at prøve at udføre kodningsopgaverne, tage dig tid til at gøre det og derefter sammenligne dine resultater med uanset dine forventninger til de særlige opgaver. Du kan derefter afgøre, om det har brug for en vis forenkling for at kunne gennemføre i et almindeligt kodningssamtale.

Husk, at kodningssamtaler eller tests normalt ikke bør være for lange . Ellers vil du ikke faktisk evaluere viden om sagen, men i stedet bare se, hvem der er bedre til at foregive at kende et programmeringssprog (om 2 timer kan alle søge og blive en "ekspert" på ethvert Stack Overflow-tag). Normalt er enkle og ligetil spørgsmål eller opgaver mere effektive til at måle sprogkundskabet såvel som noget kreativitet og improvisation.

Jeg foreslår også, at du kigger på dette spørgsmål, hvor der gives flere svar, der kan hjælpe med at beslutte, om en bestemt opgave skal fjernes eller ej.

+1 for at bede kolleger om at gøre dette.Hvis en kollega fejler, skal OP også spørge "ville jeg fyr denne person?"Hvis svaret er nej, er opgaven enten for vanskelig, ikke passende for positionen eller burde ikke være den afgørende faktor.
Aftalt, @Kathy.Hvis alle levedygtige kandidater skal være i stand til at besvare dine interviewspørgsmål, er det indlysende, at alle, der faktisk er ansat der, også skal kunne svare på dem.Hvis de ikke kan, skal du sandsynligvis kalibrere igen.Plus, at stille kollegaer hjælper med at sikre, at dine spørgsmål ikke gør det til resten af verden, hvilket ville gøre dem mindre nyttige for dig.
@Kathy det er rigtigt.Når du definerer kodningstest, skal du prøve dem først, før du faktisk implementerer dem.At tænke og forestille sig en kodningsopgave er en ting, og det er faktisk en anden at gøre det, og denne sværhedsgrad bør til enhver tid overvejes.
Jeg vil betragte en stor del af kandidater, der undlader at udføre trivielle opgaver i en interviewindstilling, som bevis for, at der er noget dybt galt med leadgenerering og indledende screening ved rekruttering, ikke bevis for, at processen er for hård for kvalificerede kandidater.
@EricLippert også sandt, at eller at der er en misforståelse i, hvad Screening ser efter i kandidater, og hvad kodeinterviewerne beder dem om at løse, det * kan * være, at disse mål ikke er tilpasset, men det ville være spekulation uden yderligere feedback fraOP (i hvilket tilfælde sandsynligvis kunne høre til et andet spørgsmål)
@JoeStrazzere godt forslag, så det er en mere realistisk opsætning.Du kan stadig gå videre og gøre det alligevel uden tidsbegrænsning.Derefter, hvis du ser det tager mere end 20-30 minutter (et almindeligt kodningssamtale), ved du, at du skal skære det ned på en eller anden måde.Det, eller se hvilke opgaver der kan opnås inden for den tidsfrist, og vælg derefter dem som interviewspørgsmål.
Med "for længe" mener du "meget længere end nødvendigt for at løse den givne opgave" eller mener du "længere end X minutter".Mens jeg er enig med begge, tror jeg, at tidsmæssige lange interviews er et problem af en anden grund - hvis du faktisk har brug for al den tid, der er givet, er der ikke meget tilbage til at bruge en masse tid på at undersøge ting.
Langs linjen * hvem er bedre til at foregive at kende et programmeringssprog * nogle mennesker er gode til at vide, hvilke tekniske opgaver nogle virksomheder normalt beder om, så det ville være bedre at have en stor pool nok til din disposition og ikke altid brugesamme.Og glem ikke, hvis du spørger dine kolleger, de skal have samme position som den, du leder efter.
@EricLippert De er masser af mennesker, der har en grad i forskellige computerrelaterede ting, der bare er gode nok til at samle kopipasta sammen og til sidst "få det til at fungere".
JDługosz
2017-11-08 01:47:09 UTC
view on stackexchange narkive permalink

Jeg havde lignende problemer med meget enkle kodningsspørgsmål. Det ser ud til, at mange mennesker er, hvad vi kaldte "troldmandens lærlinge" efter IDE-kodegeneratorguiden og Micky Mouse-tegneserien. De tror, ​​de kender C ++, men har virkelig ingen idé om, hvordan man skriver en klasse, endda en enkel.

Her er den første. Jeg læser det altid for at give nøjagtig den samme ordlyd til alle, men fra hukommelsen nu: "Skriv en klasse, hvis konstruktør tager to integrerede argumenter og har medlemmer til at returnere deres sum og forskel."

Jeg forventede for at se forskellige niveauer af, hvor godt de undersøgte specifikationerne for at sømme tingene ned, inden de startede, og folk, der brugte skabeloner i stedet for at vælge en bestemt type osv.

Hvad jeg fik var et overraskende antal mennesker, der kunne ikke skriv en klasse, punktum.


for eksempel at finde det næststørste tal i en matrix

Som jeg sagde, søm ting ned før kodning:

  • Kan jeg ændre arrayet?
  • Mente du det andet element i sorteret rækkefølge, eller mener du den næststørste unikke værdi ([1,2, 2,3,3,3] er svaret 3 eller 2?)?
  • Skal det behandle arrays, der har færre end 2 elementer (eller unikke elementer, afhængigt af svaret til forrige)? Kast undtagelse, planlæg for valgfri returværdi, eller hvad?

Skal jeg afklare specifikationerne (og blive underskrevet på den) og derefter skrive kritiske testsager som i "det virkelige liv"?

Dine angivne mål er i modstrid med den uklare specifikation. Som nævnt skal du virkelig teste engineering færdigheder først og derefter kodningsfærdigheder. Og vil du virkelig ansætte nogen, der vil smide et ulæseligt alt for klogt uvedligeholdeligt rod? Jeg sætter spørgsmålstegn ved klogheden i ikke at bekymre sig om syntaksen.

Hvis du bare vil vide, om de kan nærme sig problemet, skal du gøre oraler snarere end en kodningsopgave. Få ham til at forklare, hvordan han ville gøre det: f.eks. Jeg kender til standardalgoritmen, så duh. Hvis det gør, hvad du virkelig ønskede. Bliv imponeret over, at jeg har nyttige referencer, der er bogmærket og altid er åben, og skal ikke bekymre dig om det sidste trin i at skrive et prøveprogram, der indeholder en linje, der kalder denne funktion.

Så jeg stiller spørgsmålstegn ved, om din test virkelig er klar til, at nogen bare koder, eller hvis de problemer, jeg påpegede, ville lamme den kandidat, der får at vide, at dette er en komplet specifikation klar til kodning?

Som interviewer bruger jeg uklare specifikationer for at se, hvordan kandidaten løser tvetydighed.Stil de afklarende spørgsmål?Er deres antagelser rimelige?At løse tvetydige specifikationer er noget, som enhver erfaren koder skal have erfaring med, så test af denne færdighed synes retfærdig.
@meriton ja, jeg er helt enig.Derfor fortæller jeg OP, at det kun er en del af hans problem at bede om hacket arbejdskode (kun) fra uklare specifikationer.
enderland
2017-11-07 23:22:54 UTC
view on stackexchange narkive permalink

Hvordan kan jeg bestemme, om en kodningsopgave, der bliver spurgt i interviewet, er for hård?

Der er forskellige måder. Langt det nemmeste er at finde et samfund af mennesker, som du vil ansætte, og spørge dem.

Dette kan være en gruppe med møder. Dette kan være interne mennesker. Måske online fora. For programmører får du tons feedback, fordi de fleste programmører kan let blive nørdede med "hej, kan du hjælpe mig med at se, hvor lang tid dette programmeringsspørgsmål tager?"

Find også ud af standard introduktion til dine spørgsmål, så alle får de samme oplysninger. Måske et diskussionsark til problemets introduktion. Interview kan være stressende for begge parter.

Så snart du har tid til opgaven, gang du den med mindst 1,5 for at redegøre for nervøsitet, der er forbundet med interviews og bam, har du et gæstestimat for tiden det skulle tage. Hvis de fleste af dine interne medarbejdere giver dig et svar på 20 minutter, er det urimeligt for nogen under et meget højere og mere akavet pres fra et interview at konsekvent gøre det også.

For det andet er det nyttigt at give folk nogle . Fortæl dem på forhånd om det værktøj, du vil bruge i din tilmelding til interviewet. Fortæl kandidater, hvilket sprog de kan / ikke kan bruge (jeg kan programmere meget bedre i Python end at sige Java, så jeg kan løse problemer i 10% af tiden i Python end Java). Sørg for, at de ved, hvad de kan forvente. Værktøjet kan være meget akavet i starten, og du ønsker ikke rigtig at afvise folk på grund af dette.

Og sidst, når du taler igennem problemerne, opfordrer kandidaterne til at tale højt med deres tanker. Dette vil gøre en række ting:

  • Identificer, hvad der er uklart ved problemet, så det kan afklares
  • Separat mennesker, der er nervøse og laver syntaksfejl, som de kender konceptuelt fra mennesker, der ikke er clueless
  • Giv dig flere oplysninger om deres færdigheder end bare koden
meriton
2017-11-08 10:54:32 UTC
view on stackexchange narkive permalink

Da jeg har interviewet et par dusin kandidater ved hjælp af en kodningsopgave, tror jeg, at jeg måske har en vis indsigt:

For at vurdere den virkelige verdens programmeringsfærdighed skal testen gennemføres i et virkeligt verdensmiljø. Det betyder en IDE, ikke en tavle. Det betyder adgang til google og et stille arbejdsmiljø, ikke konstant afbrydes af spørgsmål eller råd fra en interviewer.

At bestå testen burde ikke kræve et perfekt program, fordi programmer i den virkelige verden normalt ikke er perfekte ved første forsøg. Jeg er tilfreds med at se gode fremskridt hen imod en fungerende løsning. Hvis der forbliver fejl, bekræfter jeg, at kandidaten er i stand til at genkende fejlen efter anmodning og kan beskrive en rimelig løsning.

For at vurdere testens vanskelighed skal du gøre det selv eller give det til nogle kolleger (spejling af samtaleforhold så tæt som praktisk). Se også på de kandidater, du endte med at ansætte på trods af en marginal kodningstest. Forudsagte testen deres faktiske arbejdsindsats?

Når det er sagt, selvom din test er perfekt, er det helt normalt at møde en lejlighedsvis kandidat, der ikke kan programmere sig ud af en papirpose. Jeg tror ikke, jeg nogensinde vil glemme kandidaten, der erklærede sig Java-ekspert, men på en eller anden måde ikke kunne nå nogen steder i kodningsøvelsen. Mærkeligt for en så dårlig præstation forblev deres browservindue uberørt - men de havde glemt at rydde browserhistorikken, som afslørede google-søgninger som "hvordan man erklærer en klasse i Java". Han fik ikke jobbet, men jeg var nødt til at gentage mig selv 4 gange, før ansættelseslederen troede mig, at kandidaten, der havde talt så fortroligt om hans store erfaring faktisk ikke havde nogen anelse.

Hvis du får mange dårlige kandidater, er det også muligt, at den indledende screening er utilstrækkelig. En total mangel på kvalificerede ansøgere kan også betyde, at din jobfortegnelse er vildledende eller utilstrækkeligt annonceret - eller måske er der simpelthen ikke nok kodere på udkig efter et job i dit område.

user3748541
2017-11-08 00:27:41 UTC
view on stackexchange narkive permalink

Når jeg plejede at udvælge kandidater, der skulle ansættes, lavede jeg nogle live kodningstest. En ting, jeg plejede at sige var: "Brug gjerne Google, hvis du har brug for at søge efter inspiration". Hvad jeg ledte efter, mere end evnen til at huske alle biblioteker med et bestemt sprog udenad, det var evnen til at "fokusere problemet, bygge en idé om, hvordan man løser det, se efter en måde at implementere det på" Jeg var virkelig interesseret i at teste. Jeg har ikke noget imod det, hvis de vil se efter en lignende tilgang i Stack Overflow. Med denne tilgang var jeg ligeglad med, hvor meget problemet kunne være mere eller mindre (altid overvejer jeg selvfølgelig, at udfordringen skulle udføres på en rimelig tid) ...

Selvom du har et punkt, tror jeg, at dette ikke svarer på det faktiske spørgsmål, der er stillet her
Strader
2017-11-08 04:01:42 UTC
view on stackexchange narkive permalink

IMO, skabeloner og skeletter, der skal udfyldes, er mere forvirrende end simpel opgave fra bunden, især når vi taler om 3-4 linjers løsning. Hvad med trin-for-trin algoritmebeskrivelsesopgave? Alle i branchen kan gøre det, hvis han kan kalde sig programmør. Og hvis kandidaten kan skrive algoritme, kan han implementere den.

Måske tror de, at du prøver at lokke det brugbare arbejde ud af dem under foregivelse af testopgave.

Hvis du holder opgaven kort og enkel uden tilsyneladende forbindelse til faktisk brugbarhed, skal du ikke have problemer.



Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...