Una delle cose in cui trovo più difficoltà è calcolare il tempo necessario per svolgere un compito. Per dire, in questi 100DaysOfCode pensavo di sbrigare rapidamente il primo obiettivo. Invece ci ho messo 10 giorni, tipo 2 o 3 volte la mia stima iniziale. Un po’ è per la tendenza a modificare continuamente. Un po’ è per il non aver pianificato ben bene quello che volevo fare.

Ma non è l’unica ragione. Navigando ho trovato più sviluppatori alle prese con questo problema. Alcuni hanno proposto delle teorie sul perché. Teorie che si possono riassumere così:

  1. Non abbiamo abbastanza dati per fare una stima;
  2. Non teniamo conto delle difficoltà. Ovvero, pensiamo che andrà tutto liscio;
  3. E andrà tutto liscio al primo tentativo. Dimentichiamo che, sostanzialmente sempre, dovremo rifare più volte un lavoro, correggendo errori e velocizzando procedure;
  4. Pensiamo che le cose siano sempre uguali. Ma ogni progetto è una storia a sé. E dobbiamo tenerne conto nelle nostre stime;
  5. Magari il risultato da ottenere appare semplice, ma il lavoro da fare, i requisiti da rispettare, tutte le condizioni dietro possono essere molto più complicate. Nella stima del tempo necessario dobbiamo ricordare di verificare anche il dietro le quinte;
  6. Sogniamo di poter lavorare senza interruzioni e senza contrattempi. Ma ci sarà sempre una riunione, una telefonata, un qualcosa fuori da noi che ci distrarrà e ci farà perdere il flusso di lavoro;
  7. Infine, può anche capitare di non comprendere a pieno i nostri limiti e, di conseguenza, sovrastimiamo le nostre capacità.

Lo so. Lo so davvero, le mie conoscenze sono abbastanza ridotte rispetto a quelle di molti programmatori e sviluppatori. Penso però di non essere molto distante dal vero con questo elenco. Quello in cui invece sono distante è nel seguire un altro consiglio, consiglio ripetuto da molti:

Arrotonda sempre in eccesso il tempo necessario

Io tendo invece a fare il contrario, al lavoro come nei miei hobby. Eppure sarebbe così semplice:

  • se un lavoro richiede meno di una settimana, arrotonda in eccesso al giorno intero. Per esempio, se richiede un giorno e mezzo stima due giorni;
  • se un lavoro richiede più di 5 giorni, arrotonda alla settimana. Quindi se penso di impiegare 8 giorni, darò come stima 2 settimane
  • se un lavoro richiede più di 3-4 settimane, beh, lascia perdere: è impossibile fare una stima corretta. Però puoi fare una cosa, scomponi il problema in problemi più semplici e affrontali uno alla volta.

Tutto questo riguarda la stima del tempo. Il discorso è diverso, ovviamente, quando si parla di come far fruttare al meglio il proprio tempo. In inglese si chiama Time management, ma è una cosa di cui parlerò domani.