Come fornire feedback dopo il processo di revisione del codice


10

Sto attualmente esaminando alcuni dei codici degli sviluppatori junior che si sono appena uniti al mio team, mi chiedo come dovrei fornire l'output di questa recensione:

  1. Devo correggere il codice da solo?

  2. Devo dare loro un feedback sul processo di revisione e lasciare che facciano le correzioni secondo le mie istruzioni? E in tal caso, come posso dare questo feedback, riempire un determinato documento modello e inviarlo a loro, o c'è qualche software che mi aiuterà a contrassegnare le cose con problemi all'interno dei file di codice in cui potranno successivamente verificarlo? (Sto usando Visual Studio).

Dopo aver eseguito la revisione del codice e le correzioni sono state completate, è trascorso un po 'di tempo e alcune parti del codice che ho esaminato in passato sono cambiate, come posso fare il processo di riesame? Devo ricontrollare tutto il codice? O posso semplicemente controllare le parti che sono state modificate? E se sì, come posso tenere traccia delle parti che sono cambiate in modo da evitare una doppia revisione del codice?


Risposte:


14

Risposta breve

Devo correggere il codice da solo?

No.

Devo dare loro un feedback sul processo di revisione e lasciare che facciano le correzioni secondo le mie istruzioni?

Sì. Secondo i tuoi suggerimenti , non le istruzioni . Le istruzioni sembrano troppo autorevoli.

E in tal caso, come posso dare questo feedback, riempire un determinato documento modello e inviarlo a loro, o c'è qualche software che mi aiuterà a contrassegnare le cose con problemi all'interno dei file di codice in cui potranno successivamente verificarlo? (Sto usando Visual Studio).

Utilizzare uno strumento per fornire il feedback. Puoi usare Visual Studio.

Risposta lunga

Usavo Visual Studio ma dovevo costantemente chiedere ad altri sviluppatori: "Ehi, puoi inviarmi il tuo lavoro in modo da poterlo rivedere?" Non mi è piaciuto e non ha mai funzionato molto bene. Ora uso Review Assistant perché posso iniziare una recensione guardando i check-in. Non ho bisogno di fare affidamento su un altro sviluppatore che mi invia lavoro per la revisione. Mi aiuta anche a contrassegnare gli articoli come difetti, o semplicemente contrassegnare gli oggetti che devono essere guardati dall'autore. Questo funziona per il nostro team perché, una volta avviata una recensione, rimane nella bacheca delle recensioni e non si perde nella traduzione. Questo è integrato con Visual Studio. Come ho già detto, Visual Studio ha anche il suo processo di revisione nativo, ma trovo che abbia dei limiti e il processo non è naturale; pertanto, utilizzo Review Assistant.

Questo strumento aiuta anche con il processo avanti e indietro, discussioni ecc.

Il processo, più o meno, è il seguente:

Esamino qualcosa, quindi lo invio all'autore (nel tuo caso junior dev). Apportano modifiche e poi lo rispediscono. Guardo le modifiche e fornisco feedback. Se sono bravo con le modifiche, chiudo la recensione. Altrimenti va avanti e indietro. A volte, se c'è troppo avanti e indietro, vado semplicemente alla loro scrivania e userò una lavagna: accelera davvero il processo.

Le revisioni del codice sono un'area sensibile, quindi fai molta attenzione alla scelta del testo. Non lo dico mai a nessuno

Scarsa scelta del testo

Ho esaminato il tuo codice e ci sono alcuni elementi che devi modificare.

Dico invece questo:

Migliore scelta del testo

Ho esaminato il tuo codice e ho bisogno di aiuto. Potete per favore rivedere gli articoli che vi ho inviato e vedere se potete chiarire alcune delle mie domande?

Questo fa pensare all'autore:

  1. Ho bisogno di aiuto in modo che non entrino in modalità difensiva.
  2. Sembra che siano i recensori, non io. Tecnicamente parlando, dal momento che sto chiedendo loro di dare un'altra occhiata e cambiare alcune cose, sono un po 'come il recensore.

Queste semplici scelte di parole mi hanno aiutato enormemente.

Non sottovaluto mai gli sviluppatori minori. Ho lavorato con alcuni sviluppatori senior (oltre 10 anni di esperienza) e il codice era peggio di uno studente in cooperativa junior. Quindi solo perché sono senior o junior non è poi così importante; il loro lavoro è davvero ciò che parla più forte di anni di esperienza.

Spesso, per incoraggiare i giovani sviluppatori e farli partecipare alle recensioni, invierò loro qualcosa da rivedere per me: qualcosa che possono capire, qualcosa che troveranno stimolante ma non totalmente al di là di loro. Posso esprimerlo come di seguito:

Potete per favore rivedere qualche codice per me perché non riesco a capirlo.

Questo mi aiuta di nuovo molto. Questo aiuta perché dimostra chiaramente che io non sono l'unico a fare recensioni, ma fanno anche recensioni e fanno anche parte del processo. Mostra che l'idea è quella di produrre un codice buono e pulito e chiedere aiuto se necessario. Il processo di revisione è una cultura, quindi abbiamo davvero bisogno di lavorarci.

Ora alcune persone potrebbero preoccuparsi che se fanno quanto sopra, gli sviluppatori junior perderanno rispetto perché hanno appena fatto qualcosa che non potresti fare. Ma questo è lontano dalla verità: chiedere aiuto mostra umiltà. Inoltre ci sono molte situazioni in cui puoi brillare. Infine, se questa è la tua paura, hai problemi di autostima. Infine, forse non lo so davvero: voglio dire che alcuni di questi sviluppatori hanno algoritmi nuovi nella loro testa perché li hanno appena studiati un mese fa.

Comunque, torniamo a junior e recensioni. Dovresti vedere lo sguardo sui loro volti quando lo capiscono e mi inviano una risposta. Allora potrei dire loro: "OK, lasciami fare le modifiche e, se sei soddisfatto, per favore chiudi il problema."

Sono fantastici avere il potere di guardare il mio lavoro e dire: "Sì, i tuoi cambiamenti sono buoni. Ho chiuso il problema."

Non aggiorno mai il codice da solo perché:

  1. L'autore non imparerà da quello.
  2. È come se stessi dicendo: "Spostati di lato, lascia che ti mostri come è fatto. Il mio codice è migliore del tuo."
  3. Perché dovrei? Questo è più lavoro per me.

Ma suggerirò idee e frammenti di codice nei miei commenti per aiutare l'autore. Si prega di notare che a volte le mie recensioni chiedono semplicemente all'autore che non capisco il loro codice; potrebbe non esserci nulla di sbagliato nel loro codice. Potrebbero aver bisogno di cambiare i nomi delle variabili, aggiungere commenti ecc. Quindi, non saprò nemmeno cosa cambiare in quel caso; solo loro lo faranno.

Se continui a fare recensioni, prima o poi avrai una buona idea del livello di conoscenza di ogni sviluppatore del team. Sapere questo è davvero utile e devi sfruttarlo e liberarlo. Ecco come: se rivedo un po 'di codice e vedo ovvie aree di miglioramento e so che anche un altro sviluppatore potrebbe catturarlo, lo farò invece esaminare. Qualcosa del tipo "Ehi, vedo alcune aree che possono essere migliorate. Puoi per favore rivederlo in modo più dettagliato e inviare i tuoi commenti all'autore?" Funziona alla grande anche perché ora ho altri 2 sviluppatori che lavorano tra loro.

Se sto rivedendo un po 'di lavoro e noto qualcosa di cui l'intera squadra può trarre vantaggio, creerò uno scenario ipotetico e spiegherò il problema in una riunione. Inizierò spiegando lo scenario e chiederò a tutti se possono trovare il problema o vedere un problema, coinvolgerli. Fai in modo che tutti facciano domande. Quindi presentare finalmente un approccio migliore. Se qualcun altro ha un approccio migliore, li ringrazio e riconosco di fronte al team che il loro approccio è migliore. Questo dimostra che non sono il tipo di personalità "a modo mio o dell'autostrada". Inoltre, non apro MAI il lavoro di qualcuno e inizio a sottolineare i problemi in una riunione, l'autore non lo apprezzerà, indipendentemente da quanto sia bello e innocuo, penso di essere.

Quando faccio recensioni, non cerco solo un buon codice pulito ma anche ciò che il codice sta facendo. Se il requisito aziendale è: se un dipendente è stato con l'azienda per più di 10 anni, dare loro un aumento del 5%. Altrimenti, 2,5% . La prima cosa che controllo è se lo sta effettivamente facendo. Quindi controllo se lo sta facendo in modo pulito, coerente e performante.

Se faccio una recensione, mi assicuro di dare seguito o nessuno prenderà sul serio le recensioni.

Ho lavorato con qualcuno anni fa per fare una recensione e cc il responsabile dello sviluppo e il responsabile del controllo qualità ma entrambi i manager provenivano da un background aziendale o avevano poca esperienza di sviluppo. Lo ha fatto solo per impressionarli. A nessuno piaceva e fu allora che mi dissi che non avrei mai fatto quell'errore.

L'altra cosa che faceva era scegliere lo stile di programmazione ed era convinto che il suo stile fosse il migliore ("Il mio kungfu è molto meglio del tuo stile da scimmia ..."). Questa è stata un'altra lezione per me: esiste sempre più di un modo per risolvere un problema.

Rispondi ad alcune delle tue domande numerate

1- dovrei correggere il codice da solo?

No, vedere i motivi che ho indicato sopra.

2- dovrei dare loro feedback sul processo di revisione e lasciare che facciano le correzioni secondo le mie istruzioni?

Sì, prova a usare frasi e un tono amichevole ma che richiede attenzione. Sii il più chiaro possibile. Indica qual è il problema con il codice, come migliorarlo. NON chiedere semplicemente di cambiarlo. Ma fornire ragioni.

come posso dare questo feedback, riempire un determinato documento modello e inviarlo a loro, o c'è qualche software che mi aiuterà a contrassegnare le cose con problemi all'interno dei file di codice in cui potranno successivamente verificarlo? (Sto usando Visual Studio).

Come ho detto, puoi usare lo strumento che uso o un altro strumento. Non utilizzare documenti e-mail o word perché si perdono ed è difficile tenerne traccia.

Dopo aver eseguito la revisione del codice e le correzioni sono state completate, qualche volta è passato e alcune parti del codice che ho esaminato in passato sono cambiate, come posso fare il processo di riesame? dovrei ricontrollare tutto il codice da capo?

Principalmente quello che faccio è controllare il delta (solo modifiche). Ma devi avere in mente il quadro generale per assicurarti che nulla sia rotto e segua l'architettura.

Pensieri finali

Personalmente penso che la parola "revisione del codice" sia una cattiva scelta e non so come sia iniziata. Avrebbero potuto scegliere una parola molto migliore e meno autorevole.


Funzionerebbe solo per piccole cose come i nomi delle variabili. Tuttavia, se l'architettura è sbagliata, non esiste uno strumento che può aiutare. Devi solo buttare via tutto e riscriverlo.
t3chb0t,

@ t3chb0t Perché piccole cose? Con making sense architecturally, volevo dire assicurandosi l'accesso ai dati di codice strato è all'interno dello strato di accesso ai dati, la validazione interfaccia utente è l'interfaccia utente, ecc In altre parole, assicurandosi che le preoccupazioni non sanguinano in altre aree. Ci sono strumenti per aiutare a mantenere l'architettura; in realtà VS ora lo fa subito . Lo usiamo anche noi.
CodingYoshi,

Per quanto riguarda gli strumenti, penso che uno strumento perfettamente valido da utilizzare sia qualunque forma di software di ticketing / lavoro che probabilmente già usi per tracciare ciò che deve essere fatto. Ad esempio, se stavi utilizzando Github, potresti avere tutte le modifiche associate a un problema e quindi la revisione verrebbe eseguita in quel thread di discussione. Jira e Trac sono altri due strumenti del genere. Ciò mantiene un posto centralizzato per tutte le informazioni relative all'opera ed è chiaramente visibile prima della chiusura del biglietto.
Kat

@Kat Non sono sicuro che uno strumento di ticketing sia lo strumento giusto da usare qui. Gli strumenti di revisione del codice mostrano la differenza tra le modifiche e le problematiche sono diverse rispetto a quelle di un sistema di ticketing; significano cose diverse. Ma potrei sbagliarmi.
Coding Yoshi,

3

Molto dipende da come comprendi le recensioni dei codici nella tua azienda. Ci sono aziende in cui una revisione del codice è un processo altamente formalizzato che si svolge raramente ma è un grosso problema. In altri, la revisione del codice è una parte obbligatoria di ogni attività che viene implementata, ed è una cosa molto banale e veloce con poco formalismo. Personalmente, scelgo quest'ultimo approccio, ma può essere o meno la tua decisione se puoi usarlo o meno.

Ho scritto un post sul blog intitolato Le recensioni di codici valgono il tuo tempo? per riassumere il processo utilizzato dal mio team. I takeaway, in relazione alla tua domanda sarebbero:

  1. Consenti agli sviluppatori di correggere il codice. Ciò consentirà loro di comprendere meglio i tuoi commenti (o di rendersi conto che non li capiscono completamente e non li chiedono), e svolgere un compito è un modo migliore di apprendere che non solo leggerlo.
  2. Il software per la revisione del codice è la strada da percorrere. Sono disponibili molte opzioni, sia open source che proprietarie. La maggior parte funziona con git. Il mio team usa BitBucket (precedentemente noto come Stash), ci sono anche GitLab e GitHub, Gerrit (di cui personalmente non sono fan) e molti altri. La maggior parte di queste app sono basate sul Web, quindi non importa quale IDE usi, ma ci sono anche plugin per molti IDE, quindi sono sicuro che ce ne sono anche per Visual Studio. Software come questo consente di rivedere il codice prima che venga unito nel ramo principale (di solito tramite richieste pull) e mostra le parti modificate e alcune linee di contesto attorno a ogni modifica. Questo rende la revisione del codice fluente e senza problemi.

Per quanto riguarda il ciclo review-fix-check-the-fix, ciò che si sceglie dovrebbe dipendere dalla maturità degli sviluppatori e dalla gravità dei problemi individuati. Una volta che i team trasformano le revisioni del codice in un processo quotidiano, puoi aspettarti che modifiche banali come la ridenominazione di una classe vengano semplicemente applicate e probabilmente non è necessario ricontrollarle. Se la squadra non è ancora venduta su recensioni di codice o le persone sono davvero inesperte, potresti voler controllare tali cose a prescindere. D'altra parte se la tua recensione ha individuato un problema di concorrenza complesso che gli sviluppatori junior potrebbero non comprendere appieno anche dopo averlo segnalato a loro, è meglio controllare la correzione e non dare l'approvazione alla modifica prima di essere sicuro che sia stata davvero corretta.

Gli strumenti possono aiutarti in questo poiché, se lavori con richieste pull, puoi facilmente impostare il software in modo da non consentire l'unione di una modifica fino a quando non avrà l'approvazione di un numero predeterminato di sviluppatori. Di solito è possibile visualizzare le modifiche nei singoli commit di una modifica che consente di esaminare facilmente solo le modifiche aggiunte dall'ultima serie di commenti.


1

Voto per la seconda opzione. I juniors possono avere una "curva di lerning" migliore quando fanno i cambiamenti da soli.

Inoltre: non essere l'unico a rivedere il codice.
Lascia che anche alcuni membri esperti del tuo team guardino il codice e pianifichino una riunione di revisione periodica in cui i revisori presentano i loro risultati (che hanno fatto prima della riunione!) All'autore. Ciò aumenterà la motivazione di entrambi, i giovani e i membri del team di esperienze.


4
Ottimo punto Inoltre, i giovani dovrebbero "rivedere" il codice del PO e anche quello dell'altro.
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.