Допустим, есть тимлид и он поставил разработчику задачу. Достаточно сложную. Описал концепцию, предложил известный метод А для решения.
Разработчик изучает концепцию и молча избирает для решения метод Б (тоже известный). Выкатывает результат. Тимлид читает, удивляется смене концепции, но видит, что метод Б может сработать как минимум не хуже А. Поэтому пропускает результат в тестирование, тем более что проверить уже реализованный метод Б быстрее, чем сразу требовать вернуться к A.
В ходе тестирования метод Б не срабатывает из-за конфликта с внешней системой S, с которой у разработчика было мало опыта (разработчик, обычно решающий задачи интеграции с S, недоступен). При этом сам метод Б корректен, но интеграция с системой S является необходимым условием задачи. Способов предсказать совместимость Б и S до реализации — нет.
Разработчик переключается на изначально предложенный метод А. Метод А срабатывает как ожидалось, задачу удается решить, но с превышением оценки на ~80% из-за потраченного на Б времени.
Система S — внешняя, узконишевая, почти безальтернативная и довольно инновационная. Найти разработчиков с опытом в ней непросто. Документация к S есть, но неполная. Как водится, её неполнота усугубляется с каждым обновлением. По сути разработчики работают с S раз в жизни — если придётся. У тимлида есть прямая линия с CEO системы S, но она не предполагает ежедневных бесед по любому поводу.
Проджект менеджер недоволен превышением оценок и необходимостью это объяснять клиенту. Видимо, произошла чудовищная ошибка. Но какая?

