Про ответственность

Конечно, заказчик часто сам устанавливает правила игры: сотрудники работают за зарплату, а кому идёт прибыль их не касается. В результате зарплату люди получают исправно, больше их ничего не волнует, а прибыль заказчик забирает сам, если сможет. Но иногда менеджерам всё-таки приходится нести ответственность за проваленные проекты.
Хороший разработчик часто видит проблемы проекта не хуже менеджера, потому что знает, какая функциональность уже реализована, сколько в ней багов, какие есть узкие места и насколько продуманы будущие изменения. Но в подавляющем большинстве случаев разработчик не имеет полномочий разговаривать напрямую с заказчиком, а о проблемах он может сообщить разве что своему непосредственному менеджеру. Предположим, что по сути вопроса менеджер ничего предпринять не может, но видит что человек недоволен. Если недовольного нельзя уволить сразу (незаменимый специалист, успел сделать много полезного), то ему сначала поднимают зарплату, а потом увольняют за низкую производительность.
Типичный программист не задумывается, нужен ли кому-нибудь продукт, который он разрабатывает. В результате появляется много людей, которые над успешными проектами вообще никогда не работали, просто не стремились к этому. Более того, уже есть и менеджеры, которым всё равно каким проектом управлять, потому что работа для них это не результат, а процесс, как у рабочего на конвейере.