Без понимания заказчиком каждого пункта ТЗ очень высока вероятность, что ты сделаешь совсем не то, что ему нужно
В принципе, это так :) Вопрос в том, НАСКОЛЬКО не то. Поскольку заказчик в подавляющем большинстве случаев сам не знает точно, что именно его устроит, и не узнает, пока не начнет реально пользоваться новой системой, то эта вероятность даже при полном понимании заказчиком всех пунктов ТЗ есть и весьма немала. Поэтому делается примерно то, что нужно заказчику (в той мере, в которой он смог сам понять и объяснить свои потребности - в чем, конечно, мы ему старались помочь), а потом при необходимости делаются доработки, когда заказчик начинает лучше понимать, чего ему не хватает, что он не учел, не подумал, выразил не так, на практике работает не так, как ему представлялось, итд. В процессе и понимание заказчиком проблематики улучшается с каждой итерацией.