Razgovarajmo o intervjuima na bijeloj ploči i mogućim alternativama

Nikome nije vijest da mnogi inženjeri mrze pitanja vezana uz ploču.

Bilo da je na Twitteru, Mediumu ili LinkedInu, lako je pronaći nekoga tko odzračuje. Fraza „postupak zapošljavanja je slomljen“ koristi se tako često da postaje klišej.

Nažalost, većina ove frustracije pada na gluhe uši.

Unatoč refrenu gnjeva koji ga okružuje, "whiteboarding" je i dalje glavna stvar u intervjuima za softverski inženjering. Dio toga je i zbog činjenice da programeri brzo izraze svoje nezadovoljstvo, ali polako nude bolje alternative.

Postoje li bolje alternative?

Ovo pitanje mi je u posljednje vrijeme puno na pameti. Prije četiri tjedna zaposlio sam svoj prvi posao s puno radno vrijeme u softverskom inženjerstvu. Iako još nisam uključen u proces zapošljavanja, na kraju ću i biti.

Budući da sam bio s druge strane stola prije samo mjesec dana, shvaćam koliko intervju može biti neprecizan. Kada dođem na red za postavljanje pitanja, želim biti siguran da svoje potencijalne kolege procjenjujem točno i pošteno.

Ova me nevolja dovela do dva pitanja:

  1. Jesu li intervjui za bordanje najbolji izbor?
  2. Ako ne, koje su bolje alternative?

U ovom postu pokušat ću odgovoriti na ova pitanja. Imajte na umu, ovo su moja osobna mišljenja koja su oblikovana mojim vlastitim iskustvom razgovora.

Pokušat ću biti što objektivniji pristupajući ovom zadatku na pravi način softverskog inženjerstva: ispitujući sve mogućnosti i odmjeravajući njihove kompromise.

Jesu li razgovori s tablom najgori?

Prvi korak u ovom procesu je nadzor nad bordanjem.

Pros:

  1. Brz i nizak napor
  2. Ne ovisi o jeziku ili domeni
  3. Znate (općenito) što možete očekivati
  4. Podrška zajednice (Glassdoor, LeetCode, Pramp i tako dalje)

Protiv:

  1. Sreća je veliki faktor (lutrija algoritma)
  2. Ne mora nužno testirati inženjersku sposobnost
  3. Favorizira mlade inženjere i nedavne studente

Za tvrtke koje zahtijevaju od inženjera da dobro razumiju osnove CS-a, algoritme niske razine i ne ovise o knjižnicama, razgovor s tablom je savršen.

SpaceX, MacOS / Windows i Facebook React izgradili su inženjeri s takvim znanjem. Očekuje se da će intervju s jednom od ovih tvrtki dobiti tablu.

Kao kandidat za posao, volim intervjue za bordanje. Znam što mogu očekivati. Većina pitanja o algoritmu spada u ove općenite teme:

  • Nizovi / žice
  • Binarno drveće
  • Povezani popisi
  • DFS / BFS
  • Povratak unatrag
  • Dinamičko programiranje

Znajući to prije vremena znači da mogu učiti za to. A tu je i mnoštvo alata za proučavanje koje možete izabrati. Priprema tehničkog intervjua cijela je industrija za sebe.

Iz tog razloga intervjui za bordanje nisu najbolja opcija za svaku tvrtku. Toliko se toga svodi na sreću, pamćenje i tko je proveo najviše vremena u učenju.

Ne može svatko dugo proučavati da bi savladao algoritme.

Imao sam sreće da sam mogao i nadmašio sam druge inženjere koji to nisu mogli. Jesam li bolji inženjer od svih njih? Možda, ali nisam siguran da je intervju s bijelom daskom najbolje sredstvo za njegovo otkrivanje.

Dakle, ako postoji sumnja da je razgovor na dasci najbolji alat za posao, što može biti bolje?

Pogledajmo neke od alternativa.

Izazovi kodiranja putem računala

Pros:

  1. Upotrijebite računalo i poznato razvojno okruženje
  2. Može se izvršiti daljinski putem dijeljenja zaslona
  3. Sve ostale prednosti razgovora na ploči

Protiv:

  1. Strožije u vezi sa sintaksom i sposobnošću izvođenja.
  2. Programsko okruženje i dodaci mogu igrati veliki faktor
  3. Isti nedostaci razgovora na ploči

Izazovi kodiranja na prijenosnom računalu manje su rigorozni rođak razgovora na bijeloj ploči.

Kandidati imaju prednost korištenja vlastitih računala. Mogu se izvoditi na daljinu ili u parnom programskom okruženju.

Jedna lijepa stvar koju sam primijetio kod njih je da će obično biti lakša od pitanja na ploči. Većina pitanja koja sam dobio uključivala je manipulaciju nizovima ili jednostavne algoritme za koje bilo koji iskusni inženjer ne bi trebao proučavati.

Nedostatak ovoga je što je puno veći naglasak na funkcionalnosti.

Tijekom lova na posao dva puta su me pitali za problem promjene novčića. Jedan kao izazov za bijelu ploču, a drugi kao urednik.

Za izazov s bijelom pločom izvukao sam se uglavnom objašnjavajući svoje rješenje. Na mom se laptopu očekivalo da napišem testove slučaja i garantiram da je moje rješenje uspjelo.

Dio razloga što volim bordanje je zbog popustljivosti. Nitko neće pokrenuti vašu napisanu funkciju preko kompajlera. Sve dok anketar razumije što mislite i dok pisanje izgleda dovoljno dobro, dobit ćete punu zaslugu.

S izazovima koda nije tako.

Neki mogu tvrditi da je naglasak na funkcionalnosti bolji, jer smo plaćeni za pisanje radnog koda. To je istina, ali nećemo biti plaćeni za to u sprintu od 30 do 45 minuta.

Nadajmo se samo da nećete postati nervozni tijekom intervjua. Jedna mala greška koja uzrokuje neuspješne testove i nekoliko minuta otklanjanja pogrešaka mogla bi biti razlika između "jakog angažiranja" ili prolaska.

Izazovi koda i dalje pate od istih kratkih pojava kao i bordanje jer se mnogi od njih temelje na algoritmima.

S dodatnim pritiskom funkcionalnosti, pitanja mogu učiniti još težim unatoč ugodnom okruženju. Ako već ne volite probleme s algoritmom, izazovi koda neće biti puno bolji.

Uzmi kućne procjene

Pros:

  1. Može raditi na tome u pidžami
  2. Obično se daje više od tjedan dana za rad na zadatku
  3. Upotrijebite svoj vlastiti uređivač i razvojno okruženje
  4. Može biti novi dodatak portfelju
  5. Obično zabavniji od daske

Protiv:

  1. Razina težine može se drastično kretati
  2. Mnogo više truda i vremena nego izazovi kodiranja
  3. Može ovisiti o domeni
  4. Može dovesti do puzanja značajki zbog konkurencije
  5. Ne predstavlja svakodnevni posao

Mnogi inženjeri radije uzimaju kućne zadatke. Vremenski rokovi za njihovo predavanje obično su fleksibilni i kandidati zapravo trebaju kodirati. Nije to šok programerima to draže od stajanja pred bijelom pločom dok ih šutke prosuđuju.

Međutim, kućni testovi imaju nekoliko glavnih nedostataka.

Prvo, njima je lako manipulirati.

Mnoge tvrtke svoje testove održavaju na GitHubu. Upišite "Challenge" ili "Test" u GitHub pretragu i pronaći ćete puno. To će pametnom kandidatu dati dovoljno vremena da preventivno istraži izazov.

To zapravo nije prigovor. Samo još jedan savjet.

Što je problem je da je jednostavno dovoljno pronaći tuđe odgovore na te izazove te ih kopirati. Dosta inženjera zadržava odgovore na domaćim izazovima na svojim GitHub profilima.

Možete ga i sami testirati. Upišite "Challenge" u GitHub pretraživanje i pogledajte što ćete pronaći.

Živim pored sjedišta Etsyja u Brooklynu i bio sam znatiželjan mogu li pronaći odgovore na neke od njihovih testova. "Etsy Challenge" otkrio ih je četiri. Bilo ih je još više pod "Etsy testom".

Istina je da tvrtke mogu promijeniti svoje procjene. Međutim, može biti gnjavaža mijenjati postupak razgovora svakih nekoliko mjeseci zbog curenja detalja.

Drugo, razina poteškoće i vrijeme potrebno za završetak ovih izazova uvelike variraju.

Tijekom mog posljednjeg lova na posao, dobila sam četiri zadatka ponijeti kući. Tri tvrtke rekle su da bi im trebalo samo 3-5 sati da završe.

Svi su mi trebali više dana.

Glavni razlog tome bio je jer su izazovi često bili specifični za domenu. Bilo im je potrebno nekoliko sati istraživanja API dokumenata i novih tehnologija.

Četvrta četa prihvatila je izazov koji bi lako mogao potrajati tjedan dana i dala mi je dva dana. Morao sam izgraditi funkcionalnu aplikaciju za chat koja podržava naredbe kose crte.

Bio je to zabavan i zanimljiv projekt, ali zahtijevao je da odustanem od svega što sam radio dva dana kako bih ga dovršio.

Ako kandidat ima dovoljno sreće za razgovor s više tvrtki odjednom, to može postati posao s punim radnim vremenom samo radeći na tim izazovima.

Uz to, profesionalni programeri moraju raditi na naslijeđenim bazama kodova i rješavati rokove. Tjedan dana zeleni projekt neće procijeniti koliko dobro radi sugovornik u brzom okruženju.

Sveukupno, domaće zadatke volim uzimati kao početni zaslon sposobnosti kandidata. Uz to, trebali bi biti povezani s poslom za koji se kandidat prijavljuje i ne bi trebali uzimati nepristojno vrijeme da završe.

Temeljeno na projektu / ugovor o najmu

Pros:

  1. Dobiti priliku za rad s kandidatom / timom
  2. Primajte plaću za posao
  3. Pristupite radu na stvarnim projektima
  4. Ocjenjuju se koliko dobro radite s timom i brodskim kodom

Protiv:

  1. Dugogodišnja predanost
  2. Rad bez garancije zaposlenja
  3. Nema zdravstvene koristi kao izvođač
  4. Može kandidata dovesti u lošu pregovaračku poziciju
  5. Ovisno o jeziku

Riječ je o projektnim intervjuima. No, podosta ih je tvrtki, poput Basecampa i Automatica. Mogu razumjeti zašto.

Ovi su intervjui vjerojatno najtočniji način za procjenu nečije vještine i ocjenjivanje kao člana tima. Tvrtka izravno surađuje s njima i vidi kako u timu rješavaju zadatke.

Kandidat također dobiva priliku procijeniti tvrtku i utvrditi je li to vrsta okoline u kojoj bi želio raditi.

Win-win. Ili se barem tako čini.

Uz sve to, kao kandidat za posao nikada ne bih sudjelovao u projektnim intervjuima ili ulogama za zapošljavanje. Negativi daleko nadmašuju pozitivne.

Prvih nekoliko mjeseci bilo kojeg posla obično je najteže. Privikavate se na novi tim, kulturu, bazu kodova. Sada zamislite da radite na projektu ne znajući hoćete li do kraja imati posao.

Moj dobar prijatelj nedavno je razgovarao u Automatu i potvrdio koliko to može biti stresno. Ocjenjuje se sve, od načina na koji komunicirate sa suradnicima do pitanja koja postavljate. U tim sredinama, tamo je takva stvar kao „glupo pitanje”.

Još je gore što je pušten nakon tromjesečnog ugovora. Srećom, nije dopustio da to utječe na njegovo samopoštovanje. Zna svoje sposobnosti i juri unaprijed. Nisam siguran bih li i ja, ili mnogi drugi inženjeri, mogao tako lako to učiniti.

Nadalje, ugovori traže tražitelja posla u užasnoj pregovaračkoj poziciji. Snaga u pregovorima dolazi iz spremnosti za udaljavanje.

Na kraju razdoblja ugovora o najmu, potencijalni kandidat neće imati pregovarački žeton. Neće imati drugih ponuda, a već su u svoje projekte uložili desetke ili stotine sati, ovisno o duljini ugovora.

Bili bi poticani da zauzmu položaj čak i ako to nije njihov preferirani izbor. Alternativa je pridružiti se tržištu rada na prvom mjestu.

Potopljeni trošak u najboljem je slučaju.

Iako intervjui za bordanje možda nisu idealni, odradio bih ih stotinu prije nego što sam uopće obavio projektni intervju.

Pa koji je najbolji?

Kao što ste mogli pretpostaviti: Ovisi ™.

Čini se da su kompromisi između brzine i napora u odnosu na točnost. Svaka metoda žrtvuje jedno za drugo. Na svakoj je tvrtki da sam presudi te kompromise. SpaceX će najvjerojatnije imati drugačiji postupak od malog njujorškog pokretanja.

Istina je da bi SaaS tvrtka trebala tražiti od kandidata da ispišu algoritme dinamičkog programiranja samo ako im pomaže u određivanju inženjerske vještine. Ne samo zato što to čini Google.

Da sam dizajnirao postupak intervjua za svoj tim u DigitalOceanu, koristio bih mješavinu procjena kod kuće i izazova kodova / vježbi uparivanja. Također bih procijenio njihovo razumijevanje dostupnosti i distribuiranih sustava kroz sesiju pitanja i odgovora i izazov dizajniranja sustava.

Dobra vijest je da moj tim to već radi. Težak, ali pošten postupak razgovora s DigitalOceanom bio je jedan od razloga što sam prihvatio njihovu ponudu. Dokazalo mi je da su već prošli ovaj postupak samoispitivanja i saznali kako pošteno procijeniti svoje kandidate.

Molimo vas da mi javite koji je vaš preferirani način intervjua u komentarima ispod!

Napokon, za sve vas inženjere koji želite vidjeti kako se proces intervjua mijenja, počnite smišljati ideje. Vidio sam previše inženjera koji su se bunili oko intervjua za bordanje da bi nastavili postupak nakon što ih se zaposli jer je previše posla da bi se to promijenilo.

Ne budi ta osoba.

Prestani se žaliti.

Pronađite rješenja.