Come sottolineato da alcune altre risposte, la domanda giusta qui è probabilmente: perché hai un tracker di problemi. Una buona risposta a questa domanda (non solo dal punto di vista gestionale ma anche dal punto di vista dello sviluppatore) è fondamentale se si desidera che un sistema di rilevamento dei problemi funzioni realmente e venga aggiornato regolarmente.
In molte aziende il sistema di monitoraggio dei problemi viene utilizzato principalmente come strumento di reporting gestionale. Fare in modo che i programmatori aggiornino i problemi solo in modo che la gestione possa eseguire un report non funziona bene. E forzare i programmatori ad aggiornare i problemi non funziona - potresti avere problemi aggiornati, ma dovresti mettere in dubbio i dati.
Nella mia esperienza, l'unico modo per far sì che gli sviluppatori (e tester, gestione, ecc.) usino efficacemente un sistema di tracciamento dei problemi è quello di integrarlo nel processo di sviluppo. Ciò significa che l'output di una parte del processo diventa l'input per la parte successiva del processo.
Per dare l'autorità del sistema di tracciamento dei bug suggerirei quanto segue:
- Gli sviluppatori lavorano solo su bug / funzionalità registrati nel tracker dei problemi e nessun lavoro viene svolto al di fuori di esso. Anche tutte le idee, i progetti di refactoring, le nuove funzionalità, gli strumenti personalizzati da sviluppare, ecc. Devono essere registrati.
- I problemi vengono elaborati in ordine di priorità. La priorità dovrebbe essere determinata in parte dal management, ma gli sviluppatori dovrebbero sicuramente avere voce in capitolo nel determinare le priorità. Ciò è particolarmente vero quando si tratta di problemi di manutenzione e di refactoring.
Per quanto riguarda l'elaborazione, è possibile utilizzare qualcosa di simile al seguente:
- status 'new' indica che un problema non è stato ancora rilevato da uno sviluppatore ed è ancora nella coda di problemi prioritari
- stato 'assegnato' indica che è stato assegnato a uno sviluppatore. Questo potrebbe essere fatto dallo sviluppatore o da qualcun altro come il responsabile del team. Trovo che funzioni bene avere alcuni problemi assegnati a ciascun sviluppatore e di solito un mix di "heavy lifting" come nuove funzionalità e facili selezioni come semplici bug o semplici lavori di manutenzione. Ciò consente agli sviluppatori di scegliere il lavoro in base al loro umore.
- stato 'in corso' significa che uno sviluppatore sta lavorando su un problema. Solo uno o due problemi per sviluppatore dovrebbero essere "in corso" in qualsiasi momento.
- una volta risolto il problema, lo sviluppatore può modificare lo stato del problema in "necessità di test" e cambiare il proprietario nel tester. Questo è un passaggio importante, poiché questa è anche la coda di lavoro dei tester.
- i tester possono cambiare lo stato in "testing fallito" e cambiare la proprietà dello sviluppatore, il che significa che va in cima alla coda per lo sviluppatore, oppure possono cambiare lo stato in "pronto per la distribuzione".
I problemi - con lo stato di "pronto per la distribuzione" possono essere uniti e rilasciati in base al ciclo di rilascio da parte di chiunque sia responsabile delle versioni.
In breve: rendere il sistema di tracciamento dei problemi una parte essenziale del processo di sviluppo e non dovrai preoccuparti di problemi non aggiornati.