Я убежден, что объем рутинной работы по разработке программного обеспечения - и должен быть - относительно мал, если не пренебрежимо мал, и что это является фундаментальной проблемой оценки программного обеспечения.
Позвольте мне описать, как я пришел к такому выводу и сказать, есть ли в аргументации серьезные недостатки:
Все, что можно оценить с высокой точностью, - это рутинная работа, то есть то, что было сделано раньше. Все другие виды работ, связанных с исследованиями и творчеством, не могут быть оценены, по крайней мере, с точностью, скажем, +/- 20 процентов.
Разработка программного обеспечения заключается в том, чтобы избегать повторяющихся задач. Один из его основных принципов - СУХОЙ (не повторяйте себя). Всякий раз, когда программист обнаруживает, что делает повторяющиеся вещи, пришло время найти абстракцию, которая избегает этого повторения. Эти абстракции могут быть простыми вещами, такими как извлечение повторяющегося кода в функцию или зацикливание. Они также могут быть более сложными, как, например, создание предметно-ориентированного языка. В любом случае, их реализация потребует исследований (кто-нибудь делал это раньше?) Или творчества.
Из этих двух пунктов я делаю вышеприведенный вывод.
На самом деле, я довольно долго задавался вопросом, почему эти отношения не упоминаются ни в одном другом обсуждении, посте в блоге или статье об оценке программного обеспечения. Это слишком теоретически? Мои предположения неверны? Или это слишком тривиально - но почему большинство известных мне разработчиков считают, что они могут делать оценки с точностью +/- 20% или лучше?