Non sono completamente d'accordo con la risposta di maple_shaft, ma non c'era abbastanza spazio nel commento per dire tutto il mio bit! ; -)
Sono d'accordo sul fatto che ogni sviluppatore può e dovrebbe essere un architetto, ma ciò non significa che ogni sviluppatore debba essere responsabile dell'architettura di un intero prodotto o sistema. Inoltre, non penso che tu possa dipingere ogni team di architetti con lo stesso ampio pennello e, una volta fatto, i team di architetti possono dare un grande valore al processo di sviluppo del prodotto. L'idea sbagliata è che gli architetti debbano dettare ogni aspetto della progettazione del sistema. Dovrebbero invece concentrarsi sul design di livello superiore e lasciare i dettagli di implementazione ai propri team di sviluppo. Ciò non significa tuttavia che gli sviluppatori non dovrebbero essere coinvolti nel processo di pianificazione e progettazione sin dall'inizio.
Il più grande e più modulare e in definitiva un prodotto più complesso è, più è probabile che troverai varie parti del prodotto gestite da diversi team di sviluppo. Tali team non hanno bisogno di comprendere il sistema nel suo complesso, a condizione che abbiano una piena comprensione delle parti del sistema di cui sono responsabili. Spesso questi team aggiuntivi vengono portati come subappaltatori allo scopo specifico di sviluppare un modulo in una particolare area della tecnologia a cui gli architetti o altri team potrebbero non avere esperienza. I miei talenti particolari si trovano nello sviluppo di API e non ho ancora visto una API ben costruita che è stata sviluppata interamente in modo organico senza essere un disastro completo in termini di usabilità, o che non ha richiesto a qualcuno di emergere come la persona che ha assicurato che c'era un livello di uniformità tra i diversi aspetti dell'API. Posso elencare molti esempi e ragioni, ma non penso che questo tipo di situazioni siano la torre d'avorio che molti potrebbero pensare di essere. Sfortunatamente, ci sono molti posti, in particolare nei settori della difesa, della medicina e dei settori finanziari in cui la paranoia aziendale si traduce in uno sviluppo di prodotti poco specificati e ancora più mal gestiti del genere di cui sono sicuro che Maple_shaft fosse maggiormente preoccupato. Queste sono le cose che credo possano dare agli architetti un brutto nome meramente meritato (in generale).
Quindi dov'è la via di mezzo che l'OP stava cercando? La risposta è tutto a che fare con l'apertura dei canali di comunicazione. Gli architetti devono consegnare le specifiche che descrivono i loro progetti in modo sufficientemente dettagliato in modo da garantire che i team di sviluppo capiscano dove sono i confini. Storie e Scenari di funzionalità nel senso più ampio, in cui tutto è considerato una scatola nera. Gli architetti devono quindi assicurarsi che i team abbiano accesso ai tempi dell'architetto per confermare eventuali ipotesi e avere risposte a domande su specifiche che sembrano troppo ampie o poco chiare. Dopodiché, si tratta davvero di garantire che i singoli team siano consapevoli di ciò su cui stanno lavorando gli altri team e che sappiano con chi contattare gli altri team per garantire che ciascuna parte del sistema giochi bene con le altre parti. Questi team si incontrano direttamente. Una volta che il sistema è stato progettato al livello più ampio, gli architetti dovrebbero essere solo le persone a cui si rivolgono le squadre quando hanno bisogno di un controllo di integrità, e per garantire che la "visione" del prodotto sia mantenuta. Dovrebbero anche prendere in considerazione qualsiasi processo di integrazione richiesto e fornire la necessaria "copertura aerea" per i team di sviluppo da parte dei manager, dei clienti e di qualsiasi altro stakeholder, pur garantendo che queste varie persone possano riunirsi per lavorare tra loro come dovrebbero funzionare le cose.
Gli architetti IMHO dovrebbero prima di tutto essere facilitatori & comunicatori e designer in secondo luogo. Per quanto riguarda il livello di specifica? Penso che i migliori architetti siano quelli che chiedono ai loro team il livello di dettaglio che una squadra vuole, e tra loro trova un equilibrio che funzioni. Diversi team possono avere requisiti diversi in termini di quantità di documentazione o di direzione richiesta. Le squadre senior possono trovare un diagramma approssimativamente disegnato e una chat veloce può essere sufficiente per andare avanti, mentre i team pieni di sviluppatori relativamente giovani potrebbero aver bisogno di un po 'di più per farli andare avanti. Soprattutto, l'architetto deve incoraggiare gli sviluppatori a esercitare i propri talenti di design al fine di ottenere il miglior risultato finale da ogni squadra.