Из личного опыта: большинство заказчиков сами не знают, что им надо. Естественно, в таких случаях ТЗ пишет разработчик. Но, советую, писать на по "казенным" шаблонам, а простым доступным "человеческим" языком - самое главное, чтобы заказчик понял, что ему на самом деле надо, а не "тонул" в ему непонятных терминах. Сначала - попроще, а когда почувствуете, что заказчик хочет и может (!) вникнуть поглубже - дописывать отдельными дополнениями к ТЗ (т.е. от простого к сложному).