Come distribuire un programmatore junior

3

Ho appena assunto un programmatore junior e sarà il secondo vero programmatore accanto a me.

Il nostro software è strutturato in git con il flusso di lavoro gitflow. Normalmente sviluppo e spingo direttamente sul ramo di sviluppo.

Quando viene eseguito il push di un commit, viene prelevato direttamente da TeamCity e Octopus e distribuito sul server di test sotto il dominio dev.domain.com.

In questo modo i membri del QA possono testare i miei cambiamenti.

Ora il ragazzo junior non avrà questo lusso, avrà bisogno di fare PR per entrare nel ramo dello sviluppo. Ha ancora bisogno di essere in grado di spingere il lavoro in un ambiente di test per il controllo della qualità.

Finora ho trovato 2 soluzioni:

1: Crea un singolo ramo dove si impegna, verrà automaticamente distribuito su un sito dev2.domain.com. Il problema è che i PR sono difficili da fare poiché continuerà a sviluppare un nuovo codice in questo ramo.

2: per ogni nuova funzione, uno script crea automaticamente una configurazione di TeamCity + Octopus, si distribuisce su un sito feature.domain.com e lo abbatte nuovamente quando la funzione viene unita. Il vantaggio è che è molto facile da PR perché le funzionalità sono contenute, il lato negativo è che è necessario configurare l'ambiente di test e ci vuole tempo + risorse del server.

In che modo gli altri team gestiscono questo flusso di lavoro?

Modifica: sembra che il punto non si stia verificando. Il mio codice passa attraverso gli stessi identici passaggi di chiunque altro codice. Ma la domanda era: come strutturare l'ambiente di test? Se creo rami di funzionalità, come possono accedere al mio manager e al QA? Devo configurarli manualmente in TeamCity e Octopus? Questo è il motivo per cui continuo a svilupparmi, viene implementato in questo modo nel nostro ambiente di test.

    
posta YesMan85 20.06.2018 - 06:04
fonte

3 risposte

24

I normally develop and push straight on the development branch.

Con tutto il rispetto, questo è un problema. Nessuno dovrebbe spingere direttamente sullo sviluppo, certamente non se stai usando gitflow - tutto dovrebbe andare su un ramo di funzionalità e quindi essere unito allo sviluppo una volta che la funzionalità è completa. Che cosa fai se sei a metà strada nello sviluppo di una funzionalità e le priorità cambiano in modo che una funzione diversa debba essere completata per prima?

Inoltre, ora hai un altro sviluppatore che lavora al progetto, dovresti ottenere anche il tuo codice revisionato e non puoi farlo se stai andando direttamente a sviluppare.

How do other teams manage this workflow?

Ad un certo punto lungo la linea, devi eseguire lo sviluppo di test (o un altro ramo che contenga le tue release candidate), altrimenti non vedrai alcuna interazione tra le tue funzionalità.

Se disponi anche di risorse per eseguire alcuni controlli sui singoli rami prima che vengano uniti per lo sviluppo, è grandioso farlo, ma in genere dovrebbero essere verifiche rapide sulle modifiche per tale funzione piuttosto che test di tipo completo di regressione.

    
risposta data 20.06.2018 - 07:07
fonte
6

Per aggiungere all'eccellente risposta di @ Philip, penso che anche tu debba guardare questo da un punto di vista umano.

Se stratificherai le tue pratiche lavorative, denigrerai le abilità del tuo Junior Developer. Certo è bello avere porte di qualità; ma dovrebbero applicarsi allo stesso modo a tutti se si desidera promuovere il lavoro di squadra e l'auto organizzazione.

La mia sensazione è che si tratti più di te che ti aggrappi al codice piuttosto che impostare buone pratiche. Chiediti, se tu avessi assunto uno sviluppatore con più esperienza di te stesso, saresti felice di farli esaminare e approvare tutto il tuo codice?

    
risposta data 21.06.2018 - 10:27
fonte
1

Come già sottolineato @Philip, idealmente non dovresti aver lavorato direttamente sul ramo di sviluppo.

Questa risposta mi riassume bene il motivo per cui utilizzare i rami di funzionalità, anche su una piccola o una squadra di persone, è una buona idea.

Suggerirei di creare spazi di sviluppo personali per te e il nuovo sviluppatore (e anche per ogni futuro sviluppatore, ovviamente), dove puoi lavorare sulla tua funzione in un ramo separato, una volta terminato, imposta una richiesta pull (che è sia un bel punto di ingresso per i test automatici, sia anche un'opportunità per mostrare il tuo lavoro allo sviluppo junior / dare un'occhiata al suo lavoro) e una volta superati i test, elaborare il PR e mettere la funzionalità su il ramo di sviluppo in modo che il team addetto al controllo qualità possa verificarlo e fare le sue cose.

Questi spazi di sviluppo personale possono essere localmente, utilizzando la finestra mobile / vagabondo, un server separato, ... È una questione di preferenza.

Il vantaggio di questo approccio è il futuro del tuo flusso di lavoro. Stai mettendo in atto un sistema in cui la quantità di sviluppatori che lavorano su un progetto non cambia il flusso di lavoro. Tutti hanno il proprio ambiente di sviluppo, lavorano su una funzione e creano un PR che alla fine arriverà al ramo di sviluppo per essere elaborato dal QA.

In questo modo il team addetto al controllo qualità ha ancora solo 1 punto da considerare, riducendo la complessità da parte loro (poiché non è necessario tenere traccia degli URL separati per funzioni / devs separati).

    
risposta data 25.06.2018 - 09:14
fonte

Leggi altre domande sui tag