Ho sempre pensato che uno dei tratti distintivi di una buona guida sia qualcuno che fornisce la formazione aggiuntiva necessaria durante ogni ciclo di sviluppo. Per me, questo significa che non sto solo programmando me stesso, o rivedendo il codice, ma seduto con altri sviluppatori junior, ho programmato una coppia con loro per aiutarli a evitare il tipo di mine che ho scavalcato.
Principalmente, non ho illusioni sul fatto che il nostro obiettivo primario sia educativo, non lo è. Che tu sia un senior, un lead o uno sviluppatore junior, l'obiettivo non è la tua edificazione. L'obiettivo è sempre quello di fornire un codice di qualità al cliente. Preferibilmente in tempo, sul budget, facendo ciò che vogliono. Riconosco, tuttavia, che è impossibile per me portare a termine tutto il lavoro da solo, quindi è incombente su di me come un vantaggio per aiutare tutti ad aiutare il team ad avere successo. E questo significa riconoscere le opportunità di allenamento quando appaiono in natura.
Quindi, per la tua domanda sul fatto che le richieste pull siano il posto giusto per allenare i juniores, dovrei dire che non è insolito che durante questi incontri sorgano dei momenti di apprendimento. Ehi, dovrai affrontare il tuo primo conflitto di merge, passiamo oltre dopo la revisione. Oh guarda, non hai incluso nessun test unitario per il tuo DAO, rimanderemo la tua recensione fino a dopo che avremo avuto la possibilità di coprire quei nuovi metodi. Perché pensavi che sarebbe meglio usare le doppie primitive in questo calcolo finanziario rispetto a BigDecimals? Sì, non è molto raro.
Quindi, mentre direi che può certamente succedere, ma chiaramente non è l'obiettivo principale di una richiesta di pull. Né ritengo ci sia un'aspettativa che il codice in una richiesta pull sia pronto per la produzione. Spesso non lo è.
Se utilizzi feature e release branch in una strategia di branching in stile gitflow, le tue richieste di pull diventano qualcosa di più dei candidati al rilascio. Non pronto per la produzione, ma qualcosa di più approssimativo. Conoscendo il codice compilato (a destra) e disponi di un numero sufficiente di test per presentare una dichiarazione decente in grado di soddisfare gli obiettivi della storia utente. E dal momento che hai già eseguito diversi test di integrazione nel tuo ambiente di sviluppo, hai una grande demo pronta per l'uso se ti viene chiesto di dimostrare le tue modifiche, cosa che farai durante la revisione del tuo PR.
In definitiva, ritengo che dovremmo fornire assistenza durante le revisioni del PR, ma che l'assistenza non riguarda la codifica generale. Invece, è associato alla preparazione del codice proposto per l'inclusione con una base operativa di codice di qualità di produzione. Il PR è un'opportunità per gli sviluppatori di dimostrare di avere una giustificazione e una solida conoscenza di ogni cambiamento che hanno incluso nel PR. E anche allora, anche dopo averli soppesati con test unitari, demo e un sacco di domande, non c'è ancora alcuna aspettativa che le modifiche proposte siano pronte per la produzione.
Il codice è vicino dopo tutto questo. Ma poi lasciamo che il QA lo torturi.