Был у меня проект с системой тестирования. Вроде всё собрали: логика работает, вопросы идут как надо, результат считается. Проверяю у себя - всё нормально.
Потом начинаем тестировать на разных телефонах, и вот там уже начинается самое интересное. У одного человека всё работает. У другого дублируются вопросы. На каком-то устройстве часть логики вообще ведёт себя не так, как должна. Где-то ошибка появляется только после определённого действия. И вот здесь очень хорошо видно разницу между я написал код и я сделал работающий продукт. Можно сколько угодно говорить: У меня всё работает, но если у клиента на телефоне не работает - значит не работает.
Поэтому приходилось идти по каждому случаю отдельно: что за устройство, на каком шаге всё сломалось, что человек нажал до этого, можем ли повторить ошибку. Исправили, снова тестируем, нашли следующую проблему, опять исправляем. И поэтому я вообще не люблю фразу всё сделано по ТЗ. Мне не нужен сценарий, который работает только у меня на компьютере. Мне нужен результат, которым человек реально может пользоваться.
Потому что клиент в итоге платит не за код. Он платит за то, чтобы это работало.