Molte grandi risposte qui. Alcune cose che aggiungerei:
Quando devi spiegare il codice a qualcun altro, spesso nel corso della spiegazione lo sviluppatore può improvvisamente rendersi conto di avere un bug. Ho visto succedere ancora e ancora che lo sviluppatore si ferma nelle sue tracce e dice "oh aspetta che sia sbagliato" prima che il recensore abbia capito abbastanza bene la cosa per vedere il bug.
Sapere che il tuo codice sarà ispezionato da qualcun altro ti dà più incentivi a usare gli standard di codifica (semplificando la manutenzione) o usando meno metodi "da cowboy" che nessuno tranne te stesso (e talvolta nemmeno te stesso) potrà mai capire. Non vuoi essere imbarazzato quando mostri il tuo codice a qualcun altro, quindi fai un lavoro migliore su di esso in primo luogo. A causa del fattore imbarazzo, lascia meno del codice commentato con: "Non so perché questo funzioni, ma non si scherza." nella base di codice.
Gli sviluppatori che hanno bisogno di una supervisione o formazione più ampia sono facilmente identificabili. Così sono i veri incompetenti. Prima riuscirai a trovare e ad affrontare i problemi di prestazioni, migliore sarà il team nel suo insieme e maggiore sarà la qualità dell'applicazione. È utile scoprire queste informazioni prima di assumere il nuovo ragazzo che ha bisogno di formazione e assegnarlo alla parte più difficile e critica dell'applicazione.
A volte si tratta solo di correggere una percezione errata che salverà facendo lo stesso errore in un sacco di altri posti. Ad esempio, di recente abbiamo esaminato alcuni SQL per rapporti complessi e abbiamo scoperto che diversi dei nostri nuovi sviluppatori avevano lo stesso malinteso su dove trovare una specifica informazione nel database (è vero che il luogo che avevano scelto sembrava logico che è un problema di progettazione del database che abbiamo anche bisogno di risolvere) che sarebbe fondamentale per scrivere correttamente tutti i rapporti. Individuando il problema e correggendolo nei primi rapporti scritti, è stato salvato lo stesso errore nel resto dei rapporti. E qualcosa a cui gli sviluppatori più anziani (nel tempo lavorano qui non in età) erano così abituati da non pensare che fosse necessario spiegarli.
I giovani possono imparare dal codice più sofisticato scritto dagli anziani (che tendono a comprendere meglio il trapping degli errori e i casi limite per esempio) e gli anziani possono imparare dalle nuove tecniche utilizzate dai giovani a cui non sono ancora stati esposti.
A volte le persone che lavorano su parti dell'applicazione diverse ma correlate si rendono conto che stanno andando in due direzioni diverse e reciprocamente esclusive. Ops, più facile da risolvere ora.
Non è così facile intrufolarsi in valori codificati che cambieranno nel tempo solo per far funzionare la cosa ora. Ciò impedisce molti bug futuri come cose che cambiano all'inizio di ogni anno fiscale.
A volte sono stato bloccato su come fare qualcosa e ho imparato una nuova tecnica che era proprio quello che volevo da rivedere il codice di qualcun altro.
Se hai familiarità con il modo in cui gli altri membri del tuo team pensano (quale revisione del codice ti aiuterà a capire), allora sarà più facile risolvere i problemi in seguito perché inizierai con una comprensione di come Joe avrebbe affrontato quel tipo di problema.