Proverò a darti alcuni suggerimenti supportati dalla mia esperienza personale.
Uno dei miei compagni di squadra, sebbene esperto, non capisce davvero SVN. Naturalmente, aree vuote sulla sua mappa mentale raffiguranti oceani di SVN gli fanno adottare schemi di utilizzo piuttosto strani.
Ad esempio, aveva dichiarato una politica di "1 commit SVN al giorno per sviluppatore" perché altrimenti "il server avrebbe presto esaurito lo spazio su disco". Quando gli ho spiegato che i commit SVN sono delta, non copie complete, ha risposto con dubbio e anche oggi non sono del tutto sicuro se capisca cosa significhi.
Anche se lo spazio su disco fosse un problema, potresti sempre eseguire il commit di molti file contemporaneamente, quindi penso che ciò che suggerisce sia la soluzione sbagliata. Inoltre, è possibile sprecare molto spazio controllando file binari di grandi dimensioni perché SVN non memorizza delta per file binari. Anche un check-in al giorno è negativo perché ti costringe a commettere modifiche che non si uniscono, ad esempio nel caso in cui correggi più di un bug al giorno.
La soluzione che abbiamo adottato nella nostra azienda è che esiste un filtro che rifiuta qualsiasi commit contenente file binari. Possiamo forzare il commit utilizzando una parola chiave speciale nel commento del check-in (dobbiamo mostrare a SVN che sappiamo cosa stiamo facendo). Una volta ogni due anni un project manager archivia i vecchi rami e li rimuove dal repository. Con questa strategia non abbiamo problemi di spazio che conosco (il nostro repository supporta diversi progetti e ha oltre 100000 revisioni).
Riassumendo, potresti dirgli che sei d'accordo con lui sul fatto che lo spazio su disco è un problema importante ma, d'altro canto, fai notare
- l'importanza dei check-in relativi alle funzionalità anziché di un check-in monolitico giornaliero;
- il fatto che controllando un grosso file binario al giorno, si potrebbe comunque riempire il disco.
Quindi potresti suggerire di avere un incontro (possibilmente con altri sviluppatori o anche amministratori di sistema) per discutere le strategie per tenere sotto controllo l'utilizzo dello spazio su disco (ad es. Filtri di file binari, backup regolari e pulizia di vecchi rami non utilizzati).
Abbiamo anche discusso a fondo se includere la configurazione del progetto. Eclipse in SVN. Il mio compagno di squadra ha insistito che dovremmo, sebbene abbia causato numerosi conflitti inutili. Ero contrario a mantenere i file di configurazione dei singoli sviluppatori in SVN. Alla fine, si è scoperto che il mio compagno di squadra aveva l'abitudine di ricontrollare l'intero albero dei sorgenti dopo ogni commit per assicurarsi che "il codice impegnato nel repository funzioni". Questo era il motivo per cui era così irremovibile nel mantenere la configurazione del progetto in SVN - quindi sarebbe stato facile reimportare il progetto. Quando ho spiegato che commit sincronizza la copia di lavoro su byte per byte remoto, il che rende superfluo il checkout, il mio compagno di squadra ha risposto di nuovo con dubbi e alla fine ha evitato che l'intero problema fosse insignificante.
A mio avviso, il nostro team perde tempo risolvendo i conflitti SVN nei file di configurazione del progetto che contengono solo impostazioni specifiche per gli sviluppatori che non devono essere condivise con SCM. Tutto questo casino perché qualcuno ha adattato il processo a presupposti errati.
Usi un server di build? Abbiamo un server di build che verifica il progetto completo e lo compila ogni notte. La mattina successiva i tester hanno un programma di installazione pronto per il test del prodotto (se la build principale è stata eseguita correttamente) e noi (gli sviluppatori) abbiamo un report di build con tutti gli avvisi (e gli errori, nel caso ce ne siano). Naturalmente, è necessario impostare il backup dei file di configurazione standard per il server di build e il check-in. Ogni sviluppatore può quindi controllare fuori insieme con il resto del progetto, ma non è consentito il check-in eventuali modifiche locali.
In questo scenario affronti la sua necessità di poter controllare il progetto completo e costruirlo in qualsiasi momento. Eviti anche di perdere tempo a unire le modifiche che non avrebbero dovuto essere verificate in primo luogo perché non fanno parte del prodotto: il prodotto è la build principale e deve essere tenuto pulito. Se qualcuno interrompe la build principale (ad es. Controllando il proprio file .project) è possibile annullare le modifiche o forzare lo sviluppatore a risolvere il problema.
Forse se risolve nuovamente il problema, puoi di nuovo suggerire di tenere un incontro (possibilmente con altri sviluppatori) e trovare insieme una strategia comune.
Come posso convincere un compagno di squadra, che si vede come senior, a comprendere meglio le basi di SVN?
Penso che la migliore strategia sarebbe quella di evitare di portare il conflitto a livello personale e piuttosto di discutere delle questioni a portata di mano e delle possibili soluzioni. Se hai l'impressione che stia cercando un confronto personale, ecco alcuni suggerimenti (di nuovo, per esperienza personale):
- Come sono le dinamiche del tuo team? I tuoi altri colleghi hanno un'esperienza simile con questo compagno di squadra? Ci sono molti piccoli suggerimenti non troppo espliciti che una squadra può dare a uno dei suoi membri per scoraggiare determinati comportamenti (piccole battute o osservazioni) e incoraggiare un confronto costruttivo (proporre una riunione o sollevare un argomento in modo informale durante una pausa caffè ). A volte una buona squadra può isolare rapidamente un elemento di disturbo e riportare le cose alla normalità.
- Quanto è buona la tua gestione del personale? Abbiamo avuto un caso di conflitto nella nostra azienda e il capo del personale ha dovuto intervenire per chiarire la situazione. Non è stato bello, ma a volte l'atmosfera di lavoro si deteriora così tanto che non migliorerà da sola. Spero che questo non sia il tuo caso (non ho l'impressione che sia arrivato così lontano) ma è sempre bene sapere se hai una buona amministrazione del personale o se devi risolvere i conflitti da solo.
Perché sto scrivendo questo? Dici che vuoi "convincere un compagno di squadra, che si vede come senior, a comprendere meglio le basi di SVN". Per me sembra che il conflitto potrebbe diventare troppo personale. Alcuni psicologi sostengono che il 70% della nostra comunicazione è a livello emotivo, se questo livello non funziona, le persone smettono di parlare dei fatti perché sono troppo occupate a gestire le emozioni.
Quindi, oltre a spiegare i tuoi punti, potresti anche provare a fare qualcosa per migliorare la comunicazione. Invitare per un caffè o fare una pausa pranzo insieme, avere una breve conversazione su un argomento che non è legato al lavoro, ecc., Può migliorare la comunicazione e riportare l'attenzione del collega sui fatti importanti che vuoi che capisca. Se accetta questo tipo di comunicazione, forse i conflitti che hai avuto finora erano legati al fatto che non ti conosci bene e ci sono stati alcuni piccoli equivoci, ma probabilmente è aperto a costruire una collaborazione costruttiva. Se rifiuta, potrebbe esserci un'ostilità più profonda dalla sua parte.
In questo caso, penso che dovresti aspettare che i tuoi ruoli diventino più chiari. Se il tuo compagno di squadra non ha ufficialmente un rango più alto del tuo, non ha senso irritare i tuoi tentativi di migliorare le cose. Con il tempo dovrà accettarlo o prendersi in giro da solo se continua a provare a dimostrare di conoscere meglio. Se lui ha un rango più elevato, si dovrebbe trovare un modo per fargli capire che questo non è in discussione: le tue osservazioni sono volte a migliorare la produttività e non a minare la sua posizione, questo deve essere chiaro al 100%. Quando i ruoli sono stati chiariti, se non riesce ancora ad accettare suggerimenti o critiche costruttive, allora deve davvero avere qualche problema con l'autostima o qualcosa del genere.
Quindi, se tutte le strategie di cui sopra falliscono e continui a sentirti (molto) frustrato, temo che l'unica cosa ragionevole da fare sarà imballare le tue cose e cercare un posto migliore. Ho fatto questa esperienza tre anni fa e ho trovato un'azienda molto migliore di cui sono molto soddisfatto ora. Forse questo non è il tuo caso (spero non ovviamente) ma cerca di capire anche questo punto.
Solo i miei 2 centesimi.