Come posso fare in modo che un capo (o un collega) stia più attento nel valutare la complessità di un compito / progetto?

8

Sono uno sviluppatore di software e lavoro in una piccola società di sviluppo web. Sembra essere un tema ricorrente che un dirigente intermedio mi chiederà quanto tempo ci vorrà qualcosa, e quando darò loro la mia stima, pensano che sia troppo alto. Se si tratta di un manager più tecnico o di un altro sviluppatore, di solito hanno già in mente una stima propria e iniziano a provare a implementarlo a modo loro perché pensano di poterlo fare più velocemente.

C'è una tendenza, tuttavia, in cui gli altri sviluppatori hanno finito per utilizzare molto più tempo di quanto hanno quotato. Otterranno metà del loro budget, quindi realizzeranno che c'è qualche necessità commerciale che il loro piano di implementazione non possa affrontare correttamente. Più volte, il mio piano avrebbe risposto a questa esigenza, ma è stato scrollato di dosso come un " Non ne avrai bisogno ".

Peggio ancora, quando colpiscono questo muro, di solito vengono da me per aiutarli a uscire dall'angolo in cui si sono dipinti, ma ci sono solo tante ore ai miei tempi.

Caso migliore : queste interruzioni riducono il tempo che ho assegnato per il mio lavoro di sviluppo, causando il ritardo di altri progetti o il fatto che devo fare gli straordinari perché sono "l'unico può fare X ".

Il peggiore dei casi : finisco per dover assumere il compito / progetto come mio e, a quel punto, non c'è più tempo nel budget per farmi fare il "mio" modo. Devo cercare di finire quello che hanno iniziato nel modo in cui hanno iniziato, quindi "la compagnia non perde più soldi". Questo torna sempre a mordermi perché poi diventa il "mio" codice hacky, e quando si rompe le persone mi chiedono perché è stato creato così (dopotutto non hanno idea di chi lo abbia effettivamente creato.)

Quindi la mia domanda è : come posso aiutare questi colleghi a capire quando le cose non sono così semplici come loro immaginano e devono rivalutare la loro comprensione dei bisogni del cliente?

Diversamente da questa domanda simile su Convincendo la gestione a trattare con il debito tecnico [esistente] , la mia domanda cerca strategie per aiutare la squadra a realizzare [proattivamente] prima di incorrere in un debito tecnico, in un tentativo di impedire che ciò accada all'inizio. Queste due cose vanno di pari passo, ma sono distintamente differenti nella mia mente. Le risposte dell'altra domanda suggeriscono di aggiungere il tempo di refactoring alle stime per le funzionalità future. Questo non può mai funzionare se altri sviluppatori (e quindi i manager) pensano sempre che detta funzione futura impiegherà meno tempo di quanto effettivamente sarà, e non posso convincerli che la mia stima è più realistica.

    
posta Eric Seastrand 09.03.2016 - 21:33
fonte

2 risposte

6

Adoro questa domanda perché ogni giorno ho a che fare con una nuova stima o una stima precedente.

La risposta dipende dalla grandezza di un progetto / attività di cui stai parlando. Ci sono libri e metodi per trattare le stime. La stima del progetto per un team di sviluppo di 50 persone con un budget di 1 milione richiede un approccio diverso rispetto a lavorare su piccoli "progetti da 80 ore" - ecco alcuni punti di "vita reale" per i successivi:

  • Stima "bottom-up" - Quanto più piccola è possibile interrompere le attività, tanto migliore è la stima. È possibile stimare le parti più piccole in modo indipendente, con l'ulteriore vantaggio di identificare le funzioni mancanti. Diciamo che ti sono stati consegnati i prototipi di un sito web e hai chiesto di chiedere un preventivo. Non andare dal numero di pagine, vai dal numero di funzionalità. Ad esempio, un carrello può essere "1 pagina", ma può essere composto da 10 diverse funzionalità.

  • Le stime a "tre punti" significano fare tre stime come un intervallo. È quindi possibile rispondere con "40-80 ore, a seconda di quanto siano complicate le funzionalità xxx." Questo è un buon modo per introdurre il rischio nella tua stima. È anche una buona idea ottenere stime dagli altri membri del tuo team, quindi se qualcuno dice 50 ore e qualcun altro dice 100 ore, puoi discutere della differenza.

  • Soddisfare il budget / o impostare le aspettative - Se sai che il budget è di 100 ore e pensi che si tratti di un progetto di 200 ore, puoi aiutare a stabilire le aspettative prima di impegnarti. "Tutto ciò che hai richiesto è un progetto di 200 ore: se limitiamo feature-x, possiamo farlo in 100 ore".

  • Tempo di sviluppo e tempo di test rispetto a tempo di progetto e tempo di calendario - Questi sono tutti diversi e se sei un team di uno è facile mescolare tutto insieme. Se hai bisogno di passare 8 ore a capire i requisiti, quindi 72 ore di sviluppo, ti porteranno molto più di 2 settimane di calendario per completare il progetto. Soprattutto se è necessario bilanciare altre attività, interagire con un team, attendere i clienti o passare ore a scrivere tramite e-mail. In questo caso, dì al tuo capo "100 ore, ovvero x ore di tempo di sviluppo, ore lavorative con il cliente e z-ore di supporto iniziale". Ciò ti aiuterà a dimostrare che stai includendo il tempo diverso dal tuo codice.

IMPORTANTE: non penso che la stima sia il tuo problema principale, penso che la comunicazione esterna e interna sia. Se la caratteristica X era così importante, allora il cliente avrebbe dovuto comunicarlo all'inizio. Quando la richiesta è arrivata per la funzione X, il tuo project manager avrebbe dovuto dire "è fuori portata ma possiamo riassegnare le ore correnti o espandere il budget".

Internamente devi comunicare in modo tale che i tuoi superiori siano consapevoli di avere superato il budget / programma ben prima che sia "troppo tardi". Quando ti viene consegnato un compito, dovresti conoscere l'ora (come in ore) e l'ora (come in un calendario) che devi lavorare su quell'attività. Se l'attività non rientra in questi vincoli, devi renderli consapevoli - "La caratteristica A & B mi richiederà di fare C. Questo non lascerà il tempo per X o Y".

Nessuna sorpresa - Devi anche assicurarti di comunicare di nuovo lungo il progetto. Assicurati di segnalare le cose buone, ma se qualcosa sta impiegando più tempo del previsto, assicurati di dirlo subito. Il cinquanta per cento del modo attraverso il progetto è responsabile di dire:

"La funzione X mi sta impiegando più tempo del previsto, potrei non arrivare alla funzione Y".

Alla data di scadenza, non è responsabile dire:

"Non ho eseguito la funzione Y perché ho esaurito il tempo"

PERSONAL MOMEMNT - Tutto questo può essere davvero difficile quando i manager vogliono ancora essere programmatori e quando tutti vogliono piacere al cliente.

    
risposta data 09.03.2016 - 22:59
fonte
1

Fai del bene e fagli conoscere.

Se devi risolvere i problemi di altre persone perché non hanno ascoltato quello che hai detto prima, o perché sono troppo inesperti per capire cosa stavi dicendo loro, assicurati che quelle persone e i tuoi capi sappiano qual è stata la ragione quando è mancato l'intervallo di tempo previsto e quale tipo di errore di pianificazione è stato effettuato. E sii paziente, se i tuoi colleghi non sono completamente resistenti contro l'apprendimento dagli errori, la situazione probabilmente migliorerà nel tempo.

    
risposta data 17.04.2016 - 16:29
fonte