Ritengo che la causa principale dei difetti del software siano i programmatori.
Non dicendo che solo sia divertente, ma perché uno dei grandi problemi che ho osservato nel mio lavoro è la scarsa raccolta dei requisiti, unita a una scarsa comprensione del dominio del problema, che causa gravi difetti e problemi di usabilità nel progetto.
Parte di ciò deriva dal non voler imparare / comprendere la terminologia dell'utente finale, causando equivoci.
In parte ciò deriva dal parlare di tecnologia troppo presto nel processo a persone che non hanno la minima idea di cosa stai parlando o del perché è importante.
Il miglior esempio è stato quando ho sentito uno dei programmatori che cercava di capire per quanto tempo le domande / risposte sarebbero state nei personaggi ... Sapevo che stava cercando di capire quale campo dimensione usare nel database ma il dipartimento che lo richiedeva non aveva il motivo per cui era importante - o che gli spazi fossero contati. Per noi sembra ovvio, ma per loro è stata una vera rivelazione.