Come possono gli architetti lavorare con i team Scrum autoorganizzanti?


20

Un'organizzazione con un numero di agili team Scrum ha anche un piccolo gruppo di persone nominate come "architetti aziendali". Il gruppo EA funge da controllo e gatekeeper per qualità e aderenza alle decisioni. Ciò porta a sovrapposizioni tra la decisione del team e le decisioni EA.

Ad esempio, il team potrebbe voler utilizzare la libreria X o utilizzare REST invece di SOAP, ma l'EA non lo approva.

Ora, questo può portare alla frustrazione quando le decisioni del team vengono annullate. Se preso abbastanza lontano, può potenzialmente portare a una situazione in cui il popolo EA "prende" tutto il potere e il team finisce per sentirsi demotivato e per niente agile.

Le guide Scrum hanno questo da dire al riguardo:

Auto-organizzazione: nessuno (nemmeno lo Scrum Master) dice al Team di Sviluppo come trasformare il Product Backlog in Incrementi di funzionalità potenzialmente rilasciabili.

È ragionevole? Il team EA dovrebbe essere sciolto? Le squadre dovrebbero rifiutare o semplicemente rispettare?

Risposte:


20

Un team di sviluppo è composto da 3–9 persone con competenze interfunzionali che svolgono il lavoro effettivo

Scrum Master dovrebbe invitare "Enterprise Architect" a far parte del team di progetto. Quindi la comunicazione tra architetto e programmatori sarebbe eccellente.


2
Buon punto; tuttavia non vedo come possa funzionare se ci sono più team con cui lavorano gli architetti.
sleske,

1
"Ehi, EA, ora ti siedi qui e stai ancora comunicando con le stesse persone. Solo più spesso." In che modo questo aiuta a risolvere i conflitti tra l'EA e gli altri sviluppatori?
Izkata

@sleske, perché non dividere il gruppo "architetti aziendali" tra i team? o impieghi più architetti? il problema è che la società vuole SCRUM e team agili, o sth scrumish. Izkata, le riunioni quotidiane cambiano molto nella comunicazione del team, sul serio, quando EA sentirà di far parte del DT e non di un gruppo di architettura extraterrestre, ci sono maggiori possibilità di un compromesso.

1
@ariwez: "perché non dividere il gruppo" enterprise architects "tra i team?" Perché abbiamo più team che architetti; anche gli architetti lavorano principalmente su problemi che riguardano più team.
sleske,

@sleske: "Individui e interazioni su processi e strumenti"

17

La scelta della tecnologia utilizzata fa parte dei requisiti del software, il che significa che fa parte della richiesta di funzionalità che non si utilizzano determinate tecnologie, per qualsiasi motivo.

Gli architetti parlano per i sistemi e il codebase perché i sistemi e il codebase non possono parlare da soli. Avere un architetto è generalmente nel migliore interesse a lungo termine di un'azienda, in particolare uno che si basa su un software che è costruito internamente.

Gli architetti non stanno dicendo agli sviluppatori come trasformare il backlog in incrementi (sprint), stanno dicendo quali tecnologie possono e non possono essere utilizzate. Stai combinando due diversi problemi.

La soluzione è di non cambiare nulla. Se i tuoi team si sentono frustrati perché gli architetti sono troppo restrittivi o prepotenti, questo è un problema del personale che non ha nulla a che fare con SCRUM e dovrebbe essere affrontato con gli stakeholder aziendali come un problema di soddisfazione dei dipendenti e, se possibile, i profitti ("Ci vuole x%più tempo per sviluppare funzionalità yperché l'architetto znon ci permetterà di usare Turbo Pascal.")


Non si tratta di soddisfazione personale, si tratta di produttività, qualità e cura del valore del prodotto. Presumo che gli sviluppatori delle squadre possano fare questa distinzione.
Martin Wickman,

2
Qualcuno, ad un certo punto, ha preso la decisione di non poterlo fare. Ecco perché esistono gli architetti.
Jonathan Rich

4
Attualmente sto lavorando su un'app lato server a triplo stack che combina Rails, Java e .NET che in realtà non ha bisogno di essere molto complicata. Quindi sì, i gatekeeper possono essere una buona cosa, ma le decisioni tecnologiche dovrebbero avere origine con gli sviluppatori che arrivano al consenso e che la gestione approva o comunica preoccupazioni, non i non-sviluppatori che prendono decisioni tecniche arbitrarie o decisioni del team di sviluppatori che si spostano di lato nel mezzo di uno sprint.
Erik Reppen,

4
@erik E quando tre team separati arrivano alle loro tre decisioni separate e di consenso, potresti ottenere un mix di Rails, Java e .Net.
MarkJ,

@MarkJ se hai tre team separati che lavorano in isolamento per la stessa app Web sul lato server, ti meriti quello che ottieni.
Erik Reppen,

6

Questo genere di cose è necessario per mantenere l'equilibrio tra la necessità di un grande team per portare a termine il progetto e la necessità di mantenere piccoli team agili.

In generale, la "mischia di leader di squadra" è composta da un membro eletto da ciascuna delle squadre più piccole. Ciò fornisce un po 'della natura auto-organizzante, oltre a fornire un qualche modo di rappresentazione in modo che le decisioni prese dal gruppo di alto livello siano accettate dal gruppo agile.

Per il tuo particolare scenario, qualcosa dovrebbe essere fatto per fermare l'agile demotivazione della squadra, ma probabilmente non ribellione o semplice accettazione. Il team deve rendersi conto che sei lì per creare un buon software, non parlare agli ideali. Avere un gruppo di team diversi, ognuno con tecnologie diverse per fare cose simili nello stesso progetto, porterà a un software peggiore. Avere un gruppo di team diversi che utilizzano standard di codifica diversi nello stesso progetto porterà a un software peggiore.

Quindi avrai bisogno di un modo per raggiungere un consenso su come funzionerà il progetto. La mischia principale del team viene utilizzata in altri luoghi in modo efficace. Potrebbe essere necessario fare qualcosa in modo diverso o esaminare perché il tuo gruppo non lo sta facendo in modo efficace.


2
Certo, ma ribaltandolo: costringere tutti i team a usare la stessa tecnologia schifosa è ancora più cattivo (tutti seguono lo stesso brutto percorso). Considerando che avere "diversità" è destinato a produrre almeno alcune soluzioni che prospereranno.
Martin Wickman,

2
@MartinWickman a volte ci sono decisioni di business dietro la scelta di tecnologie scadenti. Se l'80% degli sviluppatori in un determinato mercato ha esperienza con la tecnologia scadente, allora può avere molto senso da usare usare tale tecnologia perché ti consente di assumere appaltatori quando necessario. In un piccolo mercato, potresti non riuscire a trovare programmatori Python che valgano la pena.
Jonathan Rich

@JonathanRich Quando dico schifo intendo schifo. Ciò include non riuscire a trovare qualcuno che lo sappia.
Martin Wickman,

1
@MartinWickman - Certo, sto assumendo una piccola ipotesi che i tuoi sviluppatori di livello superiore designati (assegnati o auto-organizzati) non siano idioti completi.
Telastyn,

1
@JonathanRich logica aziendale imperfetta, IMO. Una quantità maggiore non significa una proporzione più alta di qualità e ci vogliono molti meno sviluppatori Python per fare il lavoro se almeno sono competenti.
Erik Reppen,

5

La domanda è: qual è la ragione per cui esiste questo team di architetti? L'unica ragione che mi viene in mente è di rafforzare l'interoperabilità tra i vari team. Oppure i team stanno lavorando su varie parti del singolo prodotto e questo team di architetti esiste per far sì che ogni parte lavori insieme.

Non credo davvero che questo schema possa funzionare bene in un ambiente agile, per le ragioni esatte che dici. Le varie squadre dovrebbero essere autonome e così dovrebbero essere i loro input e output. Pertanto, limitare i loro risultati dovrebbe essere solo una parte dei requisiti in materia di input. Ma tali vincoli dovrebbero essere ragionevoli. Qualcosa del tipo "Non usare la libreria X" non è un buon requisito, ma dire "Devi limitare al minimo il numero di librerie di terze parti usate" o "L'aggiunta di nuove librerie che non sono utilizzate in altri team dovrebbe essere limitato". dovrebbe andare bene.

Quindi dissolverei il team di architetti in tutti i team e utilizzerei la loro esperienza in questioni di architettura. Entrando a far parte del team, saranno in grado di vedere meglio i problemi del team e potrebbero avere idee migliori o opinioni più istruite sul cambiamento delle parti fondamentali dell'architettura. Dovrebbe inoltre essere incoraggiato gli architetti di tutti i team a comunicare per garantire che l'architettura rimanga coerente tra i team.


5

Il gruppo di Scaled Agile Framework ne parla davvero bene. La maggior parte di noi opera a livello di squadra, ma quando si ingrandisce è necessario riconoscere che ci sono ruoli da svolgere anche a livello di programma e portafoglio. Le decisioni sull'architettura devono essere prese in tutta l'organizzazione e ciò dovrebbe alimentare ciò che sta accadendo ai livelli inferiori dell'organizzazione. Non c'è niente di sbagliato nell'avere decisioni architettoniche!

A questo proposito, il recente libro di Dean Leffingwell su Agile Software Requirements è una buona lettura su questo argomento, l'ho letto da solo.


4

Abbiamo anche più team agili (alcuni fanno Kanban, altri Scrum) e architetti. Gli architetti sono responsabili dell'infrastruttura che copre tutti i nostri prodotti (librerie di supporto, autenticazione, costruzione di infrastrutture) ecc. Prendono decisioni tecniche, ma implementano anche cose, principalmente componenti di infrastrutture.

Funziona bene e di solito non c'è conflitto. Credo che un punto cruciale sia:

Gli architetti non hanno alcuna autorità formale nei confronti dei team e non possono semplicemente annullarli. Normalmente, gli architetti prendono decisioni che si applicano a tutti i prodotti e i team prendono decisioni per il loro prodotto. In caso di conflitto, l'architetto e il team devono solo raggiungere un accordo o passare alla direzione (sebbene ciò accada raramente).

Penso che sia davvero importante fare pari tra architetti e sviluppatori. Entrambi lavorano per un obiettivo comune, solo in aree diverse. Se nessuno può semplicemente "prevalere" sull'altro, la cooperazione sarà migliore.


2
Concordare con @MartinWickman che "il confine" è la chiave, in molti sensi: in primo luogo, le opinioni degli architetti dovrebbero essere ascoltate nei confini del software , in cui i componenti di più team si collegano; in secondo luogo, che gli architetti conoscono il proprio limite di autorità , in modo da astenersi dall'intraprendere le decisioni del team purché le decisioni non incidano sull'interoperabilità.
rwong

3

Non vedo alcun conflitto qui. Da quello che ho capito, tutto l'EA (per quanto pomposo sia un titolo che penso sia) è destinato al QA. Tutti dovrebbero esserne consapevoli.

Dovresti considerare che in qualsiasi metodologia di sviluppo (che merita di essere considerata una) la raccolta dei requisiti è un passaggio cruciale, sia esso iterativo o iniziale.

Alcuni di questi requisiti sono stabiliti dalla politica aziendale. E questi stabiliscono le regole di base:

  • Il team dovrà attenersi a loro come a qualsiasi altro requisito. La sfida della politica è quindi semplicemente al di fuori dell'ambito del progetto e dovrebbe essere gestita separatamente.
  • Il compito di EA è far rispettare questi requisiti e non imporre la loro fantasia personale. A loro non piace X, questa è la loro opinione personale. Niente di più, niente di meno. Trattalo come qualsiasi altra opinione. Tuttavia, se l'EA può dimostrare che l'uso di X viola un requisito esistente, allora hanno il diritto di vietare l'uso di X e se conoscono un'alternativa praticabile e il team non lo fa, allora è loro diritto applicarlo.

Ma in entrambi i casi, un requisito è soddisfatto o meno. Se tale determinazione è difficile da prendere, allora il requisito è carente e devi ribadirlo per diventare veramente testabile (in senso lato). Dovresti gestirlo come qualsiasi reiterazione dei requisiti.


Stanno chiaramente facendo molto più del QA. Stanno prendendo decisioni sull'uso degli strumenti.
Erik Reppen,

@ErikReppen: ero un po 'poco chiaro. Volevo dire che il QA è ciò che dovrebbero fare.
back2dos

@ back2dos: penso che devi modificare il QA per la standardizzazione. So cosa stai dicendo, ma il QA è un team completamente diverso e confonde il tuo punto.
gbjbaanb,

2

Il tuo architetto non dovrebbe annullare le decisioni prese dai tuoi team agili. Il tuo architetto dovrebbe includerli nei requisiti / storie passati ai team. Dovrebbero tenere aggiornati i team quando vengono introdotti gli scenari del progetto e vengono introdotti nuovi requisiti di interoperabilità.

Gli architetti che impartiscono ordini e controllano le decisioni tecniche sono un difetto culturale. Si vedono come il "capo" piuttosto che semplicemente mantenere un obiettivo / visione condivisi e mantenere squadre separate sulla stessa pagina. Le metodologie agili si basano su comunicazione e contatto. Quando i tuoi architetti non vengono coinvolti fino a quando non vengono prese le decisioni, non riescono ad agili.


"Quando i tuoi architetti non vengono coinvolti fino a quando non vengono prese le decisioni, non riescono ad agili". - Se invertiamo questa affermazione: "Quando il team non coinvolge gli architetti nel prendere decisioni, allora il team sta fallendo in modo agile". Se il team prende decisioni che cambiano tecnologia, modelli esistenti, ecc ..., il team deve includere un architetto per garantire che il prodotto complessivo rimanga coerente.
Metro Puffo

2

Martin, penso che potresti avere un'idea sbagliata di come una squadra auto-organizzante funzioni nel suo ambiente.

Hai citato la Scrum Guide: "Nessuno (nemmeno lo Scrum Master) dice al team di sviluppo come trasformare l'arretrato di prodotto in incrementi di funzionalità potenzialmente rilasciabili".

Questa non è una licenza per il team Scrum di fare tutto ciò che vuole (purché fornisca) senza tener conto delle esigenze tecnologiche e di business dell'azienda nel suo complesso e delle esigenze degli altri team.

Le parti interessate possono abusare della loro influenza. Questa è una delle sfide della collaborazione e certamente non si limita all'EA. Ma la collaborazione non finisce ai confini del team.


0

Waterfall o Scrum (questo sembra mescolare due, che sì, non funzionerà), che suona come un livello di gestione piuttosto inutile per me in primo luogo. I gatekeeper sulle decisioni tecnologiche dovrebbero essere i principali sviluppatori, il responsabile generale dello sviluppo il cui compito dovrebbe essere quello di impedire alle preferenze degli sviluppatori di trasformare la tua app in un'idra di scelte tecnologiche e chi ha il budget deve pagare il conto potenziale.

Niente continua a stupirmi come i non-sviluppatori che hanno davvero il coraggio di prendere decisioni tecnologiche senza nemmeno consultare le persone reali che devono subire le conseguenze di quelle decisioni.


Questo sembra più un rant che una risposta.
Bryan Oakley,

Qualcuno deve farlo.
Erik Reppen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.