Dopo alcuni seri problemi di qualità nell'ultimo anno, la mia azienda ha recentemente introdotto revisioni del codice. Il processo di revisione del codice è stato rapidamente introdotto, senza linee guida o alcun tipo di elenco di controllo.
Un altro sviluppatore e io abbiamo scelto di rivedere tutte le modifiche apportate ai sistemi, prima che vengano unite nel trunk.
Siamo stati anche scelti come "Technical Lead". Ciò significa che siamo responsabili della qualità del codice, ma non abbiamo alcuna autorità per implementare cambiamenti nel processo, riassegnare gli sviluppatori o trattenere i progetti.
Tecnicamente possiamo negare l'unione, restituendola allo sviluppo. In realtà questo finisce quasi sempre con il nostro capo che richiede che venga spedito in tempo.
Il nostro manager è un MBA che si occupa principalmente di creare un programma di progetti imminenti. Mentre ci sta provando, non ha quasi idea di cosa faccia il nostro software da un punto di vista aziendale, e sta lottando per comprendere anche le richieste più elementari dei clienti senza spiegazioni da parte di uno sviluppatore.
Attualmente lo sviluppo avviene nelle filiali di sviluppo di SVN, dopo che lo sviluppatore pensa di essere pronto, riassegna il biglietto nel nostro sistema di biglietteria al nostro responsabile. Il manager quindi lo assegna a noi.
Le revisioni del codice hanno portato ad alcune tensioni all'interno del nostro team. Soprattutto alcuni dei membri più anziani mettono in dubbio i cambiamenti (vale a dire "L'abbiamo sempre fatto così" o "Perché il metodo dovrebbe avere un nome ragionevole, so cosa fa?").
Dopo le prime settimane la mia collega ha iniziato a lasciare che le cose scivolassero, per non creare problemi con i colleghi (mi ha detto lei stessa, che dopo che un cliente ha presentato una segnalazione di bug, sapeva di essere a conoscenza del bug, ma temeva che il lo sviluppatore sarebbe arrabbiato con lei per averlo sottolineato).
D'altra parte, ora sono noto per essere un asino per evidenziare problemi con il codice impegnato.
Non penso che i miei standard siano troppo alti.
La mia lista di controllo al momento è:
- Il codice verrà compilato.
- Esiste almeno un modo in cui il codice funzionerà.
- Il codice funzionerà con la maggior parte dei casi normali.
- Il codice funzionerà con la maggior parte dei casi limite.
- Il codice genererà una ragionevole eccezione se i dati inseriti non sono validi.
Ma accetto pienamente la responsabilità del modo in cui do feedback. Sto già dando punti concreti che spiegano perché qualcosa dovrebbe essere cambiato, a volte anche solo chiedendo perché qualcosa è stato implementato in un modo specifico. Quando penso che sia male, faccio notare che lo avrei sviluppato in un altro modo.
Quello che mi manca è la capacità di trovare qualcosa da indicare come "buono". Ho letto che si dovrebbe provare a mettere in cattive notizie cattive in buone notizie.
Ma faccio fatica a trovare qualcosa di buono. "Ehi, questa volta hai effettivamente commesso tutto quello che hai fatto" è più condiscendente che gentile o utile.
Revisione del codice di esempio
Ehi, Joe,
Ho alcune domande sulle tue modifiche nella classe Library \ ACME \ ExtractOrderMail.
Non ho capito perché hai contrassegnato "TempFilesToDelete" come statico? Al momento una seconda chiamata a "GetMails" genererebbe un'eccezione, perché si aggiungono i file ma non li si rimuovono mai, dopo averli eliminati. So che la funzione viene chiamata una sola volta per corsa, ma in futuro potrebbe cambiare. Potresti semplicemente renderlo una variabile di istanza, quindi potremmo avere più oggetti in parallelo.
... (Alcuni altri punti che non funzionano)
Punti minori:
- Perché "GetErrorMailBody" accetta un'eccezione come parametro? Ho dimenticato qualcosa? Non stai lanciando l'eccezione, basta passarla e chiamare "ToString". Perché?
- SaveAndSend Non è un buon nome per il metodo. Questo metodo invia messaggi di errore se l'elaborazione di un messaggio non è andata a buon fine. Potresti rinominarlo in "SendErrorMail" o qualcosa di simile?
- Per favore, non limitarti a commentare il vecchio codice, eliminalo completamente. Lo abbiamo ancora in sovversione.