Hallo!
Aus meiner Erfahrung heraus hat sich folgender "Schätzalgorithmus" bewährt:
1. Zeitschätzung aus dem Bauch heraus (das geht natürlich nur mit etwas Erfahrung)
2. großzügig aufrunden (+20% oder so)
3. verdoppeln
4. und noch mal mind. 50% oben drauf, wenn's intensiv getestet werden soll.
Das bedeutet im "Real Life":
* Triviale Änderungen (drei Zeilen) gibt's nicht unter einer Stunde.
* Eine komplett neue Funktion (im Sinne von function f()) dauert mindestens einen Tag.
* Neue Features (mehr als eine function f()) dauern eine Woche oder mehr.
Das ist keine Faulheit, das sichert mich ab. Meistens brauche ich etwa 90% meiner Schätzung (nach Schritt 3/4), ich hab also nur 10% Luft um irgendwelche unerwarteten Probleme zu beseitigen.
Wenn jemand anfängt, angesichts der finalen Schätzung zu jammern, hilft die Drohung mit ungetestetem Code recht gut. Spätestens, wenn man das einmal durchzieht (also explizit ungetesteten Code rausgibt und deutlich -- schriftlich -- darauf hinweist, daß die ganze Sache explodieren kann), läßt das Jammern deutlich nach. Denn ungetesteter Code explodiert fast garaniert.
Just my 2 cents ...