Come educare i manager aziendali sulla complessità dell'aggiunta di nuove funzionalità? [duplicare]

12

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?

    
posta Derrick Miller 15.09.2013 - 01:02
fonte

3 risposte

7

Alcuni consigli. Innanzitutto, utilizza un'analogia: fingi di implementare questo senza computer , ad esempio eseguendo la posta (non la posta elettronica). Quando aggiungi funzionalità, visualizza il modulo che i clienti compilano diventando sempre più complesso. Pensa all'aumentata ampiezza delle competenze richieste dal personale e al numero di membri del personale necessari per adempiere a ciascuna funzione. Parliamo degli aumenti dei costi per gestire l'aumento del personale, come la gestione, la formazione, le risorse umane, le buste paga e così via. I computer possono farlo più velocemente, ma la maggior parte degli altri aspetti si applica ancora.

In secondo luogo, raccoglie codice e metriche QA come il numero di bug rilevati, la complessità del codice, la copertura del test automatizzato, il tempo di sviluppo, il refactoring del tempo (se presente) e così via. Se si dispone del controllo qualità, acquisire il numero di test richiesti per una regressione completa e il tempo necessario per eseguirli tutti. Sostenere l'aumento dei costi con i fatti li rende molto più difficili da discutere. Anche un semplice diagramma che mostri il numero e le interdipendenze tra i diversi moduli può aiutare.

Terzo, raccogliere analisi su come i clienti utilizzano il tuo software. Se crei una funzione che nessuno usa, essere in grado di puntare a una sorgente di verità generata automaticamente e verificabile può aiutarti a dare priorità al lavoro (nella peggiore delle ipotesi) o ad evitare caratteristiche non necessarie (nel migliore dei casi).

In quarto luogo, ottieni un'opinione esterna . Questo può o non può essere praticabile a seconda delle dimensioni e della struttura della società, ma attirare qualcuno di alto livello da altrove e ottenere un'opinione imparziale. Probabilmente suggeriranno un mix di miglioramenti alle pratiche di sviluppo (una vittoria per te in modo da ottenere tempo per il refactoring o l'aumento della tua produzione) e una migliore definizione delle priorità (anche una vittoria per te in modo da avere meno funzionalità migliori). In alternativa, suggerisci letture rilevanti come "Lean Startup" di Eric Ries .

Ultimo ma non meno importante, prova a capire il caso aziendale . Perché pensi che l'azienda stia guidando queste nuove funzionalità tanto quanto loro? Stanno cercando di tenere il passo con i concorrenti? Sono sotto pressione dalla loro gestione per fornire? Forse le persone che ti guidano sono il sintomo e non la causa. Una mentalità "noi e loro" è controproducente . All'inizio può essere estremamente difficile, ma questo ti aiuterà a lungo termine.

    
risposta data 15.09.2013 - 02:14
fonte
2

Sono stato nei tuoi panni prima. Ed è un po 'più semplice di quanto pensi. Mettiti nei loro panni. Il che significa che devi smettere di usare parole come frattale e codice base ... non hanno idea di cosa significhi. Non sto cercando di essere cattivo qui. Tuttavia, devi indirizzare il tuo pubblico in un modo che capiranno. Nel mio caso li ho coinvolti pienamente nel processo di sviluppo e mi sono assicurato che sapessero cosa stava facendo ogni risorsa e in che modo l'aggiunta di una nuova funzionalità avrebbe avuto un impatto su quella risorsa. Potresti anche dover rivelare un costo per loro facendogli sapere che questo ingegnere che sta lavorando sulla funzione che hai richiesto la settimana scorsa viene pagato x all'ora. Ora hai bisogno che lui divida il suo tempo per lavorare su queste due altre funzionalità che vorrai la prossima settimana. È l'unico ingegnere della squadra con questa abilità. I manager aziendali devono conoscere molti più dettagli, ma in modo meno tecnico. Ha senso?

    
risposta data 16.09.2013 - 05:25
fonte
1

Uso un modo semplice per gestire le richieste di aggiunta di nuove funzionalità. Ogni nuova funzionalità fuori dall'ambito iniziale dovrebbe essere stimata.

Quindi, quando il cliente chiede di aggiungere alcune funzionalità, io e il mio team pensiamo a cosa dovrebbe essere fatto e come potrebbe essere fatto. Quando abbiamo tutte le informazioni necessarie prepariamo le stime e descrivere quali parti del sistema devono essere aggiornate per fare eseguire la funzionalità richiesta.

Senza molte parole tecniche. E quando il cliente vede l'ETA, può calcolare il prezzo finale. Poi decide, vuole questa caratteristica o no.

Non essere d'accordo su ogni richiesta del cliente senza parole. Ogni caratteristica dovrebbe essere discussa, concordata e valutata.

    
risposta data 17.09.2013 - 10:21
fonte