Не очень понятно, в каком смысле использованы слова "разработчик" и "программист". В команде разработки ПО есть тестировщики, а есть разработчики. Если не считать PM'а, девопсов и бизнес-аналитика, то это всё. "Программист" это обывательское слово, оно не отражает всё, что делает разработчик ПО.
Вообще, "не может" это фраза-триггер для владельца бизнеса, её лучше вообще не произносить никогда, если ты разработчик ПО. К тому же в 99 случаях из 100 эта фраза - ложь.
Если возник затык с каким-то багом, идём по нарастающей, в зависимости от природы проблемы.
Если разработчик не обладает навыками, которые нужны для того, чтобы исправить баг, отправляем этого разработчика на повышение квалификации или меняем его на другого. Вплоть до найма нового, с нужным скиллсетом.
Если у нас дедлайн, а разработчик с нужным набором навыков всё ещё ищет причину проблемы, то всегда можно сделать покерфейс и выпуститься, сделав пометку об этом баге в "известные проблемы", или вообще объявить баг фичей.
Если проблема в чужом коде, ищем возможность обойти проблемный код. Например, перестать его использовать. Если дропнуть чужой код невозможно по причинам бизнеса, можно связаться с разработчиками и попросить это исправить. Если с разработчиками связаться нельзя, мы пишем обёртку вокруг проблемного кода, настолько толстую, насколько нужно. Вплоть до полного повторения нужной функциональности, только без бага.
Если у нас не баг, а фундаментальная проблема в самой постановке задачи, что-то страшное, например, мы заявили, что наша утилита будет способна распознать голос на произвольном языке в заданной звуковой дорожке, а когда начали делать, оказалось, что это текущая проблема академическая в компьютерных науках, то это больше не забота разработчиков, это отправляется к бизнес-аналитику, PM'у и выше, к бизнесу. Либо маркетинг поумерит пыл, либо мы позоримся с тем, что есть, либо мы реально вложимся в исследования по-взрослому.
"Не может" в реальном продакшене не произносят.