Хороший вопрос!
Я тоже задавался этим вопросам и пришел к выводу, что необходимо в компании разработать автоматизированную систему оценки.
Есть 2 вида оценки работ:
1. Прогнозируемая
2. Фактическая (по времени и тому, что было сделано)
Абстрагируясь на аналогию (максимально упрощённый тех.процесс):
Представьте, что Вы строите кирпичный дом.
1. Перенос одного кирпича - стоит 5р (5сек)
2. Покрыть раствором поверхность - 3р (3сек)
3. Положить кирпич на поверхность, покрытую раствором - 1р (1сек)
4. Убрать лишний раствор - 2р (2сек)
Теперь, предположим, что часть рабочих носят по-одному кирпичу, а один - по 10 сразу.
Стоит ли тому, кто носит сразу по 10 кирпичей - платить 5*10?
Или же "украсть" у него кровно заработанные деньги, если он делает это быстрее?
Т.е. разговор идёт о сложности алгоритма (вложенность, рекурсии и т.д.)
В итоге: анализ трудозатрат простых операций и сложности алгоритмов с применением этих операций, позволяют выявить реальную стоимость разработки части или всего проекта в целом.
1. Прогнозируя изначально и получив фактически выполненную работу - можно сравнить и на основе этой разницы скорректировать алгоритм прогноза.
2. Оплата всегда ведётся по прогнозируемым трудозатратам вместе с разработчиками.
3. Если что-то требует исследовательской работы - это делается в первую очередь и стоимость этой работы оговаривается заранее.