One of the major tasks on my plate is communicating with the client. One thing I find particularly difficult is dealing with deadlines because they are mandated by the client and I'm frequently not consulted.
Se dovresti essere responsabile della comunicazione con il cliente, perché non sei consultato sulla pianificazione (e sul budget) in modo da poter comunicare queste informazioni tra le persone responsabili per loro all'interno della tua organizzazione e le loro controparti dal lato del cliente? Penso che risolvere questo problema sarà un enorme vantaggio per te, il tuo team e il tuo progetto.
The client comes up with a feature they want to add, Feature X. Feature X would look good in the next week's app release that is about 6 business days away. At this point, the feature request needs to go through approval and there are frequently other dependencies that need to be deal with. Eventually, N days later, the feature request trickles down to my team. Even if the original dead line (that was set by a non-developer manager) was achievable it no longer is.
Questo sistema per la pianificazione sembra strano, a dir poco.
Nelle mie esperienze, il cliente firma per una particolare versione. Potrebbero inviare un elenco di funzionalità e modifiche che desiderano e quando lo desiderano, quindi negoziare con il team che crea il software. Oppure potrebbero fornire un elenco di funzionalità prioritarie al team di sviluppo e il team di sviluppo fornisce stime su quando possono spedire varie serie di funzionalità. Ci sono anche altre varianti.
Ma una cosa che non ho mai visto è che un cliente sia in grado di cambiare il rilascio fino a tardi nel gioco, specialmente non a una settimana dalla pubblicazione. Non sembra giusto mettere i progettisti, gli sviluppatori e i tester sotto questo tipo di pressione. Se stai facendo uno sviluppo iterativo, se si tratta di una funzionalità con priorità alta, assicurati di aggiungerlo al modulo di backlog e prenderlo il prima possibile. Se non è una funzione con priorità alta, sicuramente non ne ha bisogno durante questa versione e può aspettare fino al prossimo.
Raccomando di impostare alcune regole di base che soddisfino i team di progettazione, sviluppo, collaudo e consegna nonché i clienti in merito alla funzionalità di blocco, blocco dei codici e consegne. Mettili per iscritto, prendi l'impegno di tutti e atteniti ad esso. Se ti sposti una volta, dovrai piegarti di più e perderai il controllo del processo.
Unfortunately, there's not much I can do because I'm not in a position of power here.
Potresti non esserlo, da solo. Ma sembra che i tuoi progettisti e / o sviluppatori e / o tester siano sottoposti a molta pressione per rispettare gli orari. Dovresti sederti con i tuoi superiori come una squadra e spiegare la situazione. Innanzitutto, fai in modo che la tua organizzazione si impegni a migliorare il processo, quindi collabora con il cliente per ottenere il suo consenso su come le cose funzioneranno.
This feels a lot like I am making excuses though.
Quando inizi a scusarti, potrebbe essere il momento di fare una Conversazione difficile o un Conversazione cruciale . Consiglierei uno di quei due libri. La loro lettura ha contribuito a migliorare le mie capacità comunicative, soprattutto quando devi affrontare una situazione difficile in cui le tensioni sono alte su tutti i lati.
Per indirizzare alcune delle altre risposte.
Sadly, power is mostly taken by yourself rather than granted to you by others.
Non so dove andrà Andrea con questo. Sì, è necessario correggere il flusso di informazioni. Ma è necessario lavorare con i PM e il cliente per assicurarsi che tutti sappiano cosa è stato (presumo comunque) concordato all'inizio del progetto. Se l'accordo, per qualsiasi motivo, non funziona, rivisitalo e ridistribuisci lavoro e ruoli per le persone più adatte a loro.
Non prendi il potere o combatti il potere, ma lavori con esso, cercando di domarlo e farlo funzionare per tutti.
The problem is - customer mostly know business value for the feature, but don't realize its complexity. Just discuss and clarify. Always.
Questa citazione da loki2302 è praticamente azzeccata . Uno dei tuoi compiti come ingegnere del software è quello di assicurarti che le persone giuste sappiano cose come quanto sia difficile un compito, quanto tempo ci vorrà, e quali tipi di opzioni e rischi esistono nel fare qualcosa. In qualità di comunicatore principale per il tuo team, trasmettere queste informazioni dalla tua organizzazione al tuo cliente è, in teoria, il tuo lavoro.