Я считаю, что основной причиной дефектов программного обеспечения являются программисты.
Не то чтобы просто смешно, а потому, что одной из больших проблем, с которыми я столкнулся на своей работе, является плохой сбор требований в сочетании с плохим пониманием проблемной области, вызывающей серьезные дефекты и проблемы с юзабилити в проекте.
Частично это происходит из-за нежелания изучать / понимать терминологию конечного пользователя, что вызывает недоразумения.
Частично это происходит из-за слишком раннего разговора о технологиях с людьми, которые не понимают, о чем вы говорите или почему это важно.
Лучший пример этого был, когда я услышал, как один из программистов пытался выяснить, как долго будут содержаться вопросы / ответы в символах ... Я знал, что он пытался выяснить, какое поле размера использовать в базе данных, но Департамент, запрашивающий это, не имел ни малейшего понятия, почему это имеет значение - или что пробелы учитываются. Для нас это кажется очевидным, но для них это было настоящим откровением.