Ich bin überzeugt, dass der Umfang der Routinearbeit in der Softwareentwicklung relativ gering, wenn nicht vernachlässigbar ist und sein sollte und dass dies das grundlegende Problem der Softwareschätzung ist.
Lassen Sie mich beschreiben, wie ich zu diesem Schluss komme, und mir sagen, ob die Argumentation schwerwiegende Mängel aufweist:
Alles, was mit hoher Genauigkeit geschätzt werden kann, ist Routinearbeit, dh Dinge, die zuvor getan wurden. Alle anderen Arten von Arbeit, die Forschung und Kreativität betreffen, können nicht wirklich geschätzt werden, zumindest nicht mit einer Genauigkeit von beispielsweise +/- 20 Prozent.
Bei der Softwareentwicklung geht es darum, sich wiederholende Aufgaben zu vermeiden. Eines der Grundprinzipien ist TROCKEN (wiederholen Sie sich nicht). Immer wenn ein Programmierer sich wiederholende Dinge tut, ist es Zeit, eine Abstraktion zu finden, die diese Wiederholung vermeidet. Diese Abstraktionen können einfache Dinge sein, wie das Extrahieren des wiederholten Codes in eine Funktion oder das Einfügen in eine Schleife. Sie können auch komplexer sein als das Erstellen einer domänenspezifischen Sprache. In jedem Fall erfordert ihre Umsetzung Forschung (hat das schon jemand gemacht?) Oder Kreativität.
Aus diesen beiden Punkten ziehe ich die obige Schlussfolgerung.
Eigentlich habe ich mich schon eine ganze Weile gefragt, warum diese Beziehung nicht in jeder anderen Diskussion, jedem Blog-Beitrag oder Artikel über Software-Schätzung erwähnt wird. Ist es zu theoretisch? Sind meine Annahmen falsch? Oder ist es zu trivial - aber warum glauben dann die meisten mir bekannten Entwickler, dass sie Schätzungen mit einer Genauigkeit von +/- 20 Prozent oder besser durchführen können?