К программисту должно поступать нормальное тз. Изменение требований в его рамках, да это нормально. Но когда заказчик любит попищдеть о чём-то в стороне, но не может нормально сформулировать требования к предметной области, это не нормально. За 10 лет разработки я всего 1 раз видел чёткое тз, описывающее функционирование системы. Да были движения туда-сюда. Но они вполне укладывались в предметную область.
Очевидно, потому что оно не должно :)
«Нормальное тз» - это миф, придуманный людьми, которые не хотят вовлекаться в то, зачем вообще нужно программирование.
А бизнес меняется, как и его восприятие.
За полгода хороший бизнесмен успевает пересмотреть вообще структуру своегот мировосприятия, а программист с «нормальным тз» только приступит к «архитектуре каркаса слоя представления» (эту безумную фразу я взял из реальной сметы. Инвестор спрашивал, не обманывают ли его, выклянчивая деньги на фигню)