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 inequivocabile. Se non lo possiedi, le tue stime saranno errate. Avere questo documentato in una sorta di specifica delle caratteristiche prima che chiunque inizi a scrivere codice significherà che tutte le domande che devono essere poste saranno state poste prima dell'inizio della codifica. Questo è un risparmio di tempo sorprendentemente efficace. Tornare indietro e chiarire i requisiti interrompe il flusso come programmatore e attendere risposte può bloccare i progressi.
Dopo aver identificato il requisito, è necessario identificare le attività lavorative necessarie per risolverlo. Questo è un classico esercizio di divisione e conquista: ogni compito che può essere ulteriormente suddiviso deve essere ulteriormente suddiviso.
In una squadra più grande 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ù piccolo, ma è comunque utile ottenere una stima indipendente da entrambi i tuoi sviluppatori e magari includerne uno anche da te stesso - la tua mancanza di competenze specifiche può essere utile qui perché nello spiegarti cosa il compito implica dal loro punto di vista, il team di sviluppo probabilmente afferrerà meglio il problema.
Con un team più piccolo può aiutare a ottenere una stima del migliore / previsto / peggiore caso per ogni attività, che ti dà una gamma di valori, ma se stai ottenendo molte stime di superamento, puoi inclinarti verso il caso peggiore fino a quando i tuoi sviluppatori imparare 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 tenerne conto. Scopri quanto tempo impiegano gli sviluppatori a lavorare su nuove funzionalità e includilo nelle tue stime. Se un'attività è stimata in 2 giorni ma i tuoi sviluppatori sono in grado di lavorare su un nuovo sviluppo solo il 60% delle volte, avrai bisogno di 4 giorni per completarlo. Potresti essere in grado di aiutarti anche controllando la pipeline di altre attività che devono gestire in modo che le attività di amministrazione o supporto non urgenti possano essere raggruppate un po 'insieme piuttosto che essere gestite su base ad hoc. Molti programmatori (certamente incluso me stesso in questo) non sono grandi gestori del tempo, quindi tutto ciò che puoi fare per dare una mano in questo senso sarà di aiuto. Il single-tasking è sempre più facile per i programmatori rispetto al multi-tasking. Anche bloccare il tempo durante il giorno può essere d'aiuto.
Conserva 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 gonfiare le proprie stime durante la pianificazione eb) per aiutarli a perfezionare le proprie capacità di stima. Alla fine di ogni iterazione (o qualsiasi equivalente tu abbia) l'intero team dovrebbe rivedere il lavoro svolto e capire perché ci è voluto più tempo del previsto in modo che questo possa essere incorporato nelle stime future. Questo deve essere un compito irreprensibile - sembra che tu abbia l'atteggiamento giusto qui, ma questa risposta potrebbe essere in giro un po ', quindi farò l'osservazione. Se qualcuno dice "Ho fatto un errore qui", puoi trasformarlo in "cosa avresti potuto fare di meglio", ma dire alla gente che erano troppo lenti o che sbagliavano non farebbe che peggiorare le cose.
Non sono a conoscenza di proiettili d'argento per questo tipo di problema, ma il fattore più importante è la comunicazione, che in realtà è più facile con un team più piccolo, e l'utilizzo del feedback per affinare le tue capacità collettive.