Jestem przekonany, że ilość rutynowej pracy przy opracowywaniu oprogramowania jest - i powinna być - stosunkowo niewielka, jeśli nie pomijalna, i że jest to podstawowy problem oceny oprogramowania.
Pozwól mi opisać, w jaki sposób doszedłem do tego wniosku i powiedz, czy argumentacja ma jakieś poważne wady:
Wszystko, co można oszacować z dużą dokładnością, to rutynowa praca, co oznacza rzeczy, które zostały zrobione wcześniej. Nie da się oszacować wszystkich innych rodzajów pracy związanych z badaniami i kreatywnością, przynajmniej nie z dokładnością, powiedzmy, +/- 20 procent.
Rozwój oprogramowania polega na unikaniu powtarzalnych zadań. Jedną z jego podstawowych zasad jest OSUSZANIE (nie powtarzaj się). Ilekroć programista odkrywa, że robi powtarzalne rzeczy, czas znaleźć abstrakcję, która unika tego powtarzania. Abstrakcje te mogą być prostymi rzeczami, takimi jak wyodrębnianie powtarzającego się kodu do funkcji lub umieszczanie go w pętli. Mogą być również bardziej złożone, np. Tworzenie języka specyficznego dla domeny. W każdym razie ich wdrożenie będzie wymagało badań (czy ktoś już to wcześniej robił?) Lub kreatywności.
Z tych dwóch punktów wyciągam powyższy wniosek.
Właściwie od dłuższego czasu zastanawiam się, dlaczego ta relacja nie jest wspomniana w każdej innej dyskusji, poście na blogu lub w artykule na temat oceny oprogramowania. Czy to jest zbyt teoretyczne? Czy moje założenia są błędne? A może jest to zbyt trywialne - ale dlaczego większość znanych mi deweloperów uważa, że mogą dokonywać oszacowań z dokładnością wynoszącą +/- 20 procent lub więcej?