I don't think the rest of the business is going to help because they have no sense of development life cycles, and requirements get changed all the time within a single sprint.
Una cosa che generalmente le aziende ascoltano è tutto ciò che ha un impatto sul budget. Se i requisiti in continua evoluzione sono stati fatti in modo frivolo, allora si vorrà creare un argomento con esempi dettagliati per mostrare come tale cambiamento influenzi l'efficienza del team, crea lavoro che si sovrappone e costa ai soldi dell'azienda. Se, d'altra parte, le modifiche sono necessarie e potrebbero comportare una perdita per l'azienda se non sono state eseguite, potrebbe essere semplicemente necessario indossarle e trovare un modo per far fronte a requisiti in costante cambiamento.
Tuttavia, è stata la mia esperienza che quando le cose cambiano a un ritmo così elevato come suggerito, potrebbe essere dovuto ai seguenti motivi:
- Il concetto è sperimentale, nel qual caso potresti voler aumentare tutte queste modifiche piuttosto che implementarle direttamente nel codice di produzione.
- Il concetto non è stato analizzato a fondo, il che suggerisce che il prodotto non è stato pensato e il requisito è quello di codificare il prodotto mentre è stato pensato.
- Le pressioni costanti del mercato e della concorrenza determinano un cambiamento impulsivo
- Una scarsa relazione tra i responsabili del progetto, i manager e il team di implementazione, in termini di capacità di tutti gli stakeholder di comunicare liberamente sulla necessità di cambiare.
- Scarsa prioritizzazione delle attività, e questo può essere un errore sia del personale di gestione che di implementazione.
A volte i proprietari di progetti non sanno veramente come dovrebbe funzionare il prodotto, perché hanno in mente un concetto di base, tuttavia sentono di aver bisogno di vedere come funziona prima di prendere una decisione. Ciò può essere dovuto al fatto che il dominio del problema non è molto ben compreso o perché non hanno realmente pensato a come una funzione aziendale si tradurrà in una soluzione basata su software. La prototipazione può essere utile in questi casi. È possibile prototipizzare facilmente GUI con oggetti finti se le modifiche sono estetiche, oppure è possibile utilizzare i test unitari come mezzo per testare e ottimizzare le modifiche che sono algoritmiche. Tuttavia, la chiave è garantire che i cambiamenti vengano applicati il più sistematicamente possibile, in modo da mantenere il processo relativamente snello e meno costoso.
We have suggested setting up processes to dodge those requirement changes and educate the business about development life cycles.
Questo è un buon inizio e ti consente di interagire con il management per cercare di ottenere risultati positivi in modo misurato e strutturato. L'istruzione è il metodo più efficace per affrontare problemi in cui gli sviluppatori e la gestione sono fuori sincronia ideologica. Tuttavia, per ottenere il massimo beneficio, l'educazione deve essere bidirezionale, così come la comunicazione. Devi insegnare a te stesso e al management a comunicare i tuoi bisogni e ad aiutarsi a vicenda per comprendere le motivazioni che guidano tali bisogni. Dire che è "troppo difficile" o "molto lavoro" o "una perdita di tempo" si presenterà solo come lamentoso e "pigro". Il tuo ragionamento deve essere chiaro e in una lingua che dimostri che stai lavorando per ottenere risultati positivi per l'azienda e il prodotto su cui stai lavorando e che i tuoi motivi sono con in mente questi interessi. Allo stesso modo, potrebbe essere necessario imparare ad accettare le ragioni per cui le tute ti danno perché sentono il bisogno di cambiare le cose così rapidamente. Forse tra di voi sarete in grado di trovare una buona via di mezzo quando entrambe le parti sono in grado di comprendere il punto di vista reciproco.
What if the business fails to get the idea? What would you do?
Se non raggiungi il risultato che speri, forse i tempi non sono corretti. Forse i tuoi argomenti devono essere fatti in modo diverso. Forse hai sbagliato tutto e hai bisogno di saperne di più su ciò che sta pensando l'altra parte. In definitiva, se il tuo approccio particolare fallisce, sta a te decidere quanto sia importante per te avere a che fare. Tuttavia, piuttosto che preoccuparti di ciò che può o non può accadere, pensa in modo positivo e semplicemente decidi cosa puoi fare oggi. I problemi di domani non sono necessariamente garantiti e non valgono lo stress di preoccuparsi finché non si verificano effettivamente.
Un ultimo punto da considerare. Il tuo CTO è probabilmente preoccupato per molti degli stessi problemi che tu sei. Certamente avere un decreto per adottare il TDD mi suggerisce che questo potrebbe essere il caso dato che il TDD è altamente efficace in situazioni in cui il codice è spesso soggetto a cambiamenti. In uno scenario test-first, i test non diventano inutili il giorno successivo perché forniscono una rete di sicurezza per lavorare all'interno, consentendo di applicare le modifiche rapidamente e con sicurezza. Tuttavia, dovrai ancora trovare un modo per gestire le aspettative delle persone che richiedono modifiche al fine di aiutare a gestire il cambiamento in modo efficiente.