Ho intenzione di uscire su un arto qui e dichiarare con brutale onestà che è letteralmente una perdita di tempo rituale. (Nella maggior parte delle situazioni.)
Ho comprato un libro su Unit Testing che parlava anche di TDD, e mentre sono d'accordo con i benefici di UT, dopo circa cento ore di prova di TDD, ho rinunciato a questo per una miriade di ragioni. Sto scrivendo qui, ma TDD:
- Non è una documentazione migliore della vera documentazione.
- Non rileva bug o regressioni .
- In realtà non rende i miei progetti migliori di quanto non siano se applico alcuni concetti di programmazione e componibilità funzionali .
- È il tempo che potrebbe essere speso meglio facendo revisioni del codice o lucidando la documentazione e le specifiche.
- Fornisce ai gestori un falso senso di sicurezza quando visualizzano un elenco di centinaia di icone verdi.
- Migliora la produttività nell'implementazione di algoritmi con mappature input-output limitate.
- È goffo nel fatto che potresti sapere cosa stai facendo a causa di TDD, ma non stai guadagnando alcuna comprensione del perché funzioni così bene, perché i tuoi progetti escono nel modo in cui funzionano.
Un'altra preoccupazione è il grado discusso di perfezione a cui si deve fare TDD per farlo con successo. Alcuni insistono sul fatto che se il TDD non viene svolto in modo persistente da tutti i membri del team dall'inizio del progetto, ne soffrirai solo. Altri insistono sul fatto che nessuno fa mai TDD dal libro. Se entrambi sono veri, ne consegue che i professionisti della TDD soffrono, che se ne rendano conto o meno.
Naturalmente, se si sostiene che facendo le cose in modo simile al TDD, si arriva a progetti che possono funzionare facilmente con TDD, beh, ci sono modi molto più rapidi per raggiungerlo - vale a dire, studiando effettivamente i concetti di componibilità. Ci sono molte risorse là fuori, anche molta rigorosa teoria matematica (soprattutto nella programmazione funzionale ma anche in altri campi). Perché non dedicare tutto il tempo all'apprendimento del TDD ?
Culturalmente, TDD mostra i sintomi di essere una pratica rituale. Cavalca la colpa; incoraggia la procedura sulla comprensione; ha un sacco di dottrine e slogan ("fingere finché non lo fai" è davvero abbastanza allarmante se lo guardi in modo obiettivo). La definizione di Wikipedia del termine "rituale" è in effetti abbastanza appropriata:
In psicologia, il termine rituale è talvolta usato in senso tecnico per un comportamento ripetitivo usato sistematicamente da una persona per neutralizzare o prevenire l'ansia; è un sintomo del disturbo ossessivo-compulsivo.