Considero que la causa principal de los defectos de software son los programadores.
No digo eso solo para ser divertido, sino porque uno de los grandes problemas que he observado en mi trabajo es la falta de recopilación de requisitos, junto con una comprensión deficiente del dominio del problema, que causa defectos importantes y problemas de usabilidad en el proyecto.
Parte de eso proviene de no estar dispuesto a aprender / comprender la terminología del usuario final, lo que causa malentendidos.
Parte de eso proviene de hablar de tecnología demasiado temprano en el proceso para las personas que no tienen idea de lo que estás hablando o por qué es importante.
El mejor ejemplo de eso fue cuando escuché a uno de los programadores tratando de averiguar cuánto tiempo iban a estar las preguntas / respuestas en caracteres ... Sabía que estaba tratando de averiguar qué tamaño de campo usar en la base de datos, pero el el departamento que solicitó esto no era el más confuso por qué eso importaba, o que los espacios contaban. Para nosotros eso parece obvio, pero para ellos fue una verdadera revelación.