Gestiamo un'applicazione web per un cliente che richiede l'aggiunta di nuove funzionalità a un ritmo incredibile. Abbiamo fatto del nostro meglio per soddisfare le loro richieste e, di conseguenza, la base di codice è cresciuta in modo esponenziale. Ora ci sono così tanti moduli, sottosistemi, controllori, librerie di classi, test unitari, API, ecc. Che sta iniziando a richiedere più tempo per lavorare con tutta la complessità ogni volta che aggiungiamo una nuova funzionalità. Abbiamo anche dovuto coinvolgere altre persone nel progetto per prendere in carico aspetti come il controllo qualità e la messa in scena, quindi gli sviluppatori principali possono concentrarsi sullo sviluppo.
Sfortunatamente, il cliente si sta arrabbiando per il fatto che il costo per ogni nuova funzionalità aumenta. Sembrano aspettarsi che possiamo aggiungere nuove funzionalità ad infinitum e il costo di ogni funzione rimarrà lineare.
Ho ripetutamente cercato di spiegare loro che non funziona in questo modo - che la base di codice si espande in modo frattale man mano che vengono aggiunte tutte queste funzionalità. Ho spiegato che il modo migliore per mantenere bassi i costi è quello di essere giudiziosi su quali nuove funzionalità sono davvero necessarie. Ma, o non capiscono, o pensano che li stia cacciando. Stanno semplicemente roteando gli occhi e si arrabbiano. Sono tutti completamente non tecnici e non hanno idea di cosa possa fare il software di scrittura.
C'è un modo in cui posso spiegarlo usando un linguaggio commerciale, che potrebbe aiutarli a capire meglio? Ci sono delle visualizzazioni là fuori, che illustrano la crescita di una base di codice nel tempo? Qualche altro suggerimento su come trattare questo cliente?