Come valutare la qualità del codice quando non si ha familiarità con la lingua? [chiuso]

10

Come ipotesi, se dovessi intervistare qualcuno per una nuova posizione di sviluppatore PHP quando la mia esperienza è in .NET, come posso determinare se l'esempio di codice che mi hanno fornito è efficiente e di buona qualità?

In altre parole, qual è il modo migliore per valutare il codice di un programmatore se non hai familiarità con la lingua?

    
posta Jason Towne 07.12.2012 - 21:33
fonte

6 risposte

20

how can I determine if the code sample they've provided me is efficient and of good quality?

Le cose che non sarai in grado di valutare sono l'uso corretto degli idiomi linguistici e dell'uso della biblioteca. Quindi, queste non sono cose che dovresti provare a guardare.

Quello che puoi valutare è:

  • Quanto è ben strutturato il codice
  • Variabili con nome (puoi dare un senso alle cose)
  • Funzioni / unità di codice ben composte
  • Coerenza nella base di codice

I punti precedenti (anche se non esaustivi) indicheranno se il codice odori o no e dovrebbero essere qualcosa che un programmatore esperto può identificare come buono o cattivo.

In breve: cerca le cose che dovrebbero indicare un buon codice indipendentemente dalla lingua.

    
risposta data 07.12.2012 - 21:37
fonte
4

Invitali a disegnare un diagramma di flusso oa guidarlo come parte dell'intervista. Hai la scusa perfetta per chiedere e ti dice un bel po 'di come pensano di vedere come spiegano.

Se stanno per saltare alla tua lingua preferita, sai che hai un sacco di mentoring, quindi dovresti comunque cercare buone capacità logiche / di ragionamento.

Se continueranno a lavorare nella loro lingua preferita, dovrai accettare che mi autogestiranno in qualche modo con i dettagli specifici della lingua fino a quando qualcun altro non verrà in grado di accelerare comunque, quindi tutto ciò che stai per dobbiamo interagire con il lato del design.

    
risposta data 07.12.2012 - 22:36
fonte
1

A parte il codice di errore / evidentemente sbagliato, efficiente dipenderà in gran parte dal compilatore / interprete della lingua in questione, e non sarai davvero in grado di guardare da un campione di codice. Un esempio di codice potrebbe essere magnificamente scritto ed elegante come fine porcellana sui centrini, ma funziona lentamente se compilato / interpretato male.

Non sarai in grado di valutare l'utilizzo idiomatico delle funzionalità linguistiche / zucchero sintattico / convenzioni senza una certa familiarità.

Dovresti essere in grado di dire se è ben scritto in generale sulla base di considerazioni universali quali l'ordine, il flusso di controllo, la denominazione delle variabili, l'ordine delle operazioni e così via.

Tuttavia, più in pratica, se sai in che modo verrà introdotta la lingua, potresti provare a trovare una o più guide di stile per quella lingua, andare al negozio di libri e sfogliare un paio di libri per Quella lingua e sfoglia gli esempi di codice alla ricerca di analogici per qualcosa che ti è familiare / nella tua lingua (s) di scelta, controlla uno o più progetti open source che utilizzano quel linguaggio, e così via.

Se hai tempo e se non c'è una barriera di costi, potresti persino arrivare a creare un ambiente di sviluppo per quella lingua e avviare un'app di Hello World, fare un codice kata, o altrimenti scrivere un semplice piccola app in esso. Svilupperai un quadro di riferimento rudimentale abbastanza rapidamente e non solo questo ti darà un vantaggio per lo scopo specifico di rivedere il codice in questione, potresti essere costretto dalla lingua e ramificarti un po '.

    
risposta data 07.12.2012 - 21:53
fonte
1

Indipendentemente dalla lingua:

  • Vi sono chiare separazioni di preoccupazioni, uso appropriato delle classi (per le lingue OO) o qualsiasi indicazione di tentativi intenzionali di rottura giù il codice in "pezzi" riutilizzabili e modulari?
  • Allo stesso modo, qualsiasi prova di test - test unitari o altro?
  • Se si tratta di codice di produzione, è disseminato di stringhe di debug che potrebbero suggerire una minima separazione tra sviluppo e distribuzione?
  • Il codice segue qualsiasi tipo di convenzione di denominazione (se ti piace o meno quella convenzione è irrilevante!)?
  • Se si ha il file, piuttosto che una stampa, ogni funzione / classe nel file si riferisce a (quindi se si tratta di un file chiamato data_access_layer , l'evidenza delle funzioni che elaborano le immagini sarebbe probabilmente fuori luogo).
  • Qualsiasi indicazione di mancanza di fiducia per l'input dell'utente è buona, specialmente per i linguaggi basati sul web come PHP. Quindi strutture come input = escape (input) mostrano almeno che sono a conoscenza del problema.
  • I commenti o il codice auto-descrittivo sono sempre buoni. Ci sono diverse scuole di pensiero sulla quantità di commenti che dovrebbero essere presenti, ma una completa assenza di commenti
  • A costo di essere cinico, vorrei anche google un po 'del codice prima dell'intervista. Potrebbe facilmente essere un lavoro di copia e incolla, purtroppo.

Non dire che qualsiasi codice che non ha tutto questo è automaticamente scarso, ma io considererei questi indicatori di qualcuno che ha riflettuto e considerato la loro pratica.

Tuttavia, per tutti questi indicatori, dovresti chiedere quale sia la ragione per cui il codice è così. Potrebbe esserci una buona ragione specifica per le loro scelte ... e dopo questo, google è tuo amico quando loro e gli altri candidati se ne vanno, in quanto puoi verificare se ciò che hanno detto sembra plausibile ...!

Buona fortuna, dato che assumere delle brave persone è uno dei ruoli più importanti nella tua organizzazione;)

    
risposta data 08.12.2012 - 17:20
fonte
0

Dovresti chiedere a qualcuno che conosce la lingua in questione di venire al colloquio o dare un'occhiata al campione. Una tale persona molto probabilmente troverà i punti difettosi, se presenti.

Il candidato lavorerà in una squadra? Lascia che i membri del team lo incontrino e fai domande sulle sue capacità.

    
risposta data 08.12.2012 - 00:01
fonte
-2

Chiedi loro quali sono i limiti che hanno incontrato durante l'uso della lingua. Chiedi loro di mostrarti una semplice query SQL. Qualsiasi php dev degno di un grido dovrebbe essere in grado di battere fuori una query di selezione / aggiornamento / eliminazione di base senza troppi sforzi.

Doug

    
risposta data 08.12.2012 - 03:31
fonte

Leggi altre domande sui tag