Совсем недавно я изменил свою точку зрения по поводу ТЗ и считаю что ТЗ должен составлять именно программист вместе с заказчиком, ибо заказчик не настолько силен что бы сказать что он хочет.
Представьте если вы хотите заказать кухню себе а у вам говорят мол дайте нам подробные данные какая она должна быть, все размеры, радиусы скругления, размеры всех шкафчиков, цвет и т.д. естественно что вы, человек мало понимающий в этом, сразу уйдете от такого исполнителя, и совсем другое дело когда у вас спросят что вам нравится и попробуют сами что-то подобрать, использовав свои профессиональные знания, результат будет куда лучше.
А статья получилась достаточно информационной, за стать однозначно +