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