Программист делал новую функцию и решил использовать стороннюю библиотеку, интеграция и первое применение - всё было нормально но потребовались изменение функций которые были именно в этой библиотеке. Этого сделать не удалось ни сразу, ни после небольшого разбора библиотеки (запутана она малость).
Варианта 3:
1) Искать другую библиотеку (без гарантий успеха естественно)
2) Писать свой аналог (долго)
3) Выкатывать без этого функционала (в целом возможно) и доделать потом
Главное в том, что по срокам уже стоят совсем другие задачи и на такую нештатную ситуацию никакого времени не было заложено.
Кто в этом случае виноват в срыве сроков и почему? Сеньоров, тестеров никаких нет, которые бы проконтролировали программиста или помогли ему. Один программист и один менеджер проекта (он же маркетолог).
А может быть не хватило компетенции программиста разобраться в библиотеке? Или он сделал неверный выбор вначале решив использовать её а не какую-то другую?
Менеджер для того и нужен, чтобы самому оценивать сроки, а не спрашивать это с программиста. У программиста другая задача - писать код. Если он будет ещё и оценки времени делать, то он уже не программист, а менеджер.
Поэтому! менеджер должен вырасти из программиста, либо это должен быть очень хороший менеджер, который разбирается в программировании и технологиях.
В данном случае однозначно виноват менеджер.
но потребовались изменение функций которые были именно в этой библиотеке
Если эти изменения назрели уже после создания изначально обговоренного функционала, без каких-либо ТЗ, то разработчик не виноват. Невозможно предвидеть, какие еще костыли захочет видеть менеджер в продукте.
Никто не виноват. Требуется перепроектирование. Надо разбираться с этой функцией зачем она, сколько времени и усилий реально на неё потребуется. Винить кого-то "во вновь открывшихся обстоятельствах", особенно в команде из 2-х человек - это поставить первую точку на проекте.
У нас была подобная ситуация на хакатоне. Разрабы решили забабахать всё в модном телескопе(реакт+метеор), в итоге на макбуках всё заводилось, а у фронтэндщиков на писи-ноутах ничего не работало. В итоге запороли вообще всё, не было что выкатывать.
Виновата организация рабочего процесса. Потому что если кодер может себе позволить взять неизвестный инструмент на авось - часто получается именно вот так, как получилось.