Passato il primo screening, di cui ho parlato in un articolo precedente, è il momento di capire se le capacità, o skills, tecniche del candidato/a sono per valide per la posizione aperta.
Un passaggio obbligato, la prova tecnica
Il modo di valutare tecnicamente un software engineer è in continua evoluzione. Fino a che qualche anno fa, scorso decennio, la prova tecnica non faceva parte del processo di selezione. Semplicemente si valutava il candidato sulla base della sua esperienza e curriculum.
Ma con la crescita della domanda, e quindi anche dell’offerta, il mercato è diventato via via più esigente ed al giorno d’oggi sappiamo che grandi ditte nella Tech Industry hanno prove tecniche molto difficili da superare, composte da problemi logici, algoritmi matematici e complesse sfide di programmazione.
Sappiamo però che non tutte le ditte arrivano a questi livelli di complessità, ma abbiamo la certezza che tutte, in un modo o in altro, chiedono di verificare la capacità tecnica del candidato.
Nel paragrafo successivo descriverò le diverse modalità con cui ho lavorato, i pro e i contro di ognuna di queste.
Ma prima di questo voglio spendere due parole sul perché è così importante questa fase.
Perché è importante
Mi piace sempre ricordare che il processo di selezione è binario, a doppia direzione. La possibile futura collega deve convincere noi e il nostro team, tanto come noi dobbiamo convincere lei.
Il processo è fatto per entrambi, con la prova tecnica avremo noi, in quanto ditta, la possibilità di verificare e valutare le persona a livello tecnico. Questo ci permetterà di far conoscere la persona al nostro team di developers, vedere il suo stile di programmazione e ci servirà anche ad avere un’idea più chiara del rango di un’eventuale offerta finale.
Dall’altro lato per il candidato sarà interessante vedere come si lavora dentro la ditta, a cosa viene data più importanza al momento di valutare il codice scritto, oltre a conoscere i futuri possibili membri del team e colleghi di lavoro. Un assaggio di quello che potrebbe essere la sua giornata lavorativa nel caso si dovesse arrivare ad una offerta.
Vedi quindi quanto è importante questa fase, ma anche altrettanto importante ricordarsi che è sempre un processo che serve ad entrambe le parti.
Valutazione tecnica, come affrontarla?
Nella mia esperienza ho visto l’evolversi, anche all’interno della stessa ditta, di modi di valutare tecnicamente diversi.
Esiste la tipologia perfetta che ti farà selezionare il candidato perfetto? No. In un processo di selezione è davvero impossibile non fare errori. Date per scontato di sbagliare.
Capiterà di scartare candidati con magari grandi capacità, ma che hanno fatto degli errori durante i colloqui. Oppure al contrario, di assumere persone che sembravano perfette sulla carta, ma che poi non superano il periodo di prova.
Questo accade perché è impossibile conoscere una persona, tanto a livello tecnico, come a livello di soft skills in pochissime ore e sotto la pressione dei colloqui.
Detto ciò, di seguito le diverse modalità che ho usato, i pro ed i contro di ognuna.
Modalità #1: Home tech challenge, prova tecnica a casa
La prova tecnica a casa consiste nel dare al candidato un esercizio da svolgere in un tempo definito, per esempio una settimana, ma nei momenti che lui/lei preferisce.
Una volta svolto l’esercizio e consegnato, un team di due programmatori dentro la nostra azienda ha la possibilità di valutare il risultato e decidere se proseguire al passo successivo, il colloquio tecnico, oppure rifiutare il candidato.
Passaggi:
- Si consegna al candidato l’esercizio da svolgere e il materiale necessario per farlo.
- Si attende il tempo previsto.
- Si passa la prova al team tecnico.
- Nel caso di valutazione positiva, si passa al colloquio tecnico.
- Decisione finale del team tecnico se andare oltre o no.
PRO:
- Il candidato ha il tempo di fare la prova nei tempi e nelle modalità che preferisce. Bisogna tenere conto che la maggioranza dei candidati già lavora, quindi è il tempo che dedicano alla prova è ritagliato da quello personale.
- Dando il tempo necessario, la prova sarà lavorata bene, nei dettagli. In quanto svolta a casa senza pressione.
CONTRO:
- Tempistiche: i tempi sono abbastanza lunghi se contiamo quelli per la prova a casa, quelli per correggerla e poi l’ora del colloquio tecnico finale.
- Il candidato potrebbe usare l’aiuto di terzi per svolgere la prova, quindi il risultato potrebbe essere falsato.
Modalità #2: Pet project
Un pet project, tradotto letteralmente progetto animale domestico, è un progetto personale, a cui tieni molto, così come vuoi bene al tuo cane.
In italiano forse potremmo tradurlo come il tuo cavallo di battaglia. Quel progetto per cui ti senti orgogliosa di condividere perché pensi che rispecchi il tuo stile di programmazione, hai messo dentro tutte le buone pratiche, best practices, che conosci e ne vai molto fiera.
Così fiera, da essere sicura che presentandolo a un colloquio, ti aspetteranno a braccia aperte.
Questa tipologia sta andando sempre più di moda, in quanto l’offerta di mercato è molto alta, i tempi sono veloci e questo modo permette di avere delle risposte molto rapidamente.
Dopo aver valutato il pet project si passa ad un colloquio tecnico, per cui il team tecnico ha modo di conoscere il candidato e fare le relative domande per approfondire il lavoro del progetto o anche esterne ad esso.
Passaggi:
- Si chiede al candidato se ha un pet project da presentare.
- Si passa al team tecnico che valuterà se passare alla fase successiva.
- Colloquio tecnico in cui si parla del progetto e altre domande tecniche.
- Decisione del team tecnico se andare oltre o no.
PRO:
- Veloce, spesso è open source e basta condividere il link di GitHub.
- Ha dentro il meglio del candidato, più possibilità di brillare.
CONTRO:
- Non c’è un modo totalmente certo di sapere se il progetto è stato collaborativo o totalmente costruito dal propietario.
- Datato: pochi sono i candidati che hanno progetti mantenuti aggiornati, rischia di essere un po' vecchio stampo.
- Può richiedere più tempo al team tecnico: senza sapere esattamente cosa guardare, un progetto che non si conosce può richiedere più tempo per essere valutato.
Modalità #3: Live coding session, programmazione in diretta
Consiste in una sessione di programmazione in diretta, dove il candidato condivide il suo schermo, se il colloquio è svolto in videochiamata, e risolve l’esercizio in diretta con l’intervistatore. O meglio gli intervistatori, sempre meglio avere due punti di vista nel caso prove tecniche o simili.
In pratica è una sessione di pair programming in due (o tre) programmatori, in cui chi scrive il codice è l’intervistato e chi dirige la conversazione gli individual contributors che hanno preparato il colloquio.
Anche questa modalità è molto veloce a livello decisionale. Il colloquio sarà più lungo, ma in un unico momento insieme si può immediatamente vedere il modo di pensare e di programmare del candidato.
L’obiettivo non è risolvere l’esercizio proposto nel suo complesso, ma vedere come il candidato pensa e si esprime. Capire a cosa dà più o meno importanza nell’affrontare un problema nuovo.
Da non sottovalutare la pressione a cui è sottoposto il candidato. Non è facile per tutti condividere il proprio schermo o comunque programmare di fronte ad altre persone, soprattutto se quelle persone devono decidere le sorti del colloquio. Un aspetto sicuramente di cui tenere conto al momento della decisione.
Passaggi:
- Viene proposto al candidato una sessione di live coding.
- Si organizza la sessione, in genere bastano un paio d’ore, con il candidato e il team tecnico dell’azienda.
- Decisione del team tecnico se andare oltre o no.
PRO:
- Tempistiche: il tempo della durate del colloquio, il team decise già se proseguire o meno.
- Il candidato ha un’idea molto chiara di cosa ci si aspetta da lui/lei.
- Il team si fa un’idea abbastanza veritiera di come sarebbe lavorare con il candidato.
CONTRO:
- Il candidato è messo sotto molta più pressione, rispetto alla prova a casa. Questo può portare a risultati falsati, nel bene e nel male.
- Se il candidato è molto al di sotto delle aspettative è una notevole perdita di tempo per tutti. Sta al team tecnico saper troncare il colloquio prima e non perdere ulteriore tempo se la decisione è chiara dall’inizio.
Un’aspetto importante è aiutare ad organizzare il team tecnico in modo da avere profili diversi al momento di valutare una persona, ma con degli standard ben precisi e identificati all’interno del dipartimento di ingegneria. In modo tale da potersi assicurare un misto di profili nel team, ma con un livello e un’orientazione chiara e uniforme.
Riguardo la scelta sulla modalità, posso dire di aver avuto modo di usare le tre modalità descritte sopra e dovessi scegliere la mia preferita probabilmente propenderei sul Live coding session, per un motivo molto semplice: la velocità.
Ma so anche che non è la soluzione perfetta per tutti. Ci sono persone che sottoposte a una pressione di questo genere, anche se molto valide, potrebbero essere scartate perché magari entrano nel pallone. Potreste obiettare che fa parte del gioco anche valutare come una persona lavora sotto pressione, ma io credo che dipenda dal ruolo che si sta cercando di coprire e non sempre è utile.
In ogni caso, la modalità perfetta ovviamente non esiste. Se avete la possibilità di provare varie forme, fatelo, sperimentate e scegliete la vostra.
E se potete dare la scelta al candidato, ancora meglio. Vi darà un punto in più per capire il carattere dell’eventuale futura persona nel vostro team.