Deve essere una combinazione sensata di tutte le risposte finora. Alla fine, quando parli di un gruppo di persone intelligenti (sviluppatori), devi dare loro i motivi per cui il comportamento è importante e dare loro un controllo sufficiente su in che modo viene implementato quel comportamento che sono investiti nel farlo bene. I mandati dall'alto sono generalmente sciolti con persone intelligenti, perché se non hanno concordato che il problema è un problema, è probabile che passino più tempo a lavorare attorno al mandato che seguire la regola.
Ecco alcune delle mie tattiche:
Cambiamenti di commit:
In primo luogo, il team deve essere d'accordo su quando impegnarsi e su cosa impegnarsi. Assolutamente essenziale è una configurazione di costruzione che abbia senso, in modo che le persone non stiano trattenendo solo perché non sanno dove mettere qualcosa. E un consenso su quando / quanto spesso fare il check-in "non rompere la build" è una ovvia buona regola, ma come viene controllato e chi viene informato a riguardo? Un'altra linea di base è "non è fatta se non è stata verificata".
La maggior parte degli sviluppatori che conosco sono più che felici di verificare il codice SE:
- Il check-in è facile
- Il processo di sincronizzazione è semplice (tenendo conto delle modifiche apportate da altri sviluppatori)
- Vedere le modifiche e spostarti tra le versioni è facile
Una cosa che ho notato di recente è che i check-in sono diventati più frequenti e meno dolorosi quando siamo passati a un nuovo strumento CM. Il nostro team è stato pioniere del Rational Team Concert dopo aver utilizzato Clearcase. Non intendo pubblicizzare strumenti, ma la nuova (per me) ondata di controlli di streaming con un sacco di fusioni piccole e veloci rende molto più allettante il check-in anticipato e spesso.
Lasciando che gli sviluppatori siano incaricati di eliminare il dolore da CM generalmente aumenta la quantità di check-in che accade.
Aderire all'architettura - Non scrivere i problemi del modello nelle viste e nei controllori
Lo metto nel gruppo generale di "fare l'architettura correttamente". Sono d'accordo con chi ha detto le recensioni dei colleghi - la pressione dei colleghi è grande per questo. Uno dei modi in cui in genere vedo le persone entrare nell'ovile per le migliori pratiche in quest'area è quando i loro coetanei chiedono loro perché l'hanno fatto nell'altro modo (il modo non proprio corretto). Generalmente la domanda "perché" spingerà le persone a intraprendere il cammino per rendersi conto di loro perché dovrebbero averlo fatto in modo diverso. Quando le persone hanno una ragione ben compresa per la migliore pratica, è molto più facile aderirvi.
Inoltre, se ci sono alcune formalità che collegano una persona a una decisione, allora può essere più facile assegnare bug in quella zona ... quindi se una persona è responsabile della correzione dei bug in un'area di progettazione difettosa, la necessità di ottenere qualcosa giusto prima che possano passare a qualcosa di nuovo ed eccitante può essere un grande motivatore.
Evita codifica hard
Vorrei iniziare con standard di codifica chiari e integrare una revisione standard di codifica nelle revisioni tra pari. L'hard coding è una di quelle cose che possono facilmente essere una casella di controllo in un programma di revisione tra pari.
Ho paura che questo genere di cose sia l'unica cosa in cui l'ho visto diventare il ruolo della squadra che ha il compito di rafforzare la regola. Nei team che ho corso, generalmente non lasceremo che qualcuno si muova fino a quando non avranno risolto i commenti da una peer review del loro codice. E "nessun hard coding" è un frequente commento di revisione tra pari.
In generale
Con quasi tutte le migliori pratiche, penso che devi scegliere le tue battaglie. Nessuna squadra diventerà assolutamente perfetta. Ma puoi tenere d'occhio i tuoi principali punti dolenti e iniziare ad affrontarli in gruppi. Penso che diventi il ruolo del leader per sapere veramente quale sia il punto dolente per la squadra rispetto a un fastidioso capriccio di un particolare individuo.
Se la tua squadra sta perdendo una particolare pratica, penso che la prima domanda debba essere "quanto danno sta causando questo?" se la risposta è "minima", probabilmente non ne vale la pena. Alcune best practice sono più rilevanti per specifici tipi di sistemi - mentre sono buoni nel complesso, potrebbero non valere la pena di combattere per sistemi in cui la pratica non è un evento frequente o una parte importante del sistema.
Se la risposta a "quanto è strano?" è "ALOT !!!", quindi puoi iniziare a costruire un caso per mostrare alla squadra che tutto questo dolore e questa sofferenza potrebbero essere rimossi fissando questo punto debole nelle migliori pratiche. La maggior parte delle persone è felice di evitare dolore e sofferenza e cambia il dialogo da "fai questo perché te l'ho detto", a "abbiamo deciso di farlo perché è meglio".