Конфликты на ревью - это отдельная тема, я ей посвящаю минут 10-15 на собесах, предлагаю не оверинженирить эту дискуссию дальше, она и так сложная.
Люди не часто нарушают SOLID, и я не думаю, что они это делают со зла или от низкой квалификации. Часто человек увлекается, или пробует решение, оно не подходит, и вынужден переписывать большие куски. Также культура самопроверки - это скилл, и не у всех он из коробки прокачан. Одна из целей код ревью - помогать в прокачке этого скилла, кстати.
TDD пробовал на пет-проектах и люблю практику, что фикс бага начинается с написания теста, который краснеет на этом баге. TDD абсолютно неприменим в ситуациях, когда изменения требований случаются слишком часто, а также неудобен в режиме множественных продуктовых экспериментов, когда гипотезы частично не подтверждаются, а частично трансформируются в следующие гипотезы и так по цепочке.
Повторю свой ответ: людям свойственно ошибаться, и с повышением сложности проекта - ошибаемся мы чаще. Код ревью решает обе половины этого уравнения - позволяет видеть, исправлять ошибки и совершать их реже в будущем, а также снижать сложность.