Domanda:
Troppe richieste pull nel backlog
Frustrated
2019-11-21 18:01:11 UTC
view on stackexchange narkive permalink

Lavoro in una piccola azienda e il mio manager è coinvolto nella gestione di 2 progetti e nella codifica. Sono sempre più frustrato perché c'è una coda di 50 richieste pull in attesa di essere esaminate o unite da me e da un altro sviluppatore. Esamino le PR del mio collega per semplificare le cose per il mio manager. Non fa della revisione / fusione delle PR la sua priorità e una o due volte alla settimana farà alcune PR, ma non tiene il passo con lo sviluppo attuale e l'aumento del backlog.

È molto frustrante avere tutto il lavoro mio e del mio collega è rimasto nell'elenco delle PR per diversi mesi.

Mi sono offerto di aiutare a unire le richieste pull, ma non vuole che lo faccia. Tuttavia, non ha tempo o trova il tempo per tenere il passo con l'elenco. Hai qualche suggerimento?

I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (https://chat.stackexchange.com/rooms/101355/discussion-on-question-by-frustrated-too-many-pull-requests-in-backlog).
Follow-up: dopo aver discusso con lui, in cui ha detto che vuole rivedere e testare tutto il codice prima di approvare l'unione, abbiamo istituito una riunione settimanale di revisione del codice in cui esaminiamo il codice della settimana precedente e parte del backlog e poi facciamole modifiche appropriate e riesaminare la prossima settimana.Si spera che questo aiuti almeno in parte ..
Nove risposte:
gnasher729
2019-11-21 18:56:19 UTC
view on stackexchange narkive permalink

Per gli sviluppatori non software: in qualità di sviluppatore di software, in genere scrivi codice che esiste solo sulla tua macchina e poi, quando pensi che vada bene, invii una "richiesta pull" e qualcuno lo esamina e per apportare modifiche o combinarlo nel prodotto della tua azienda. Finché la "richiesta pull" non viene gestita, è come se il lavoro non fosse mai stato svolto. Inoltre, altri sviluppatori non possono costruire su quel lavoro. E il controllo qualità è bloccato perché non hanno la possibilità di testare il tuo lavoro.

Le richieste pull devono essere gestite lo stesso o il giorno successivo, tranne in circostanze eccezionali. 50 richieste pull in attesa sono assolutamente ridicole. Se il tuo manager non ha tempo, deve occuparsene o occuparsi del lavoro con te e il tuo collega, oppure andarsene e l'azienda trova un sostituto per lui. Quello che succede in questo momento è semplicemente inaccettabile.

Ti suggerisco di non offrirti di aiutarlo, ma di offrire che queste recensioni siano il tuo lavoro e il lavoro del tuo collega. Se questo non viene accettato, sali di un livello e lamentati di lui.

Ogni volta che mi offro di fare le fusioni, dice "lo esamineremo domani" e poi fa alcune PR ma poiché sviluppiamo sempre più cose, il backload non si riduce.
@Frustrated Ecco perché ho detto che non dovresti semplicemente offrire il tuo aiuto, ma renderlo un lavoro fisso tuo e del tuo collega.
Concordato.Questa è, francamente, grave negligenza.
Se dice "lo vedremo domani", rendilo concreto, suggerisci un orario "Che ne dici delle 10 del mattino?"
Un altro suggerimento è farli fare regolarmente durante un periodo di tempo prestabilito.Per esempio.una volta alla settimana, 2-3 volte alla settimana, una volta al giorno, a seconda della quantità di richieste pull nel tempo, delle dimensioni del progetto, delle dimensioni del team, ecc.
Dragan Juric
2019-11-22 01:35:27 UTC
view on stackexchange narkive permalink

Potrebbe essere utile fare un passo indietro rispetto al problema immediato e considerare la natura "meta" di questo. Le richieste pull sono solo un sintomo.

Quello che hai è un manager che vuole mantenere tutto il potere (anche piccolo come rivedere / approvazione delle modifiche al codice), non desidera delegare, ma non può o non vuole svolgere il lavoro da solo.

Ciò può accadere in qualsiasi aspetto del lavoro, sia si tratta di richieste pull, progettazione del software, discussione sulle funzionalità, decisione e approvazione dell'uso di componenti di terze parti ...

E può anche accadere in società non di software, in qualsiasi area di attività.

Quindi, l'essenza del problema è: il manager dovrebbe o fare il lavoro che non ha delegato, farlo in tempo e in modo appropriato - o autorizzare qualcun altro a farlo. Ecco fatto.

Questa è la vera risposta.Tutte le altre risposte che ho letto sono buone, ma non affrontano il problema di fondo che fa questo.Se non fosse già stata scritta, avrei scritto una risposta simile.Il problema del manager risiede anche nel voler ancora fare il lavoro di sviluppo invece del lavoro manageriale.In tal caso, il manager deve scendere a una posizione di sviluppo e lasciare che qualcun altro sia il manager.
Sì, non aiuta "guardare domani i PR aperti" come un commento ha affermato che il manager sta dicendo a OP.Il processo è interrotto e deve essere modificato.Devono discutere il processo.(Significa che non è fattibile per il manager gestire tutte le PR e deve delegare)
"Quindi, l'essenza del problema è: il manager dovrebbe o fare il lavoro che non ha delegato, farlo in tempo e correttamente - o autorizzare qualcun altro a farlo. Questo è tutto."la domanda è cosa dovresti fare se non lo fanno?dovresti semplicemente conviverci?dovresti semplicemente smettere?dovresti parlarne con il capo del tuo capo (se il tuo capo ha davvero un capo)
@PeterGreen Molto spesso, questo si riduce alla domanda "Cosa fare se l'azienda per cui lavoro fa schifo".E la risposta più comune è "trova un altro lavoro".In un numero limitato di casi puoi far vedere la luce alla gestione, ma è raro.
Questa risposta potrebbe essere corretta, ma non è molto pratica in quanto non fornisce suggerimenti per OP su come affrontare questo problema.Potresti includere alcuni suggerimenti su come l'OP può convincere il capo a fare una delle cose evidenziate nel tuo ultimo paragrafo o su un'altra alternativa (ad esempio, trovare un altro lavoro)?
Sourav Ghosh
2019-11-21 18:05:52 UTC
view on stackexchange narkive permalink

Il problema è più grande della disponibilità / volontà del tuo manager di esaminare e accettare / rifiutare la richiesta di pull - se una richiesta di pull può essere in coda da 6 mesi a 1 anno, ciò indica che il lavoro non è realmente rilevante / utile e le priorità sono sbagliate.

Nessun lavoro, abbastanza importante e abbastanza breve da essere contenuto in una pull request, avrà una scadenza di un anno o più. Qualcuno deve avere il lavoro adeguatamente pianificato e prioritario.

Detto questo, assicurati

  • di affidare correttamente l'onere al revisore. Chiedi loro di informarli tramite e-mail su un PR che hai fatto e di ricontattarli con promemoria per almeno 2-3 volte.
  • Cerchi di identificare una persona alternativa per esaminare la modifica.
Diciamo che non è così urgente, ma si tratta solo di miglioramenti delle funzionalità, perché lo sto facendo?Questo è quello che mi dicono di fare.
Non c'è nessun altro per rivedere il lavoro.Rivedo il mio collega ma non lo aiuta ad accelerare.Quasi ogni giorno gli chiedo di sedersi e rivedere le richieste di pull, ma devo ricordarglielo più volte e forse passerà 6-7 a settimana.
@Frustrated No, non farlo.I promemoria sono promemoria, lascia che il manager affronti le conseguenze del codice non pubblicato nelle PR non presidiate.Ricordare loro una o due volte va bene, ma non farlo diventare il tuo lavoro.
Player One
2019-11-21 18:54:37 UTC
view on stackexchange narkive permalink

Organizza una discussione aperta e onesta tra il tuo team e il tuo manager. Parla delle preoccupazioni aziendali: le funzionalità che sviluppi non vengono presentate ai clienti.

Questo è un costo reale: l'azienda sta pagando per queste funzionalità, ma i clienti le ricevono solo mesi dopo che sono state completate. Ciò costa all'azienda sia denaro che quote di mercato, poiché i loro (buoni) concorrenti non commetteranno lo stesso errore e si posizioneranno come leader nel mercato. Non è una buona situazione.

L'obiettivo della riunione dovrebbe essere quello di ottenere alcune azioni che i partecipanti possono intraprendere per mettere quelle caratteristiche davanti ai clienti il ​​prima possibile. Tutti dovrebbero dare suggerimenti per il miglioramento e nessuno dovrebbe incolpare una persona in particolare per la situazione attuale.

Il tuo capo potrebbe essere lento nel rivedere le richieste di pull, ma suona come il processo è ciò che deve essere cambiato. Non aiuterai il tuo capo a migliorare il processo se si sente come se fosse sotto attacco.

Mohair
2019-11-22 02:58:09 UTC
view on stackexchange narkive permalink

C'è l'approvazione di un PR e poi c'è la fusione di un PR. La regola generale è che nessuno sviluppatore può approvare il proprio PR.

L'unione è un'altra storia. Penso che gli sviluppatori dovrebbero essere in grado di unire i propri PR. So che in alcuni negozi solo manager o lead possono fondersi, ma per me questo è solo un collo di bottiglia. L'unione è sempre controllata dall'approvazione, quindi se i revisori prendono sul serio il loro ruolo, chiunque dovrebbe essere in grado di eseguire l'unione.

Sembra che tu sia in una situazione in cui solo il tuo capo può fondersi e il tuo capo non riesce a farlo molto spesso. Suggerisco di chiedere al tuo manager se lui o lei può configurare il repository in modo da poter unire i tuoi PR. Questo dovrebbe eliminare il problema. Da quello che descrivi, non riesco a immaginare che tu sia in un negozio con un vero sistema CI / CD in cui i cambiamenti entrano nella produzione, quindi questo non è chiedere troppo.

Questo non sembra davvero risolvere il problema: l'unione è un compito in gran parte * meccanico *, ma * l'approvazione * richiede ** prendere una decisione ** - e questo è il vero ostacolo, sia come richiesta del tempo del capo checoncentrarsi, e in quelle intere aree del lavoro del richiedente potrebbe non essere possibile continuare fino a quando tale decisione non sarà stata presa, o dovrà procedere sulla base traballante di trasformare un'ipotesi sul risultato in un'ipotesi.
L'approvazione di @ChrisStratton è un problema solo se il manager è l'unico che può farlo, ma non è così che è impostato di solito.Questa non è revisione tra pari.Gli sviluppatori dovrebbero rivedere le reciproche PR e QUALSIASI sviluppatore dovrebbe essere in grado di farlo.Sembra che l'OP possa approvare alcuni PR, ma non altri, il che mi confonde.Non so perché sia, ma non dovrebbe essere.L'OP dovrebbe essere in grado di approvare le PR di chiunque, e forse questo è il problema.
Sembra che tu stia completamente ignorando la realtà che decidere se un particolare commit o un insieme di essi è il modo appropriato per risolvere un problema è il lavoro più difficile nell'ingegneria del software.Certo: supera i test a cui si è pensato, i problemi di stile vanno bene.Ma * è strategicamente una buona idea *?Quando è stata dichiarata una decisione a livello di capo, l'input del team può supportare, ma è una decisione a livello di capo a meno che o fino a quando il capo non decide di delegare la responsabilità e l'autorità di approvazione a un manutentore di area.
@ChrisStratton Questa non è una realtà che conosco.Decidere se un PR è strategicamente buono è una decisione che avrebbe dovuto essere presa molto prima che qualsiasi codice fosse scritto.Ecco a cosa serve il processo di progettazione.Quello di cui parli sembra applicarsi di più a un progetto open source in cui i PR provengono da sviluppatori sconosciuti piuttosto che da una piccola azienda che sta seguendo una metodologia di gestione del progetto e dove tutti si conoscono.
Le richieste pull che implementano in modo pulito una strategia già concordata senza inclusioni spurie sono davvero più facili da approvare.Potrebbero esserci aspetti della storia che non stiamo ricevendo;infestanti disaccordi di strategia, richieste di richiamo che tendono ad avere ripetuti problemi di qualità che il richiedente e il loro capo non sono stati in grado di allinearsi, o addirittura la semplice irresponsabilità della coda di attività da parte del capo come ampiamente affermato qui.Alla fine, però, qualcuno deve assumersi la responsabilità della decisione di approvare e delle conseguenze di quella decisione;il capo o il lead che ha l'ultima parola non è insolito.
MIke
2019-11-22 03:52:41 UTC
view on stackexchange narkive permalink

Supponendo che tu stia usando Git e abbia un ramo principale e diversi rami di funzionalità, crea semplicemente un altro ramo in cui mantieni le funzionalità unite, magari chiamalo integrazione. Ogni volta che il tuo capo riesce a unire alcune richieste pull nel master, unisci il master nei tuoi rami con tutte le funzionalità. In questo modo puoi essere certo che funzionino ancora insieme e che non ci siano conflitti.

Approccio innovativo, capovolgimento di tutto, trasformazione efficace del master in un ramo di funzionalità ... ma non penso che sia una vera soluzione al problema, soprattutto se si considera che gran parte di esso è un problema di gestione e probabilmente ha altrosintomi.
sì, ma sarebbe tutto pronto già quando il capo alla fine cederà il controllo.
@Frustrated le richieste pull sono indipendenti o ha bisogno di unire molto?inoltre sta cambiando molto codice prima di unirlo o semplicemente leggerlo?tutti fattori importanti quando inizi una discussione sullo spostamento delle responsabilità nei tuoi confronti
Justin
2019-11-21 18:44:32 UTC
view on stackexchange narkive permalink

Quanto sforzo è necessario unirli quando vengono approvati? Apprezzo che qualcosa di piccolo senza conflitti sarà minimo, ma quando hai conflitti di unione? Qual è il costo dell'opportunità? (cosa avresti potuto fare invece).

Qual è il costo probabile per l'azienda di trovare l'unica funzione di cui hanno bisogno improvvisamente in fretta e non può essere completata per settimane a causa del backlog?

Questo per dire che devi presentare questo problema come qualcosa che il manager possa capire: il costo in $$ e la perdita di flessibilità.

Concordo con @sourav Ghosh sul fatto che questo non è il tuo reale problema.

Per confronto, abbiamo uno SLA (informale) per i revisori per iniziare la revisione di 60 minuti. Ci vuole il tempo che ci vuole.


Per le persone non IT, una PR (pull request / peer review) è un elenco di tutte le modifiche apportate da uno sviluppatore (l'OP). Potrebbero essercene uno o due, come cambiare semplicemente il nome di qualcosa, o centinaia di cambiamenti in dozzine di posti. Abbiamo strumenti che evidenziano esplicitamente le modifiche, quindi come revisore sono davvero ovvie. Non è come giocare a individuare la differenza tra due edizioni di un libro.

Lo scopo di questo è controllare eventuali errori che lo sviluppatore ha mancato o chiedere come o perché qualcosa è stato fatto. È un controllo di integrità.

Di solito gli strumenti possono facilmente unire le modifiche con la versione principale, ma a volte non possono, ad esempio quando 2 sviluppatori hanno apportato modifiche diverse alla stessa cosa. Questo è chiamato "conflitto di unione" e deve essere risolto manualmente (costa tempo e denaro).

Sono io che gestisce i conflitti di unione, ma costa denaro quando devo continuare a farlo sullo stesso ramo perché è passato così tanto tempo da quando l'ho scritto!
Esattamente il mio punto: costa denaro.Quello che devi fare è quantificarlo e segnalarlo.
Più a lungo qualcosa resta non fuso, più si crea un conflitto tra lavori che nel frattempo ha preceduto nel presupposto che sarà o non sarà approvato, con possibilità opposta.Il lavoro successivo nella stessa area tematica richiede quasi invariabilmente un'ipotesi sulla risoluzione del precedente, e se ciò è sbagliato, allora * mesi * di lavoro potrebbero richiedere una profonda revisione.
Jared Smith
2019-11-22 21:17:53 UTC
view on stackexchange narkive permalink

È ora di trovare un altro lavoro, e non per il motivo per cui potresti pensare.

L'ovvia ragione è che chiaramente il tuo lavoro non è apprezzato, il che è demotivante. E questo è certamente un legittimo motivo di preoccupazione.

Ma il rovescio della medaglia è, e mi dispiace dirlo, ma chiaramente il tuo lavoro non è prezioso .

Se lo fosse, il tuo capo sarebbe sotto un'enorme pressione per ottenere funzionalità / correzioni spinte fuori dalla porta e non avresti un arretrato di 50 PR.

Le persone sono intelligenti [citazione necessaria]. Se avere un arretrato di 50 PR stava causando problemi di carriera al tuo capo, il tuo capo esaminerebbe le richieste di pull in modo tempestivo. Dato che il tuo capo non lo fa, il software non deve essere particolarmente importante per l'azienda. E in modo transitorio, implicitamente nemmeno tu .

Ora certamente è possibile che il software sia importante, ma la tua azienda è un pantano così criminalmente mal gestito che nessuno capisce quel punto. Che è anche una grande bandiera rossa a sé stante, quindi nessun aiuto.

Consiglierei di trovare un lavoro in cui fai parte del sistema portando la proverbiale pancetta, perché i programmatori sono abbastanza ben pagati per singoli contributori [citazione necessaria] e non far parte (o almeno adiacente) alla macchina che genera entrate ti rende in qualche modo spendibile.

In ogni caso, buona fortuna.

A. Murray
2019-11-22 15:39:00 UTC
view on stackexchange narkive permalink

Come ingegnere capo di un team abbastanza grande, almeno, andando verso i limiti di ciò che penso che una persona possa gestire, ho permesso a una parte del nostro team (3 ingegneri) di operare in modo più autonomo. Parte di ciò è che mi fido di loro per rivedere le proprie PR e non richiedono troppo coinvolgimento da parte mia. L'avvertenza è che spetta a me garantire che la direzione di quel team più piccolo sia valida, lo faccio controllando le PR dispari, non necessariamente commentando / rifiutando / approvando e più ampie revisioni "sul posto" della base di codice. >

Penso che tu abbia bisogno di fare una chat privata onesta con il tuo manager (una conversazione ideale per il tuo incontro 1 a 1 con lui / lei, se li hai) iniziando esaminando tutte le altre potenziali cause di questo comportamento. Sii modesto poiché questo spesso ha l'effetto di far emergere pensieri più onesti dalle persone nella mia esperienza, puoi spesso avere un'idea di ciò con cui hanno a che fare, ad esempio, la conversazione potrebbe essere qualcosa del tipo ...

Abbiamo questo grande arretrato di PR e la velocità con cui siamo in grado di unirli e rilasciarli sta danneggiando il business e la produttività dei nostri utenti (elabora quanto vuoi qui). Voglio capire perché non possiamo muoverci più velocemente su di loro e sono preoccupato che sia perché il mio codice [e qualche altro codice dello sviluppatore] non è abbastanza buono.

A questo punto il tuo manager potrebbe semplicemente confessare di essere sovraccarico.

Forse ci sono altre aree in cui il tuo manager potrebbe usare un po 'di aiuto ma per qualsiasi motivo non ha chiesto o delegato. Potrebbe valere la pena chiedere se c'è qualcosa che tu o il resto della squadra potete prendere dal suo piatto.

Forse fai un passo indietro e prenditi un po 'di tempo per migliorare la capacità di revisione dei PR esistenti, cerca di renderlo il più semplice possibile da rivedere. Il PR è troppo grande? Troppe parti in movimento? Potrebbe essere suddiviso? Posso aggiungere altre spiegazioni? Diagrammi? GIF che mostrano la funzionalità in fase di test? Questo potrebbe essere utile: https://medium.com/arnoldclarkdpd/better-github-pull-requests-87b2ef4f06c8

Questo manager forse sente un senso di obbligo nei confronti dell'azienda che devono controllare tutto prima che esca dalla porta. Se è così, varrebbe la pena affermare che come squadra, per crescere e apprendere (il business case lo consente) devi essere autorizzato a commettere errori. Per quanto ti sforzerai di mantenerlo al minimo, le persone del team dovrebbero essere autorizzate a farsi avanti, assumersi la responsabilità e imparare dai propri errori.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...