Questa è una buona domanda. Risponderò dal punto di vista di una persona con 30 anni di esperienza con un decennio come project manager dedicato in tutte le aree tranne lo sviluppo del software, ma di recente è incappato involontariamente nello sviluppo del software dell'area. Indipendentemente dalla metodologia utilizzata in tutto il vostro team e da ciò che viene chiamato, alla fine della giornata i progetti di sviluppo sono gli stessi di qualsiasi altro nel senso commerciale che gli obiettivi devono essere raggiunti entro vincoli concorrenziali di tempo, budget e qualità - - e mentre i progetti vengono eseguiti, l'azienda continua a muoversi e ad evolversi e ha buone probabilità di apportare modifiche al progetto. Pertanto, è necessario impostare e impegnarsi per obiettivi e tempi e per essere in grado di fornire aggiornamenti su base frequente e quando richiesto. Non consiglio che la risposta alle domande sia una qualche forma di "se fai questa domanda mostra la tua ignoranza e devi essere addestrato".
Detto questo, nella mia esperienza ciò che rende le stime del tempo nello sviluppo del software particolarmente impegnativo è che i progetti di sviluppo comportano molti territori inesplorati. La definizione tecnica di un "progetto", secondo il Project Management Body of Knowledge del Project Management Institute, è che un progetto deve essere unico. Tuttavia, la stragrande maggioranza dei "progetti" in ambito IT sono semplici ri-esecuzioni di progetti precedentemente elaborati e amp; progetta e realizza libri di esecuzione. Nello sviluppo del software, abbiamo framework e vari schemi di progettazione generica che rendono riutilizzabile lo sviluppo, ma il nucleo di ogni progetto è completamente unico.
Inoltre, la maggior parte dei progetti di sviluppo comporta l'integrazione con altri sistemi e quanto velocemente ciò possa essere fatto è una grande ipotesi. Sto lavorando a un progetto in questo momento in cui le mie stime temporali originali erano basate sul presupposto che i 4 sistemi con cui ho bisogno di interagire a livello di programmazione avrebbero le API e non risulta che lo facciano. Inoltre, uno dei sistemi è ospitato su cloud e la mia organizzazione ha politiche che vietano il lavoro svolto. Chi poteva averlo previsto?
Man mano che vengono scoperte scoperte che mettono a repentaglio i tempi, è importante comunicare bene perché è emerso il ritardo, perché non è stato possibile prevederlo, ecc.
Inoltre, mi è stato detto che il lasso di tempo indicato non avrebbe funzionato e reso più rapido il processo. Un'altra variazione viene data a un carico di modifiche alla barca da iniettare nello sviluppo senza che sia stato concesso il tempo aggiuntivo. C'è una legge in fisica che dice che la materia non può essere creata o distrutta, e questo mi viene in mente perché mi sembra che anche il tempo non possa essere creato dal nulla. Accelerare lo sviluppo avrà probabilmente un impatto negativo sulla qualità del rilascio, sulla supportabilità del prodotto e / o sulla futura evoluzione del prodotto.
Le richieste relative alla pianificazione dovrebbero essere risolte in termini commerciali generali. "Sì, siamo sulla buona strada per rispettare i tempi prestabiliti, e non ci sono problemi di produzione che mettano in pericolo". Le richieste di aggiungere uno spazio significativo senza più tempo, o semplicemente accelerare la consegna, dovrebbero essere una forma di "possiamo farlo, ma solo così tutti sono consapevoli che intrinsecamente comporta il rischio di bug perché gran parte del tempo di sviluppo è fatto per essere proattivo da non introdurre bug e anche da testare in modo completo. " Quando rispondono con "così basta testare più velocemente", questo ottiene una risposta che spiega che i test di sviluppo non comportano tempi morti e possono essere accelerati senza introdurre il rischio di difetti mancanti.
In sintesi, sto semplicemente suggerendo che tutti gli sviluppatori - non solo i lead, scrum master o project manager, siano preparati a discutere i loro compiti in un contesto di business e ad avere discussioni sulla modifica dei parametri del progetto rendendoli consapevoli dello scambio -offs che risulterebbe.