Смотря что подразумевать под ТЗ.
Обычно это постановка задачи (ЦА, структура, набор модулей, дополнительный функционал). Если речь идет про постановку задачи, то этим должен заниматься либо аналитик, либо проектировщик интерфейсов.
Техническое задание в классическом понимании (архитектура, интеграция, технологические решения и пр.) должен писать тех.специалист. Как правило либо архитектор, либо разработчик.