Lavoro per una società di consulenza ingegneristica che combina design industriale, meccanica, elettronica e software. Per la loro natura - o forse semplicemente per la storia - la filosofia di sviluppo generale è stata cascata. Ma quando sono entrato mi ha sorpreso il fatto che Agile, che ora direi uno standard del settore, fosse a malapena sentito. Per quanto mi riguarda, pur restando scettico nei confronti di Agile, riconosco i suoi vantaggi sia per gli sviluppatori che per i clienti e sono stato propenso a promuoverne l'utilizzo.
Mi sembra chiaro che non puoi costruire hardware in modo Agile. È troppo dispendioso in termini di tempo e costoso "refactoring" una cosa fisica. Ciò significa che ci stiamo muovendo verso l'essere software-Agile e hardware-Waterfall, e il Project Manager sta facendo fatica a far lavorare le due cose insieme. Peggio ancora, diventa difficile quando siamo di fronte a fornire ai clienti un costo definitivo per un progetto. Agile non fa piani super e le proiezioni di velocità richiedono che un progetto sia attivo, in esecuzione e che alcuni sprint siano passati per essere significativi. Ciò significa che tendiamo a sopravvalutare come contingenza, facendo salire i nostri prezzi e la nostra competitività diminuisce.
Mi sembra allora che
Vendiamo Agile esplicitamente al cliente e otteniamo il loro buy-in per ricevere nuove iterazioni di software per sprint, potendo aggiungere al backlog e dare la priorità alla prossima tranche di lavoro. Li convinciamo che questo è un modo di lavorare senza fronzoli e che la cascata non è realistica e si traduce in overspend. Il Product Owner è del cliente in questo modello. In che modo quindi ci avviciniamo ai contratti, affermando quanto fatturiamo per il software? Come evitare l'impressione che si tratti di un flusso di entrate illimitato in cui è nel nostro interesse impiegare tutto il tempo che ci piace?
Adottiamo Agile solo internamente. Il Product Owner è uno dei nostri ragazzi / ragazze. Il client ottiene solo una versione alpha / beta / release del software come in cascata. Se siamo nel corso del tempo, possiamo allora fondere lo slittamento nelle fasi finali? È persino agile?
In breve, avere un contratto tra noi e un cliente sembra un modo molto poco agile di fare le cose. Eppure la cascata è destinata a fallire in un ambiente in cui vediamo ogni giorno che non solo non comprendiamo il dominio del problema il giorno 1 di un progetto, né il client. E come facciamo Agile per software e cascata per hardware - c'è un software in grado di gestire entrambi sotto un unico ombrello? Come sposiamo questi mondi?