Struttura del progetto per le generazioni di prodotti che si sovrappongono?

1

La nostra azienda sta sviluppando in parallelo 2 generazioni di prodotto. Il nostro ciclo di prodotti è di circa 2-3 anni. Oggi stiamo lavorando su:

  • generazione N "produzione": prossimo prodotto da rilasciare, creare oggetti sul mercato, nuove funzionalità, correggere bug
  • generazione N + 1 "ricerca": concept work, studi, prototipi, ricerca, analisi dei requisiti

Seguiamo la metodologia Scrum (ruoli, arretrato, sprint, ...) nel nostro team, laddove possibile, ma la transizione è ancora in corso. In particolare: il resto della compagnia è (ancora) seguendo un approccio a cascata. Il focus della nostra gestione è principalmente sulla generazione N.

Fino ad ora la nostra azienda ha provato le seguenti strutture di progetto, ma tutte presentano gravi inconvenienti:

simboli:

(+) = buono

(-) = male

  • Due team separati per la produzione (generazione N) e la ricerca (generazione N + 1):

    • (+) buoni progressi nella ricerca per la generazione N + 1
    • (+) Il team di produzione può concentrarsi sulla generazione N.
    • (-) Il team di ricerca ha il lavoro più interessante, il lavoro di produzione non è così popolare.
    • (-) Perdita di conoscenza durante il trasferimento di un progetto dalla ricerca alla produzione.
    • (-) Il team di ricerca non ha mai riscontrato i problemi del team di produzione e del vice versa. Soprattutto il team di ricerca non esamina tutti gli aspetti rilevanti.
  • Un team per entrambe le generazioni:

    • (+) Buona condivisione della conoscenza tra generazioni.
    • (+) Non è richiesto alcun passaggio di consegne.
    • (-) N + 1 non ottiene l'attenzione che merita dato che la gestione si concentra su N.
    • (-) Quindi non ci sono molte innovazioni nella generazione N + 1 in quanto non ne avevamo il tempo.
  • Avere una sola squadra, ma dedicare 2 (o 3) "ricercatori" a concentrarsi sulla generazione N + 1:

    • (+) Buona condivisione della conoscenza tra generazioni.
    • (+) Non è richiesto alcun passaggio di consegne.
    • (-) All'inizio: riunioni inefficienti (quotidianamente, pianificazione sprint) poiché i due sottogruppi lavorano su argomenti diversi.
    • (-) Alla fine: il progresso della ricerca è lento, poiché i ricercatori vengono coinvolti in problemi di produzione.

Come dovremmo impostare i nostri progetti in questo ambiente?

    
posta ChrisK 10.03.2015 - 14:24
fonte

2 risposte

1

Potresti seguire l'approccio dei due team e ridurre gli impatti negativi di:

  • consente agli sviluppatori di lavorare in entrambi i team quando ha senso scambiare le risorse del team intorno a
  • documentare e presentare lavori di ricerca agli sviluppatori del team di produzione per consentire loro di sollevare dubbi o mettere in evidenza cose di cui il team di ricerca non è a conoscenza, magari mettendo in atto presentazioni regolari, ad es. ogni venerdì pomeriggio o invitando i membri del team di produzione a ricercare demo di sprint alla fine di ogni sprint

Un altro approccio sarebbe quello di avere un team e chiedere alla direzione di nominare un proprietario del prodotto per creare un backlog priorizzato su entrambi i flussi di lavoro. Il team non dovrebbe fare un lavoro che non è prezioso per il business. Il proprietario del prodotto deve dare la priorità in base al valore aziendale, quindi quanto è prezioso ciascun aspetto del business (che si tratti di ricerca o produzione).

Sì, questo potrebbe significare che il lavoro di produzione è più prezioso, quindi la priorità è più alta; ma se la definizione delle priorità viene effettuata in base al valore aziendale e la ricerca per N + 1 garantisce che l'azienda rimanga competitiva sul mercato, il lavoro di ricerca potrebbe essere priorizzato rispetto ad alcune delle caratteristiche di produzione.

    
risposta data 10.03.2015 - 15:05
fonte
0

Mantieni la stessa squadra ma diversi rami nel tuo SCM. Generalmente il tuo prodotto di generazione N sarà più stabile, quindi dovresti ottenere (cherrypick) il codice stabile o eventuali miglioramenti rilevanti dal ramo N a N + 1.

Gli stessi sviluppatori che hanno lavorato alla feature X nel prodotto N funzionano con la stessa funzione nel prodotto N + 1. In questo modo avranno familiarità sia con le codebase sia con qualsiasi migrazione di codice o unione di codice. Inoltre, li renderà felici mentre lavorano sia sul livello di produzione che su una tecnologia all'avanguardia. Basta focalizzare la gestione su N + 1 oltre a N.

A seconda della situazione, puoi cambiare gli sviluppatori da un prodotto a un altro - ad esempio il prodotto N richiede una patch critica quindi il tuo team che lavora su N + 1 può impiegare una settimana per lavorare su N. Allo stesso modo supponiamo di aver implementato un reporting stabile framework in N e vogliono un framework di reporting all'avanguardia in N + 1, avere lo stesso team per portare i cambiamenti da N a N + 1 e anche migliorare N + 1 con la tecnologia più recente. In questo modo tutti gli sviluppatori lavoreranno come un singolo team, il che è importante perché dopo tutto N e N + 1 sono lo stesso prodotto, i tuoi prodotti saranno più coerenti e ti aiuteranno a lungo termine nella migrazione dei clienti, nella devops, ecc.

nota in calce: Apple ha fatto mac e lisa contemporaneamente negli anni '80, guidando un cuneo tra gli sviluppatori dei team. Vuoi una sinergia all'interno dell'azienda, specialmente se le sue diverse iterazioni dello stesso prodotto.

    
risposta data 10.03.2015 - 15:36
fonte

Leggi altre domande sui tag