Non sono contro l'agile / TDD e lo uso nella maggior parte delle circostanze. Tuttavia, in alcune circostanze, sento che non funziona bene.
Ad esempio, l'altro giorno stavo creando un'app di elaborazione dati abbastanza complessa. In un mondo ideale strutturerei le fondamenta, disegnerò i componenti, scriverò test unitari e demo su ogni sprint mentre finisco "feature". In pratica comunque, non penso che funzioni prima che la prima versione sia rilasciata perché:
-
Il design delle fondamenta / componenti cambia frequentemente come immagino
come fare le cose meglio e semplici test driver sono molto più utili
rispetto ai test unitari più ricchi
Se stai costruendo un'app MVC., La base non cambierà, ma con un'app. dove più o meno costruisci la struttura tu stesso, e non sai come fare le cose meglio in anticipo questo non è il caso. Mi sento test driver semplici con no le verifiche automatizzate sono molto più utili dei test unitari più ricchi a questo stage. - Finché non è disponibile l'infrastruttura di base, è difficile interromperla buttare giù le cose in singole "funzionalità" Se hai già un MVC quadro, questo è facile. Ma immagina come è il primo framework MVC mai stato sviluppato. Deve essere stato molto meno utile da pensare cose come "caratteristiche" individuali nelle fasi iniziali, perché il la cosa più importante era capire il principio e la filosofia della separazione Modella, Visualizza e controlla e come farlo.
-
Le demo aiutano molto poco fino a una parte considerevole dell'app. è fatto
In un Interfaccia utente, puoi semplicemente creare interfacce e ricevi molti preziosi feedback Tuttavia, ad es. in un web crawler, non puoi davvero fare una dimostrazione significativa a persone non tecniche fino a un bel po ' è fatto, e anche se lo facessi, di solito non saranno comunque in grado di fornire input utili. Sicuro, puoi dimostrarlo ai tuoi colleghi sviluppatori, ma è difficile da dare input basato su qualche output di log. Di solito è molto più produttivo spiega come hai fatto le cose e come pensi di fare le cose, forse mostrando illustrazioni e codice, e ottieni feedback in questo modo.
O sto sbagliando?