În căutarea celor puțini de elită – Găsirea și angajarea celor mai buni dezvoltatori de software din industrie
Publicat: 2022-03-11Provocarea
Angajarea talentului de dezvoltare software – talent real – este o abilitate cu mai multe fațete care se află la intersecția dintre rețelele sociale, perspicacitatea tehnică, managementul proceselor și intuiția. Oricine a avut vreodată responsabilitatea de angajare înțelege prea bine amploarea și profunzimea provocării de angajare.
Deosebit de provocator este faptul că calitățile distinctive ale candidaților excepționali la inginerie software sunt extrem de dificil de evaluat. Cum explorezi capacitatea unui candidat de a inova și de a gândi creativ? Cum afli dacă este un jucător de echipă? Cum îi diagnosticați capacitatea de a primi feedback constructiv? Cum investighezi fibra morală a cuiva?
Deși evaluarea acestor criterii „soft” nu este o sarcină ușoară, aceasta este esențială în încercarea cuiva de a angaja cei mai buni. Totuși, prea des, încercările de a evalua aceste atribute cruciale, dar evazive, constau în întrebări sau provocări care sunt suficient de transparente pentru ca răspunsurile „corecte” să fie evidente pentru majoritatea candidaților. Astfel, nu se obține nimic de substanță întrebându-le.
O capcană obișnuită este să se concentreze prea mult pe detaliile tehnice, mai degrabă decât să evalueze capacitatea candidatului de a rezolva probleme, de a gândi creativ și de a lucra compatibil cu restul echipei.
Desigur, intervievarea și angajarea eficientă a dezvoltatorilor de software avansați este atât de mult o artă, cât și o știință. Cu toate acestea, există abordări și metodologii pentru evaluarea dimensiunilor mai subtile ale abilităților și abilităților unui inginer software.
Atunci când sunt utilizate în mod colectiv, aceste tehnici de recrutare oferă un proces de screening extrem de eficient, cu un istoric dovedit de succes pentru angajarea talentelor de programare salariate sau independente. Despre acest proces este vorba în această postare.
Noțiuni introductive: umplerea conductei cu cele mai bune
Procesul de găsire și angajare a câtorva elite începe cu mult înainte de interviul în sine. De fapt, o abordare sistematică a identificării corecte a candidaților potențial calificați poate eficientiza și crește eficiența întregului proces de recrutare în mod semnificativ.
Fără îndoială, cea mai bună sursă de candidați calificați este crearea de rețele personale, deoarece oamenii de calitate tind să se asocieze cu oameni de calitate. Recomandările personale domină ca sursă cea mai productivă pentru noile angajări de succes (sursă).
Alte surse valoroase de talent tehnic de top includ:
- Bloguri și postări tehnice online. Blogurile pentru dezvoltatori pot fi o sursă excelentă de candidați puternici. Postările tehnice oferă adesea informații valoroase despre perspicacitatea tehnică a dezvoltatorului, abordarea rezolvării problemelor și abilitățile de scriere, toate acestea fiind criterii importante pentru identificarea candidaților de calitate.
- Colaboratori de cod sursă deschis. Examinarea proiectelor open source pe site-uri precum GitHub și SourceForge poate genera candidați cu înaltă calificare. Un avantaj suplimentar al acestei abordări este că vă permite să vedeți și să evaluați mostrele de cod ale unui candidat chiar înainte de a decide să luați legătura.
- Conferințe. Vorbitorii conferinței și co-participanții la conferințe tehnice relevante oferă adesea o resursă valoroasă pentru candidații calificați. Dacă nu puteți participa, revizuiți programul online și luați în considerare să contactați prezentatorii. S-ar putea întâmpla să-i contactați „la momentul potrivit” sau s-ar putea să vă îndrume către altcineva care este înalt calificat.
Frumusețea acestor resurse este că furnizează candidați de inginerie pe care i-ați verificat, într-un fel sau altul, înainte chiar de a le intervieva. Fie cineva din compania ta, fie cineva pe care îl cunoști, îi cunoaște și îi recomandă cu căldură. Sau ați revizuit codul lor open source și sunteți în mod corespunzător impresionat de acesta. Sau postările lor de pe blog sugerează un nivel matur de expertiză tehnică și înțelegere (și, în mod ideal, chiar și simțul umorului :-) ). Cheia aici este că, în momentul în care intrați în contact, candidatul este deja mult mai mult decât „un simplu alt CV”.
În plus, luați în considerare utilizarea șabloanelor de descriere a postului (cum ar fi acestea pentru SEO, dezvoltare web front-end și dezvoltare web back-end) care stabilesc o așteptare ridicată pentru tipurile de candidați pe care le doriți.
Evaluarea abilității tehnice a dezvoltatorilor de software
O determinare eficientă a competenței tehnice depășește cu mult nuanțele unui limbaj sau tehnologie de programare specifice. Deși aceste detalii tehnice cu siguranță nu ar trebui ignorate, ele nu sunt de obicei cel mai important element al procesului de evaluare.
Este esențial de evaluat puterea și înțelegerea tehnică fundamentală a candidatului, gândirea creativă și rezolvarea problemelor.
Cei mai buni dezvoltatori nu pierd timpul angajându-se în memorie ceea ce poate fi găsit cu ușurință într-o specificație a limbii sau într-un document API. Mai mult, învățarea unui nou limbaj, tehnologie sau model de design este un exercițiu relativ banal pentru un dezvoltator puternic (și este de fapt o abilitate esențială, având în vedere ritmul accelerat cu care noile tehnologii sunt introduse și câștigă cotă de piață). Prin urmare, puterea și înțelegerea tehnică fundamentală a candidatului, gândirea creativă și rezolvarea problemelor sunt esențiale de evaluat.
O metodă dovedită pentru a realiza acest lucru este de a reprezenta o provocare de programare neconstrânsă de limbaj . Prezentați-i candidatului o problemă și cereți-i să codifice o soluție în limba pe care o alege. Singurele cerințe ar trebui să fie ca soluția să fie minuțioasă și corectă, inclusiv abordarea oricăror condiții de margine sau erori potențiale. Amintiți-vă, scopul aici este de a evalua (a) capacitatea candidatului de a rezolva probleme, (b) cunoștințe de informatică și (c) stilul de codare. În acest moment, nu evaluați aptitudinile într-un limbaj de programare specific. (Un avantaj suplimentar al acestei abordări, de altfel, este că evită solicitarea intervievatorului să fie un expert în limba în care candidatul codifică.)
Există numeroase resurse online din care puteți selecta astfel de provocări de programare pentru a le incorpora în procesul de interviu. Cele care se concentrează pe algoritmi (mai degrabă decât cunoașterea unui limbaj de programare specific) facilitează evaluarea bazei informatice și a capacităților de rezolvare a problemelor unui candidat. Câteva exemple demne de remarcat includ hackerrank.com, projectuler.net și beatmycode.com. Rețineți, totuși, că nu trebuie să utilizați aceste site-uri pentru a administra testele; mai degrabă, le poți folosi pur și simplu ca resurse din care să selectezi provocările și apoi să ai candidatului să codifice o soluție în timpul interviului personal (pe o tablă albă etc.).
Acestea fiind spuse, testarea online poate fi o componentă suplimentară valoroasă a procesului de interviu. Atunci când utilizați servicii de testare online, totuși, este important să evitați riscul de a vă concentra prea mult pe scorurile generate de site-ul unui candidat, mai degrabă decât pe specificul soluțiilor acestora. În primul rând, este posibil să nu fiți de acord cu valorile de evaluare folosite de serviciul de testare. Mai mult decât atât, pot exista aspecte ale unei soluții pe care le considerați deosebit de inteligente sau elegante, la care procesul de evaluare automatizată poate fi complet ignorant.
Există, de asemenea, potențialul de „fals pozitive” sau „fals negative” cu evaluări oferite de serviciile de testare online. Pe de o parte, falsele pozitive pot duce la pierderea timpului și a resurselor intervievarea candidaților necalificați, în timp ce falsele negative pot descalifica candidații care au fost foarte demni de luare în considerare. Pe termen lung, acesta din urmă are ramificații mai serioase și, prin urmare, este ceva pentru care trebuie monitorizat cu atenție.
În general, testele administrate personal sunt în mod inerent mai fiabile decât cele administrate online, deoarece reduc potențialul de înșelăciune. În plus, testarea în persoană oferă posibilitatea de a observa modul în care un candidat la inginer software funcționează sub presiune. Cu toate acestea, utilizarea serviciilor de testare online poate fi o componentă eficientă a tipului mai cuprinzător de proces de screening susținut aici, care încorporează alte tehnici pentru a ajuta la eliminarea candidaților frauduloși sau subcalificați.
Testele de dezvoltare online pot servi, de asemenea, ca un filtru preliminar valoros pentru a elimina procentul uluitor de mare de candidați ale căror abilități tehnice sunt mult sub nivelul normal. Interesant este că mulți astfel de candidați abandonează procesul fără să încerce măcar să susțină testele, din cauza lipsei de încredere. Acestea fiind spuse, încrederea nu este întotdeauna cel mai bun barometru al atitudinii, așa cum atestă efectul Dunning-Kruger.
O altă tehnică extrem de valoroasă pentru evaluarea perspicacității tehnice este de a cere candidatului să furnizeze o listă de proiecte open source pe care le-a creat sau cel puțin la care a contribuit, pe site-uri precum GitHub și SourceForge (dacă au fost doar un colaborator, cereți-le să să vă indică porțiunile din cod pe care le-au creat personal). Puteți veni apoi la interviu după ce le-ați revizuit codul, pregătiți-vă să-i întrebați despre decizii specifice de proiectare, stiluri de codare, modele folosite și așa mai departe. O astfel de discuție poate fi substanțial mai valoroasă decât simpla chestionare a candidatului cu privire la detaliile tehnice ale unei limbi.
Apropo de limba…
Membrii câtorva elite nu sunt doar pricepuți din punct de vedere tehnologic, ci sunt profesioniști desăvârșiți în dezvoltarea de software, care comunică clar, eficient și succint, atât verbal, cât și în scris.

Abilitățile de comunicare verbală sunt ușor de evaluat în timpul unui interviu, fie în persoană, fie la telefon. Deși abilitățile verbale sunt, desigur, mai puțin critice în anumite roluri tehnice „în spate” care nu implică contactul cu utilizatorul, ele sunt totuși importante pentru maximizarea interacțiunilor eficiente în echipă și a schimbului de idei.
Abilitățile de comunicare scrisă pot fi evaluate cel mai bine cerând candidatului să furnizeze mostre de scris. Mostrele de scriere tehnică sunt foarte preferate, deoarece demonstrează nu numai abilități de scriere, ci și claritate tehnică. Solicitarea acestor mostre înainte de interviu poate fi deosebit de utilă. În primul rând, acest lucru oferă posibilitatea de a revizui și analiza scrisul lor din timp, astfel încât să puteți veni la interviu pregătit pentru a discuta și critica scrisul lor cu ei. În plus, unii candidați tehnici vor fi „descurajați” de solicitarea de a scrie mostre care în sine pot servi drept filtru valoros.
Dilema morală
Există o glumă veche despre un tată care vrea să-și învețe fiul despre etică. Tatăl îi spune fiului său că el și partenerul lui au o afacere de curățătorie chimică. Într-o zi, spune tatăl, o clientă intră în magazinul nostru să-și ia curățătorie. Când clienta se întoarce să plece, îmi dau seama că este plătită în plus cu 10 dolari. OK, deci aici vine etica... îi spun sau nu partenerului meu?!
În schimb, adevăratele dileme etice – dileme morale – pot fi adesea tulburi și complexe și, cu siguranță, se prezintă în afaceri. Cel mai puternic dezvoltator de software poate face ravagii nespuse într-un proiect dacă îi lipsește o busolă morală calibrată corespunzător. Prin urmare, această dimensiune a candidatului este critică de evaluat.
O tehnică extrem de eficientă pentru a realiza acest lucru este de a prezenta candidatului o dilemă morală ipotetică și de a întreba ce ar face în situație. Pentru ca acest lucru să fie eficient, este esențial ca dilema să nu aibă un răspuns evident. În mod ideal, orice răspuns posibil ar trebui să fie imperfect și oarecum problematic. Răspunsul pe care candidatul îl oferă la o astfel de întrebare poate oferi o perspectivă enormă asupra modului în care gândesc, a standardelor sale etice și a priorităților lor.
Iată un exemplu:
Compania pentru care lucrezi a fost angajată pentru a lucra la un proiect de către o altă companie. Proiectul necesită utilizarea unui anumit subcontractant. Ați lucrat anterior pentru acel subcontractant și, prin urmare, știți direct că deseori își adaugă orele și își taxează clienții în plus pentru timpul lor. Dacă fac acest lucru pe acest proiect, totuși, nu va răni compania dvs., deoarece aceste costuri vor fi transferate către clientul companiei dvs. I-ai menționat acest lucru șefului tău și el te-a sfătuit să nu spui nimic clientului, mai ales că partea de proiect a subcontractantului reprezintă doar o mică parte din bugetul total. Ai un prieten foarte apropiat care lucrează pentru client. Într-o zi, la prânz, prietenul tău te întreabă ce știi despre acest subcontractant, deoarece știe că ai lucrat acolo. Cum raspunzi si ce ii spui?
Frumusețea aici este că nu există un răspuns clar „corect” și situația oglindește complexitatea morală a vieții reale și a lumii afacerilor. Dacă este întrebat corect, răspunsul la o astfel de întrebare „dilemă morală” poate fi una dintre cele mai grăitoare și valoroase părți ale procesului de interviu pentru angajarea dezvoltatorilor de software.
Să te cunosc (Cine ești cu adevărat ?)
Unul dintre defectele inerente ale procesului de interviu este că nu există într-adevăr nicio modalitate de a afla cum va fi să lucrezi cu o persoană până când nu lucrezi efectiv cu ea. Obținerea unei senzații realiste pentru personalitatea și temperamentul unui candidat este totuși crucială pentru o angajare de succes.
Elita tehnică nu este doar superioară din punct de vedere tehnic, ci este și foarte profesionistă. Căutarea acestora nu se limitează așadar la o evaluare strict tehnică.
Având în vedere acest lucru, iată câteva tehnici de interviu care pot fi benefice pentru evaluarea personalității și profesionalismului unui candidat...
În primul rând, luați în considerare începerea intenționată a procesului de interviu cu un prescreen de către un membru al personalului care nu este tehnic (cum ar fi un asistent administrativ). Puteți întreba apoi acest membru al personalului cum i-a tratat candidatul odată ce și-a dat seama că nu sunt tehnici. Au fost umilitori, nerăbdători și condescendenți sau au fost plăcuți, răbdători și respectuoși? Ceea ce îți transmite membrul personalului poate fi foarte grăitor. Vrei să știi dacă candidatul îi tratează pe ceilalți cu respect, indiferent cine sunt ei.
Pe parcursul interviului, căutați oportunități de a oferi candidatului feedback constructiv. Observați cu atenție reacția pe care aceasta o provoacă. Este apreciat feedback-ul sau candidatul pare să devină deloc defensiv?
Angajați-vă într-un „chit chat” non-tehnic în primele 5 sau 10 minute ale unui interviu ca mijloc de a obține o perspectivă asupra personalității candidatului. Candidatul poate crede că acesta este pur și simplu un preludiu la interviul propriu-zis și, prin urmare, va fi mai probabil să-și „lase părul”. Astfel, puteți discerne o cantitate surprinzătoare despre personalitatea lor în acest timp. Și, desigur, dacă au simțul umorului, acesta este întotdeauna un semn bun. :-)
În plus față de aceste tehnici generale pentru angajarea inginerilor, iată câteva exemple de întrebări pentru a ajuta la evaluarea personalității, încrederii, onestității și profesionalismului unui candidat :
- Când vă uitați înapoi la cariera dvs., care este o situație dificilă specifică cu care v-ați confruntat și care iese în evidență în mintea dvs.? Descrieți provocarea și modul în care ați rezolvat-o în detaliu. Ce crezi că te-ai descurcat deosebit de bine? Ce ai putea face diferit dacă ai avea ocazia să o faci din nou?
- Care este cea mai mare greșeală pe care crezi că ai făcut-o vreodată în carieră?
- Ce vă place cel mai mult la dezvoltarea de software? Ce iti place cel mai putin?
- Dacă ai putea să pictezi poziția ideală pentru tine, care ar fi aceasta? Cum ar arăta în ceea ce privește rolul și responsabilitățile dvs., dimensiunea și tipul companiei, mediul de lucru și așa mai departe?
- Care sunt cele mai mari puncte forte ale tale? Ce am câștiga angajându-te?
- Niciunul dintre noi nu este perfect. Care sunt câteva aspecte ale personalității tale pe care lucrezi să le îmbunătățești?
- Dacă l-aș suna pe actualul tău șef și l-aș întreba despre tine, ce mi-ar spune el sau ea?
- De ce ar trebui să ne preocupe când te angajăm?
Colectiv, s-a dovedit că aceste întrebări și tehnici promovează o înțelegere mult mai puternică și mai profundă a cine este cu adevărat candidatul, ceea ce este esențial pentru luarea unei decizii de angajare de succes.
Este sentimentul reciproc?
Deci, ați găsit un candidat A+. Foarte competent. Personalitate pozitivă, optimistă. Excelentă potrivire culturală. Grozav! Dar…
Mai rămâne o întrebare esențială la care rămâne de răspuns: în ce măsură candidatul este interesat în mod special de poziția dvs. disponibilă și de a lucra pentru compania dvs.? Răspunsul la aceasta este de o importanță capitală în asigurarea unei angajări de succes. Relațiile unilaterale nu funcționează mai bine în afaceri decât în orice alt aspect al vieții noastre.
Încă o dată, pur și simplu a pune întrebarea în mod direct are o valoare minimă, deoarece, în contextul procesului de interviu, trebuie să fii suspicios față de candoarea unui candidat în a răspunde la o astfel de întrebare. Mai degrabă, acesta este ceva pe care trebuie să încercăm să-l constati prin alte mijloace, mai puțin directe.
Pentru început, modul în care candidatul te abordează de la început este un indicator destul de sigur al interesului. Oferă candidatul o explicație convingătoare și convingătoare a motivului pentru care el sau ea este deosebit de interesat de compania dvs. și de oportunitatea disponibilă? Dacă da, acest lucru nu arată doar un interes real, ci și un nivel de maturitate și sofisticare profesională. Un astfel de candidat a făcut în mod clar cel puțin un anumit nivel de cercetare anterioară asupra companiei dvs. și a oportunității, înainte de a vă contacta (mai degrabă decât să-și „împușcă CV-ul prin oraș”).
Candidații care intră în procesul de angajare a dezvoltatorilor după ce și-au făcut temele despre companie și despre produsele sau serviciile acesteia, oferă un indicator util atât al interesului, cât și al cunoștințelor lor. Candidații care au făcut cercetări în avans asupra intervievatorului (de exemplu, citind biografia acestuia, profilul LinkedIn, postările pe blog și așa mai departe) sunt deosebit de demni de remarcat. Candidații mai sofisticați vor dezvălui aceste informații în cursul interviului. Pentru alții, întrebări simple și deschise, cum ar fi „Ce știi despre compania noastră?” și „Ce vă interesează în mod special despre compania noastră și această poziție?” poate provoca într-adevăr răspunsuri foarte grăitoare.
În cele din urmă, un candidat care este cu adevărat interesat va pune probabil întrebări pe parcursul procesului de interviu. Cu toate acestea, este întotdeauna o idee bună să închideți interviul întrebând dacă candidatul are întrebări. Lipsa oricăror întrebări poate fi un semnal roșu, chiar și cu cineva care altfel ar fi fost considerat un candidat A+.
Învelire
Tehnicile descrise aici pot servi ca un proces de bază valoros pentru găsirea și angajarea dezvoltatorilor de software care sunt cei mai buni din industrie. Cu toate acestea, este important să ne amintim că angajarea eficientă nu este o destinație, este o călătorie. Trebuie să-și reevalueze și să modifice continuu procesul, deoarece un proces static este destinat să devină un proces mort.
Călătoria fiecărei companii va fi diferită, pe baza propriei culturi și priorități. Găsiți calea potrivită pentru organizația dvs. și executați-o. Vei avea succese și vei avea eșecuri, dar atâta timp cât înveți de la acestea din urmă, poți fi sigur că ești pe calea cea bună.