Программисты пишут код! Хорошие программисты создают алгоритм и на его основе его пишут код! Но что бы понять что должен делать алгоритм, нужно хорошо проработанное тз. Хорошо, если программисту принесли хорошо проработанное тз, если это не так, то программист создает его сам.
Получается так, что программисты создают тз, общаются с заказчиком, выясняют мельчайшие подробности того, что нужно для качественной работы программы!