Le tecniche generali sono in qualche modo di buon senso, la cosa importante da sapere è che non richiedono molta competenza tecnica.
Il punto di partenza con la pianificazione è identificare il problema esatto che deve essere risolto e avere un requisito chiaro e non ambiguo. Se non lo hai, le tue stime saranno errate. Avere questo documentato in una specie di caratteristica specifica prima che qualcuno inizi a scrivere il codice significherà che tutte le domande che devono essere poste saranno poste prima che inizi la codifica. Questo è un salvatempo sorprendentemente efficace. Tornando indietro e chiarendo i requisiti, si interrompe il proprio flusso come programmatore e le risposte in attesa possono bloccare il progresso.
Una volta identificato il requisito necessario per identificare le attività lavorative necessarie per risolverlo. Questo è un classico esercizio di divisione e conquista: qualsiasi attività che può essere ulteriormente suddivisa deve essere ulteriormente suddivisa.
In una squadra più ampia puoi usare il poker di stima per ottenere una stima basata sull'esperienza di tutti i soggetti coinvolti. Ciò non funziona altrettanto bene in un team più ristretto, ma è comunque utile ottenere una stima indipendente da entrambi i tuoi sviluppatori e magari includerne anche una da te- la tua mancanza di esperienza specifica può essere utile qui perché ti spiega cosa il compito coinvolge dal loro punto di vista, il team di sviluppo probabilmente coglierà meglio il problema.
Con un team più piccolo può aiutare a ottenere una stima migliore / prevista / peggiore per ogni attività, che ti dà una gamma di valori, ma se stai ricevendo molte stime di sovraccarico, puoi inclinare verso il caso peggiore fino a quando i tuoi sviluppatori non impareranno a stimare in modo più accurato.
In un piccolo negozio, gli sviluppatori finiscono spesso per raddoppiare come amministratori di sistema, team di supporto e persino tester (anche se di tutte le cose che potrebbero fare, il test è quello che dovresti cercare di evitare a tutti i costi) quindi devi tenere conto per quello. Scopri quanto tempo impiegano i tuoi sviluppatori a lavorare sulle nuove funzionalità e a tenerne conto nelle stime. Se un'attività è stimata in 2 giorni, ma i tuoi sviluppatori sono in grado di lavorare su nuovi sviluppi solo il 60% delle volte, avrai 4 giorni per il completamento. Potresti essere in grado di aiutarti anche controllando la pipeline di altre attività che devono essere gestite in modo tale che le attività di amministrazione o di supporto non urgenti possano essere raggruppate insieme piuttosto che essere gestite su una base ad hoc. Molti programmatori (sicuramente incluso me stesso su questo) non sono grandi manager del tempo, quindi qualsiasi cosa tu possa fare per dare una mano in questo senso ti aiuterà. Il single-tasking è sempre più facile per i programmatori rispetto al multi-tasking. Anche bloccare il tempo durante il giorno può aiutare in questo.
Mantieni un record - ogni volta che hai una sessione di pianificazione, registra le stime e gli effettivi. È quindi possibile utilizzare questo a) come guida per quanto aumentare le proprie stime durante la pianificazione eb) per aiutarli a perfezionare le proprie capacità di stima. Alla fine di ogni iterazione (o qualsivoglia equivalente hai) l'intero team dovrebbe rivedere il lavoro svolto e capire perché è stato necessario più tempo del previsto per poterlo incorporare nelle stime future. Questo deve essere un compito irreprensibile - sembra che tu abbia l'atteggiamento giusto qui ma questa risposta potrebbe essere intorno un po 'quindi farò l'osservazione. Se qualcuno dice "Ho fatto un errore qui", puoi trasformarlo in "cosa avresti potuto fare meglio", ma dire alla gente che erano troppo lenti o sbagliare non fa che peggiorare le cose.
Non sono a conoscenza di nessun proiettile d'argento per questo tipo di problema, ma il fattore principale è la comunicazione, che in realtà è più semplice con un team più ristretto, e l'utilizzo del feedback per affinare le tue capacità collettive.