Tu e la maggior parte dei rispondenti affrontiamo questo problema come un problema di comunicazione tra due colleghi, ma non credo proprio che lo sia. Quello che descrivi suona più come un processo di revisione del codice orribilmente rotto di ogni altra cosa.
Innanzitutto, dici che il tuo collega è al secondo posto e si prevede che rivedrà il tuo codice. È solo sbagliato. Per definizione, le revisioni dei codici peer non sono gerarchiche e certamente non riguardano solo la ricerca di difetti. Possono anche fornire esperienze di apprendimento (per tutti i soggetti coinvolti), un'opportunità per l'interazione sociale e dimostrare uno strumento prezioso per costruire la proprietà del codice collettivo. Dovresti anche rivedere il suo codice di volta in volta, imparare da lui e correggerlo quando ha torto (nessuno lo capisce sempre).
Inoltre, dici che il tuo collega apporta subito delle modifiche. Anche questo è sbagliato, ma ovviamente lo sai già; non avresti fatto questa domanda se il suo approccio gung ho non fosse un problema. Tuttavia, penso che tu stia cercando una soluzione nel posto sbagliato. Ad essere sincero, il tuo collega mi ricorda un po 'di ... me, e ciò che ha funzionato per me in situazioni simili è stato un processo di revisione ben definito e solido e una serie di strumenti fantastici. Non vuoi davvero impedire al tuo collega di rivedere il tuo codice e chiedergli di fermarsi e parlare con te prima che ogni piccola modifica non funzionerà davvero. Potrebbe, per un po ', ma presto raggiungerà un punto in cui diventerà troppo fastidioso e tornerai da dove hai iniziato, o peggio: smetterà di rivedere il tuo codice.
Una chiave per una risoluzione qui potrebbe essere uno strumento di revisione del codice peer. Di solito evito i consigli sui prodotti, ma per le revisioni del codice Atlassian's Crucibleè davvero un salvavita. Quello che fa può sembrare molto semplice, e lo è, ma ciò non significa che non sia incredibilmente fantastico. Si collega al tuo repository e ti dà l'opportunità di rivedere singoli changeset, file o gruppi di file. Non puoi cambiare alcun codice, ma commenti tutto ciò che non ti sembra giusto. E se devi assolutamente cambiare il codice di qualcun altro, puoi semplicemente lasciare un commento con il changeset che spiega le tue modifiche. Il video introduttivo alla pagina del prodotto di Crucible vale la pena guardare se vuoi maggiori dettagli. Il prezzo di Crucible non è per tutti, ma ci sono numerosi strumenti di peer review disponibili gratuitamente. Uno con cui ho lavorato e apprezzato è Review Board e sono sicuro che troverai molti altri con una semplice ricerca su Google.
Qualunque strumento tu scelga, cambierà completamente il tuo processo. Non c'è bisogno di fermarsi, scendere dalla sedia, interrompere l'altra persona e discutere i cambiamenti; tutto quello che devi fare è impostare un po 'di tempo libero ogni settimana ed esaminare i commenti (una volta alla settimana è solo un suggerimento. Conosci il tuo programma e la routine quotidiana meglio di me). Ancora più importante, le recensioni principali sono archiviate in un database da qualche parte e puoi recuperarle in qualsiasi momento. Non sono discussioni effimere intorno al dispositivo di raffreddamento dell'acqua. Il mio caso d'uso preferito per le vecchie recensioni è quando introduco un nuovo membro del team nella nostra base di codice. È sempre bello quando posso guidare qualcuno di nuovo attraverso la base di codice sottolineando dove eravamo esattamente bloccati, dove avevamo opinioni diverse, ecc.
Andando avanti, dici che non trovi sempre leggibile il codice di questo collega. Questo mi fa sapere che non hai un insieme comune di standard di codifica, e questa è una cosa negativa. Ancora una volta potresti affrontarlo come un problema di persone o puoi affrontarlo come un problema di processo, e di nuovo suggerirei fortemente quest'ultimo. Riunisci il tuo team e adotta al più presto uno stile di codifica e un insieme di standard comuni. Non importa se hai scelto una serie di standard comuni nel tuo ecosistema di sviluppo o se ne hai inventato uno tuo. Ciò che conta davvero è che i tuoi standard siano coerenti e che ti attieni a loro. Moltissimi strumenti là fuori possono aiutarti, ma questa è una discussione completamente diversa. Solo per iniziare, una cosa molto semplice da fare è fare in modo che un hook pre-commit esegua una sorta di formattatore di stile sul tuo codice. Puoi continuare a scrivere il tuo codice come preferisci e lasciare che lo strumento lo "aggiusti" automagicamente prima che gli altri lo vedano.
Infine, in un commento menzionate che la direzione non crede che i singoli rami di sviluppo siano necessari. Bene, c'è un motivo per cui li chiamiamo "rami di sviluppo" e non "rami di gestione". Mi fermerò qui perché non c'è motivo per cui il rant che si sta formando nella mia testa per uscire.
Detto questo, sappi che non dubito che il tuo collega sia (un po ') in colpa qui. Non è questo il mio punto, il mio punto è che anche l'intero processo di sviluppo è in errore, ed è qualcosa che è più facile da risolvere. Armati con gli strumenti adeguati, esplora i numerosi processi formali e informali e scegli quelli che si adattano al tuo team. Presto raggiungerai un punto in cui ti renderai conto che la maggior parte dei tuoi "problemi di persone" non esistono più. E per favore non ascoltare nessuno (incluso te stesso) che fa nascere la scusa "siamo una piccola squadra, non abbiamo bisogno di tutto questo". Un team di sviluppatori competenti può impostare gli strumenti necessari in meno di una settimana, automatizzare tutto ciò che può essere automatizzato e non tornare mai più indietro.
PS. "Proprietà del codice" è un termine nebuloso, costantemente dibattuto, e significa cose diverse per persone diverse. Puoi trovare una brillante raccolta della maggior parte delle opinioni diverse (e talvolta antitetiche) su C2 .