Come opinione di qualcuno che richiede campioni di codice nella valutazione dei candidati, ci sono alcune caratteristiche di alto livello (contenuto del codice) e alcune caratteristiche di basso livello (struttura del codice). Funzionalità di alto livello:
-
Identità : il sapore del codice. Se ti stai fatturando come un codificatore UI / HCI, voglio vedere un buon aspetto per qualcosa di visivo quando lo eseguo. Se sei un costruttore di DB, voglio vedere qualcosa di interessante con la rappresentazione o l'analisi dei dati. L'esempio dovrebbe essere qualcosa di orgoglioso di. Se non ne hai almeno uno, non hai identità.
-
Durata : cambi le strategie per diversi problemi? Stai risolvendo problemi interessanti? Il codice o l'approccio potrebbero essere facilmente estesi a un problema simile? Al contrario, mi sento come se guardassi un membro di una comune di culto cargo?
-
Comunicazione : il codice spiega facilmente cosa sta facendo e perché? Questo non significa che il codice deve essere semplice. In effetti, è un vantaggio rendere il codice complesso facile da capire.
Gli aspetti di basso livello sono più semplici:
-
Stile : il codice deve essere pulito, coerente (segue alcune linee guida stabilite) e ben documentato.
-
Packaging : dovrebbero esserci almeno un breve readme, una versione eseguibile e test eseguibili. Il readme dovrebbe dirmi come eseguire questi ultimi due, nonché il motivo per cui stai dimostrando questo particolare esempio di codice.
-
Lingua / e : di solito chiedo a qualcuno un campione nella lingua per la posizione, oltre a quella in cui si sentono più forti. Fornisce una buona idea dei limiti attuali di una persona.
Per un buon candidato, mi aspetto che un campione sia: A) Un piccolo campione a prova di proiettile o B) Una buona parte di un progetto interessante più ampio (ad es. un modulo da un repository personale di Github). Mi aspetto che siano progetti personali o progetti accademici. Se ne inviano uno da un progetto a pagamento, mi aspetto che venga loro dato il permesso di usarlo. Se non ottengo quella nota, li taglierò dai candidati (candidato debole) o glielo chiederò durante l'intervista (candidato strong). Non avere il permesso sarebbe una grande bandiera rossa (probabilmente insormontabile). Per un candidato avanzato, mi aspetto un disclaimer che noti che alcuni dei loro migliori esempi di fonti non possono essere mostrati perché è stato fatto come parte del loro lavoro. Tuttavia, mi aspetto quindi una testimonianza entusiasmante del perché sono orgogliosi di quel design insondabile e di come lo amano come un bambino.
Infine, per quanto alcune persone rimproverano che "Oh, qualcuno potrebbe semplicemente ottenere un esempio di codice da Internet", la contro-argomentazione è che la maggior parte delle persone che non capiscono un buon codice di qualità di produzione non la capisce nemmeno quando loro lo vedono. Inoltre, si può sempre Google una linea distintiva per il codice da controllare. Inoltre, nella migliore delle ipotesi, rubare il codice otterrà un candidato a un colloquio in cui si metteranno in imbarazzo ("Allora, perché l'hai fatto in questo modo ...?").
Come ultima nota sul codice del precedente impiego: non farlo. Dal punto di vista delle risorse umane, chiedere codice da un precedente impiego è inappropriato e una bandiera rossa sulla società. Entrambi avreste responsabilità legale (cioè, potreste essere entrambi citati in giudizio) e questo dimostra che non hanno idea di cosa stiano facendo. Il codice fatto per un precedente datore di lavoro non dovrebbe mai essere dato a meno che il codice sia già pubblicamente disponibile o se si dispone di un permesso esplicito da parte del datore di lavoro. Peggio ancora, in una grande azienda, il tuo capo diretto potrebbe non avere il potere di darti il permesso, quindi divertiti con il dipartimento legale in quel caso? Sono sicuro che saranno felicissimi di esporre il loro IP per un dipendente in uscita.