Come opinione di qualcuno che richiede esempi di codice durante la valutazione dei candidati, ci sono alcune funzionalità di alto livello (contenuto del codice) e alcune funzionalità 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 bell'aspetto / qualcosa per qualcosa di visivo quando lo eseguo. Se sei un builder DB, voglio vedere qualcosa di interessante con la rappresentazione o l'analisi dei dati. Il campione dovrebbe essere qualcosa di cui sei orgoglioso . Se non ne hai almeno uno, non hai identità.
- Maturità : cambiate strategia per problemi diversi? Stai risolvendo problemi interessanti? Il codice o l'approccio sarebbero facili da estendere a un problema simile? Al contrario, mi sento come se stessi guardando un membro di un comune di culto del carico?
- Comunicazione : il codice spiega facilmente cosa sta facendo e perché? Ciò non significa che il codice debba essere semplice. In effetti, è un vantaggio rendere semplice la comprensione di codici complessi.
Gli aspetti di basso livello sono più semplici:
- Stile : il codice deve essere pulito, coerente (segue alcune linee guida stabilite) e ben documentato.
- Confezione : dovrebbero esserci almeno un file Leggimi breve, una versione eseguibile e test eseguibili. Il file Leggimi dovrebbe dirmi come eseguire gli ultimi due, nonché il motivo per cui stai dimostrando questo particolare esempio di codice.
- Lingua (e) : in genere chiedo a qualcuno un campione nella lingua per la posizione, così come quella in cui si sentono più forti. Dà una buona idea dei massimali 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 più ampio e interessante (ad esempio, un modulo da un repository personale Github). Mi aspetto che siano progetti personali o progetti accademici. Se ne inviano uno da un progetto a pagamento, mi aspetto una nota che gli sia stato dato il permesso di usarlo. Se non ricevo quella nota, li taglierò dai candidati (candidato debole) o glielo chiederò durante il colloquio (candidato forte). 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 campioni di origine non possono essere mostrati perché è stato fatto come parte del loro lavoro. Tuttavia, mi aspetto quindi una sgargiante testimonianza del motivo per cui sono orgogliosi di quel design incredibile e di come lo adorano come un bambino.
Infine, per quanto alcune persone sostengano che "Oh, qualcuno potrebbe semplicemente ottenere un campione di codice da Internet", la contro argomentazione è che la maggior parte delle persone che non capiscono un buon codice di qualità della produzione non lo capiscono quando lo vedono . Inoltre, si può sempre cercare su Google una riga distintiva per il controllo del codice. Inoltre, nella migliore delle ipotesi, rubare il codice porterà un candidato a un colloquio in cui si mettono in imbarazzo ("Allora perché l'hai fatto in questo modo ...?").
Come ultima nota sul codice di un precedente impiego: non farlo. Dal punto di vista delle risorse umane, la richiesta di codice dall'occupazione precedente è inappropriata e una bandiera rossa sull'azienda. Avresti entrambi una responsabilità legale (cioè potresti 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 non sia già disponibile al pubblico o non si disponga dell'autorizzazione esplicita di quel datore di lavoro. Peggio ancora, in una grande azienda, il tuo capo diretto potrebbe non avere il potere di darti il permesso, quindi divertirti con l'ufficio legale in quel caso? Sono sicuro che saranno felicissimi di esporre il loro IP a un dipendente uscente.