Ну смотрите: задача програмиста - написать, задача тестера-найти bug в программе, програмист не может критически посмотреть на своё любимое дитя-код, а тестер должен у будет рассматривать негативные сценарии. Програмер даже может знать что у него есть слабые мест в коде, но время и начальство поджимает, а задача тестера найти проблему и настоять на изменении в коде доказав что такой продукт не может выйти на маркет/попасть в руки кастомера. Начальники обычно разные, вот они и доказывают друг другу или приходят к компромису. И когда доходит до hiring, всё это учитывают и припоминают, и лучше возьмут кого то без опыта,  но доказавшего что он может мыслить не ординарно, чем бывшего/настоящего програмиста только потому что он может читать код, но это ведь и не требуется. Хотя у наших програмистов и есть пару собственных unit testers, но у нас и индустрия регулируемая, ответственность большая, бумаги, проверки, auditors...