Вспомнил что на недавних грейдах коллега, не получив от миддла ответ, набросил, что #сложность задачи зависит от числа компонентов, затрагиваемых ей и связей между ними.
Решил в рамках помощи коллеге в том, чтобы тоже решиться уже пойти на грейды и сдать их, сформулировать готовый ответ на этот вопрос, да и кашу в голове систематизировать.
Определение от коллеги не совсем подходит к задачам, как по мне, но хорошо подходит к системам. А вот задача, если рассматривать её как изменение части системы человеком - кажется, имеет сильно больше факторов, влияющих на её решение чем только компоненты и связи.
Я бы добавил сверху уровень контроля над ними - если один из компонентов чужой, влиять на него сложнее, добавляются коммуникационные проблемы и это сожрёт больше времени (обычно).
Помимо сложности у задачи есть #сроки и #стоимость . Обе этих вещи зависят от
имеющихся ресурсов - в том числе кадровых. Стоимость можно оценить только постфактум - это буквально сумма затраченных ресурсов, в том числе зарплату исполнителя.
#сроки - здесь можно только прогнозировать, зная задействованные #ресурсы и.. сложность. Условно, задействовав ресурсы сеньора и джуна - время будет разным.
Ho и #стоимость джуна и сеньора разные. Где-то окажется дешевле сделать руками джуна, где-то сеньора, где-то миддла.
Кажется, что оптимальный по стоимости уровень сложности задач в зависимости от грейда - около 75% до потолка, с которым человек может справиться (с исключением для сеньоров, потому что больше некому).
Не знаю куда отнести уровень определённости/неизвестности, в #сложность , в её определении выше, их не вписать, но на время и в итоге на стоимость они влияют, пожалуй, даже сильнее чем число этих связей между компонентами. Уровень погружения в проект и понимания системы - прямо влияет на эти уровни.
Обычно я, оценивая большие проекты, использую коэффициент (1-100%) определённости вдобавок к интуитивным прогнозам стоимости/срока.
Прогноз / коэффициент = пессимистичный прогноз,
Прогноз * коэффициент = оптимистичный прогноз.
Чем-то это всё напоминает #триз с разделением конструкторских и изобретательских задач - в изобретательских определена лишь проблема, но не решение и даже направление решения. И хорошо решённая изобретательская задача заключается в минимальном изменении компонентов и связей между ними с итоговым достижением цели решаемой задачи, без излишнего усложнения системы.