L'equivalente del test Joel per misurare un programmatore [chiuso]


70

Capisco che per misurare un progetto o un codice, possiamo usare The Joel Test , ma esiste un semplice test standard (come The Joel Test) in grado di misurare e filtrare quanto è bravo un programmatore?

Il mio piano è di avere questo test come filtro rapido prima di passare a un test più dettagliato.


2
Se ci sono test come questo che vengono utilizzati, penso che i programmatori dovrebbero saperlo. Possono essere o non essere validi come: Assumi quello con la maggior parte delle modifiche del corpo.
JeffO,

2
Interessante, quando ho posto questa domanda, è stata declassata all'inferno (ora di nuovo positiva, sì, e rapidamente chiusa). È davvero così diverso da questo? programmers.stackexchange.com/questions/133691/…
ripper234

8
@ ripper234, le ragioni per cui una domanda è chiusa su SE sono un po 'come quei bug software inspiegabili e intermittenti - un mistero davvero. Un po 'come la natura umana davvero.
Tehnyit,

8
Lo stesso Joel fornisce un test semplice ma rigoroso: intelligente e fa fare le cose . : P
Dan J,

FizzBuzz! Certamente!
CraigTP

Risposte:


67

C'è la matrice delle competenze del programmatore .

Come per il test Joel, è solo una vaga guida. L'unico modo per valutare correttamente un programmatore è chiedere a buoni programmatori che hanno lavorato con loro.


27
Quindi l'unico problema rimasto è valutare se i compagni di squadra passati / attuali del ragazzo sono bravi ... Oops.
Péter Török,

21
Sì, è ricorsivo :)
Tom Squires,

13
Non è niente come il test di Joel. La tua risposta indica un'enorme matrice dettagliata, il test di Joel è una serie di 12 domande molto semplici a cui rispondere.
Bryan Oakley,

2
@BryanOakley - è vero, ma il PCM è anche la prima cosa a cui ho pensato quando ho letto la domanda. Il risultato: non ci sono semplici domande a cui puoi rispondere per misurare un programmatore!
Joris Timmermans,

2
Il punto di matrice di @BryanOakley essendo più complesso delle serie è ben preso; per me un'analogia più stretta con il test di Joel sarebbe una serie composta da elementi di colonna di livello 1 in PCM - "spiega e usa le matrici ..., l'ordinamento di base ... ecc"
moscerino

25

Vorrei cambiare il test di Joel:

Hanno usato il controllo del codice sorgente?

Sanno come automatizzare una build in un solo passaggio?

...

L'unico che non sembra particolarmente applicabile è la domanda dei tester. Gli altri che sembrano non accontentarsi di questo sono il modo in cui lo gestiamo come lo hai gestito nelle domande precedenti (questo è il modo in cui gestiamo mantenere aggiornato il nostro programma come hai gestito la pianificazione in passato?) .

modificare:

Fondamentalmente non ottieni le cose nel test Joel gratuitamente, devi assumere persone che possono farlo accadere. Vuoi stabilire la loro capacità di farlo accadere.


1
Tutte le domande di Joel riguardano più l'ambiente che il programmatore. Se il mio team non utilizza il controllo del codice sorgente, la mia mancata integrazione con il controllo del codice sorgente non è certo un miglioramento. Far sì che il team usi il controllo del codice sorgente è un miglioramento.
Edwin Buck,

15

Il Joel Test è solo un controllo di base informale per valutare rapidamente se un luogo ha buone condizioni di lavoro per i programmatori. Anche se segna un 10 perfetto, può ancora essere un buco infernale che sta andando in bancarotta sei mesi lungo la strada. Un punteggio basso è indice di qualcosa che non è del tutto corretto, e fornisce eccellenti domande per l'intervista ("Attualmente non stai usando il controllo del codice sorgente; ci sono piani per farlo in futuro?"), E le risposte potrebbero essere tali che accetteresti il ​​lavoro nonostante un punteggio Joel basso.

Il Joel Test non è neanche un test 'standard'; è solo una lista di controllo che Joel Spolsky ha pubblicato sul suo blog.

Per quanto riguarda la "misurazione", la qualità di un programmatore va; sfortunatamente, le capacità e le qualità veramente importanti di un buon programmatore sono difficili o impossibili da quantificare, quindi non c'è sostituto per una valutazione umana approfondita. Puoi eliminare abbastanza facilmente i candidati completamente all'oscuro, usando un compito di programmazione molto semplice - idealmente, qualcosa che coinvolge ricorsione, strutture ad albero o puntatori (è improbabile che un programmatore che non "capisca" sia di grande utilità). Per coloro che superano questo test, dovrai valutare le abilità manualmente: leggi il codice che hanno scritto, testano le applicazioni che hanno scritto, dai loro più compiti di programmazione (sia di progettazione che di implementazione), guardali lavorare, parlare con loro, vedere se può innescare una discussione professionale. Se stai cercando uno specialista / guru della lingua,


1
+1 Giudicare le capacità di un buon programmatore è un compito difficile da quantificare.
Karthik Sreenivasan,

20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. Ti sbaglieresti ad accettare il lavoro a proposito. Alla fine ogni sviluppatore apprende che Plans to do so in the futureè solo qualcosa che gli intervistatori dicono di ingannarti ma che non agiscono mai a causa della terribile gestione. Quante volte abbiamo sentito qualcosa sull'effetto Oh, we are moving towards Agile...e risulta essere l'ennesimo negozio di cascate micromanaged?
maple_shaft

@maple_shaft: sì, probabilmente non è un buon esempio ...
martedì

5
Un 10 perfetto sul test Joel sarebbe in realtà 12 ... solo dicendo :)
MattDavey,

3
@MattDavey: dipende in modo critico dalle tue competenze per guidare il cambiamento. Ho avuto una di quelle esperienze quando ero nel settore da due anni (sì, passeremo al C ++) e ho ottenuto il risultato atteso. Al giorno d'oggi, sarebbe una questione diversa. Io riesco a capire se si tratta di un desiderio sincero, ma l'incapacità di cambiare, e quindi rendere possibile.
Saluti

12

Si:

Programmate nel tempo libero?

In tutta la mia esperienza, questa singola domanda è più indicativa di quanto sia bravo un programmatore. Se a loro piace; se hanno passione per svolgere il compito, allora saranno bravi a farlo.

E, francamente, un sacco di 9 a 5 posti di lavoro non comporta un sacco di codifica . Non implicano molta iterazione durante il ciclo di vita della progettazione di nuovi programmi e della visione di come funziona / fallisce quella progettazione. Senza questa iterazione, non c'è semplicemente la pratica necessaria per i programmatori per acquisire le competenze di base nella progettazione del programma.

E non implicano molto apprendimento. I programmatori che semplicemente hackerano cose a casa esploreranno soluzioni nuove e interessanti senza i vincoli delle grandi aziende.


2
Perché questo ha un solo voto? IMO questa è la vera distinzione tra squadre mediocri e quelle veramente innovative.
Repo Man


0

Eh, ho scrupolo con la formulazione all'inizio. Non è "hai usato X" o "Conosci Y", si tratta di usare e fare davvero. Qualsiasi programmatore che non ha toccato o sentito parlare degli elementi nel test Joel è semplicemente disconnesso e deve avere la minima idea. Ma hai ragione, i negozi di codici falliscono il test di Joel perché la gente nei negozi lo lascia fallire. L'unica difesa che posso vedere corre come "Ho provato, ma non avevo l'autorità. E ora sto facendo domanda qui".


0

Usi il controllo del codice sorgente?

Si ma

  • Non ti dice davvero niente.
  • Come fai a sapere se inoltro unione?
  • Come fai a sapere se tiro le modifiche prima di premere?
  • Come fai a sapere se costruisco prima di impegnarmi nel repository.

Puoi creare una build in un solo passaggio?

  • Sì, il nostro lead CI scrive script e li eseguo solo in PowerShell.

Realizzi build giornaliere?

  • Lo fa il nostro server CI

Hai un database di bug?

Sì, ma non l'ho configurato e non lo gestisco, lo uso semplicemente.

Correggi i bug prima di scrivere un nuovo codice?

  • In un mondo perfetto in cui ho risorse illimitate - sì, sì. Nel mondo reale a volte sono costretto a registrarli e lavorare su qualcos'altro.

Hai un programma aggiornato?

No, non è il mio lavoro.

Hai una specifica?

Mi viene data una specifica, poi la analizzo e produco documenti pertinenti.

I programmatori hanno condizioni di lavoro silenziose?

  • Non mi assumerai se ascolto musica, parlo con il mio collega e scherzo? Lo sviluppo del software dovrebbe essere creativo - le condizioni di lavoro variano da un'organizzazione all'altra.

Usi i migliori strumenti che il denaro può comprare?

Non sai quali sono gli strumenti migliori e se pensi di farlo, ci sarà sempre qualcuno a cui discutere.

Hai tester?

Sì. In realtà sì e non sono molto bravi, ma non era questo il problema.

I nuovi candidati scrivono codice durante il loro colloquio?

Sì e falliscono. Sì e passano. Cosa ti dice questo?

Fai test di usabilità in corridoio?

No, ma cosa succede se facciamo qualcosa di meglio?

Concludere:

  • Questo test potrebbe funzionare bene in un mondo accademico perfetto in cui tutto funziona, tutti vanno d'accordo, condividono le conoscenze e ci sono risorse illimitate.
  • Quello che vuoi sapere è che tipo di ingegnere sono. Le risposte bit a bit semplici non ti diranno nulla di utile e penso che qualcuno debba essere molto ingenuo per innamorarsene.
  • Le risposte sopra, sia negative che positive, non ti dicono nulla sulla mia capacità di produrre codice pulito.

Questo non è un rant, ma sarei molto interessato a sapere che tipo di sviluppatore pensi che io sia basato sulle risposte che ho fornito. Speriamo che questo dimostri il mio punto.


8
Non capisco davvero questo. Queste domande riguardano il team / l'azienda, non il singolo programmatore. E l'OP non ha suggerito di usare le stesse domande per valutare il programmatore, vuole solo una serie di domande semplici.
CodesInChaos

1
Penso di essere bravo quanto il mio team o l'azienda per cui lavoriamo. A mio avviso, test come questo sono molto complicati, ma in realtà non ti dicono nulla di utile sulla società o sullo sviluppatore.
CodeART

3
How do you know whether I pull changes before pushing? Bene, non so quale controllo del codice sorgente stai usando, ma almeno in SVN, se provi a eseguire il commit in una cartella con modifiche che non hai ancora apportato, il commit fallirà fino a quando non eseguirai Update.
Mason Wheeler,

Stiamo usando TFS :) Ho davvero bisogno di mettere le mani su altri sistemi di controllo della versione.
CodeART

In verità le persone usano effettivamente TFS. Ho imparato qualcosa
Fabinout,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.