Code Recensioni funzionano davvero in vera Agile?

13

Così ho iniziato a lavorare per una grande corp., una di quelle con 3 lettere nel nome, e stanno cercando di diventare Agile, ma hanno tonnellate di processi, che non mi sembrano agili.

Quello che mi ha ferito di più sono le revisioni del codice. Il mio ultimo lavoro è stato con una startup che direi che è il team di sviluppo più agile che abbia mai visto, sia stato, e / o abbia mai sentito parlare.

In ogni caso, la mia tesi è che le recensioni di codice sono una perdita di tempo nello sviluppo iterativo o agile in cui UX / UI è estremo / intenso (si pensi alla perfezione di Apple / Steve Jobs). Forse qualcuno qui può aiutarti a capire prima che mi licenziano?

Ecco il mio processo di sviluppo e quello del mio ultimo avvio ... molto agile.

Facciamo il primo lavoro di feature per ordinare task di sviluppo / tutti i giorni. Potremmo prendere in giro una coppia di versioni e presentarle agli utenti, al team e al marketing per ottenere feedback. Quindi eseguiamo un'altra iterazione di simulazione per ottenere un round dalle stesse parti interessate sopra. Poi divideremo il lavoro e iniziamo. Abbiamo pietre miliari e date da incontrare, ma continuiamo a tappare. Non abbiamo recensioni di codice durante tutto questo. Diverse volte durante le settimane del nostro sviluppo teniamo le sessse con gli stakeholder di nuovo per vedere se sono ancora d'accordo caratteristiche / funzioni / UX / UI sono ancora in forma e obiettivo.

Mentre ci avviciniamo alla fine del ciclo di iterazione di 8 settimane, il QA inizia a testare, quindi passa agli utenti alfa e infine agli utenti beta. Ma durante gli alfa e beta gli sviluppatori stanno esaminando le nuove funzionalità e le funzionalità meno recenti che fanno cambiamenti iterativi quotidiani o orari all'interfaccia utente per migliorare la UX. Quindi, una funzionalità sviluppata durante questa release potrebbe finire per essere modificata 3 volte in più nelle ultime quattro settimane per migliorarla e perfezionarla o aggiungere alcune caratteristiche minuscole (ad esempio, rendere il componente un po 'più agile o più intelligente). A volte i cambiamenti potrebbero essere un significato superficiale, nessuna operazione CRUD viene modificata o modificata, ma l'intera interfaccia utente cambia solo.

Quindi, con questo tipo di processo di sviluppo, estremo Agile, le revisioni del codice non sarebbero una perdita di tempo? Significa che se avessi un altro sviluppatore o due rivedere il mio codice, ma poi quel codice cambia altre 3 volte prima che vada alla porta, a causa di tutti i miglioramenti UI / UX, non stiamo perdendo il nostro tempo per le prime 3 volte codice in quanto quel codice / componente / UI è stato scartato?

Non abbiamo mai avuto molti problemi di qualità con questo processo e sì, se uno sviluppatore ha lasciato fuori tutta la conoscenza, ma abbiamo sempre trovato sviluppatori intelligenti a prenderlo e rilevarlo.

E sì, abbiamo un sacco di tester perché potrebbero dover ripetere il test 3 o 4 volte. Inoltre, per favore non rimanere impiccato a chiedere perché tutte le UI / UX cambiano ... questo è solo il modo in cui le cose sono fatte ... è stato allora ecco perché l'app vince un sacco di premi per UI / UX e gli utenti uccideranno per il app. Il processo di pensiero è se riesco a ottenere un miglioramento anche del 2% in qualcosa, perché ho un'ora in più e poi lo faccio. Gli utenti saranno più felici, il che significa più $ o utenti. E sì, i nostri utenti stanno bene con l'app che cambia continuamente perché questo è stato fatto fin dal primo giorno in modo che non lo vedano come negativo o negativo.

Spero che questo post non sia così pomposo, ma non riesco a vedere come le recensioni di codice non siano sprecate. Forse il 2% di tutto il nostro codice nel codice recensito ha dei bug. Ogni versione potremmo trovare 3 bug tramite la revisione del codice. Quindi si ottengono 40 ore di revisione del codice per sviluppatore per versione (4 x 40 = 160 ore) per trovare da 3 a 5 bug? È probabile che il 50% dei bug da 3 a 5 sia stato prelevato dal QA. Non sarebbe meglio spendere 40 ore per sviluppatore aggiungendo una nuova funzionalità o migliorando quelle esistenti?

    
posta user25702 19.05.2011 - 22:19
fonte

7 risposte

13

Ci sono alcune cose che le revisioni del codice possono fare per te e alcune cose che non possono fare. Gli argomenti in favore delle revisioni del codice:

  • Proprietà collettiva
  • Trova bug (QC)
  • applica lo stile coerente (QA)
  • Mentoring

Molti processi agili affrontano quelli in modi diversi:

  • Proprietà collettiva: tutti i membri del team sono responsabili del progetto, il che significa che gli occhi di tutti saranno sul codice in qualsiasi momento.
  • Gratuito per il refactoring: questo porta le recensioni del codice al livello successivo e consente a chiunque nel team di eseguire il refactoring secondo necessità.
  • Test unitari (QC): i test unitari sono più efficienti e meno inclini agli errori umani quindi all'ispezione visiva. In realtà, devo ancora trovare un mezzo più efficiente.
  • Pair programming (QA): si occupa del mentoring e fornisce consigli di refactoring precoce mentre il codice è scritto. Anche questo è ancora un argomento controverso, ma trovo che sia d'aiuto mentre si avvia un nuovo sviluppatore. È anche un buon momento per applicare gli standard di codifica.

In sostanza ci sono altre strade per prendersi cura dei potenziali guadagni che normalmente avresti fatto delle revisioni tra pari. La mia esperienza personale con revisioni tra pari è che sono meccanismi molto inefficienti e non sono efficaci nel trovare bug o difetti di progettazione più grandi. Tuttavia, hanno il loro posto in alcune squadre, e su progetti dove agile non è fattibile (per qualsiasi motivo), sono abbastanza necessari.

    
risposta data 19.05.2011 - 22:43
fonte
11

Le recensioni di codice solo per trovare i bug però? Sembri pensare che sia vero e io no.

Direi che le revisioni del codice possono essere più incentrate sulla proprietà collettiva del codice, assicurando che la conoscenza sia in più parti e preparando gli altri ad ereditare il codice che potrebbe essere per le nuove funzionalità e per i bug. Mi piacciono le revisioni del codice come un modo per avere un po 'di controllo e bilanciamento del sistema in quanto non si sa mai quando qualcuno potrebbe avere un'idea di dove qualcosa possa essere riscritto per mantenere le convenzioni.

    
risposta data 19.05.2011 - 22:27
fonte
4

La programmazione accoppiata è la risposta XP alle revisioni del codice. In sostanza, ogni riga di codice viene rivista come è stata scritta. Le recensioni del codice sono state portate all'estremo.

    
risposta data 19.05.2011 - 22:25
fonte
4

Le revisioni e i test di codice spesso non catturano lo stesso tipo di bug e gli errori rilevati dalla revisione del codice sono probabilmente più facili da risolvere, poiché la posizione del bug è nota.

Non puoi sapere se il codice è privo di bug solo perché supera i test con nessuno registrato. "I test possono solo dimostrare la presenza di bug, non l'assenza." (Dijkstra?)

La revisione del codice mantiene lo stesso stile del codice ed è in grado di trovare posti in cui il codice non è buono, ma per il momento funziona. Risparmia i costi di manutenzione lungo la strada.

Inoltre, le richieste di una grande azienda e di una startup sono diverse. Le avvii normalmente falliscono e devono muoversi velocemente. Le grandi aziende ottengono molto più valore dal fare le cose nel modo giusto che nel modo più veloce possibile. Potresti preferire lavorare alle startup rispetto alle grandi aziende, ma non è una buona ragione per provare a imporre strategie di avvio in cui non si adattano.

    
risposta data 19.05.2011 - 22:56
fonte
2

Le tue revisioni del codice mostrano sempre solo le modifiche UI / UX? Direi che non è una revisione del codice, è un test di usabilità. Le revisioni del codice sono molto più utili per accrescere i problemi che gli utenti / tester / business / qualsiasi cosa non vedono mai, perché sono nel codice. L'indizio è proprio lì nel nome.

Ora sono d'accordo con te che c'è una linea da tracciare da qualche parte. Riesci a rivedere 4 iterazioni della stessa UI? O passate attraverso 4 iterazioni di questo, con ognuno potenzialmente rendendo il codice meno mantenibile? Direi di provare e misurare entrambi gli approcci e trovare il giusto equilibrio per la tua squadra, ma non abbandonare completamente le revisioni del codice.

Anche se una revisione del codice non presenta mai un problema, ha un vantaggio che si nota raramente fino a quando non è presente: ogni parte del codice viene esaminata da due sviluppatori, quindi due sviluppatori sanno che cos'è il cambiamento e che cosa era destinato a raggiungere. Quindi uno di loro si ammala il giorno successivo e si ferma per una settimana, l'altro può riprendere qualsiasi lavoro urgente che stavano facendo.

    
risposta data 19.05.2011 - 22:37
fonte
1

Tendo ad essere d'accordo sul fatto che la proprietà collettiva del codice e l'abbinamento con TDD e CI sono gli antidoti Agile alle sessioni di revisione del codice formale.

Anche sotto UP / Spiral non ero un grande fan di una fase di processo specifica essendo "code review" perché mi sembrava che il tipo di problemi che è probabile trovare si trovino più tardi di quanto potrebbero essere se la stessa energia fosse invece investita in alcune collaborazioni iniziali e alcune semplici automatizzazioni.

L'ho sentito perché c'era: - alcune revisioni condivise del design (solitamente espresse in UML almeno su una lavagna bianca) hanno comportato problemi di progettazione su larga scala o un uso scadente di API e così via, prima che venga scritto un sacco di codice. - FxCop, CheckStyle, FindBugs (o simili) in esecuzione con build di integrazione continua automatizzata per intercettare nomi, stili, visibilità, duplicazione del codice, ecc.

Siamo stati in grado di fallire prima e ottenere un feedback più veloce di quello che avrebbe prodotto un'abitudine di revisione del codice a valle.

Non sto dicendo che è una perdita di tempo sedersi e dare un'occhiata alla tua base di codice una volta ogni tanto, ma far sì che la revisione del codice sia un passo da fare per chiamare qualcosa fatto sembra che crei un sacco di lavori in corso che avrebbe potuto essere evitato con una migliore ispezione / collaborazione a monte.

    
risposta data 20.05.2011 - 00:26
fonte
0

Uno degli obiettivi principali che mi aspetto dalle revisioni del codice è aumentare la facilità di manutenzione del codice. Le revisioni del codice dovrebbero aiutare tutti a scrivere codice chiaro, ragionevolmente compatibile con i buoni standard di codifica. La maggior parte del codice ottiene molta manutenzione soprattutto nelle grandi aziende. Il payback per il codice gestibile dovrebbe iniziare prima che il codice venga rilasciato e continuare in seguito.

Le revisioni del codice di per sé non dovrebbero mai comportare modifiche al codice. Se la revisione del codice indica che sono necessarie modifiche, l'implementazione della modifica comporterà una modifica del codice.

Lo stato del codice può cambiare in seguito alla revisione, ma ciò dovrebbe essere in gran parte irrilevante per i problemi che hai menzionato.

Se la revisione del codice si traduce in più modifiche al codice, qualcosa viene rotto nel tuo processo di sviluppo. Dato il numero di tester che hai, potrebbe esserci un lancio sul muro e lasciare che i tester trovino la mentalità del problema.

Le cose dovrebbero andare ai tester in stato completato. La maggior parte dei test dovrebbe essere automatizzata, in modo che i tester non ripetano di nuovo la stessa roba di volta in volta.

UI / UX richiede un po 'di tempo di test, ma gli esperti di design / sviluppo sul front end dovrebbero ridurlo. Richiede anche una faccia di fronte allo schermo. Tuttavia, in tutte le applicazioni con cui ho lavorato, era una porzione relativamente piccola del codice.

Il costo per implementare le modifiche (comprese le correzioni di bug) generalmente sale per ogni fase che attraversa. Trovare bug in fase di sviluppo è generalmente più economico rispetto a ripararli dopo averli trovati.

    
risposta data 19.05.2011 - 22:45
fonte

Leggi altre domande sui tag