Non sono completamente d'accordo con la risposta di maple_shaft, ma nel commento non c'era abbastanza spazio per dire tutto! ;-)
Concordo 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 tutti i team di architetti con lo stesso pennello largo e, quando fatto, i team di architetti giusti possono offrire un grande valore al processo di sviluppo del prodotto complessivo. L'idea sbagliata è che gli architetti dovrebbero dettare ogni aspetto della progettazione del sistema. Dovrebbero invece concentrarsi sulla progettazione di livello superiore e lasciare i dettagli di implementazione ai loro team di sviluppo. Ciò non significa tuttavia che gli sviluppatori non debbano essere coinvolti fin dall'inizio nel processo di pianificazione e progettazione.
Più un prodotto è grande, modulare e alla fine più complesso, più è probabile che troverete varie parti del prodotto gestite da diversi team di sviluppo. Tali team non devono comprendere il sistema nel suo complesso, purché abbiano una piena comprensione delle parti del sistema di cui sono responsabili. Spesso questi team aggiuntivi vengono creati come subappaltatori con lo scopo specifico di sviluppare un modulo in una particolare area tecnologica in cui gli architetti o altri team potrebbero non avere esperienza. I miei talenti particolari risiedono nello sviluppo di API e non ho ancora visto un'API ben ponderata che è stata sviluppata interamente organicamente senza essere un disastro completo in termini di usabilità, o che non richiedeva che qualcuno si distinguesse come persona che garantiva un livello di uniformità tra i diversi aspetti dell'API. Posso continuare a elencare molti esempi e ragioni, ma non penso che questo tipo di situazioni siano la torre d'avorio BS che molti potrebbero pensare di essere. Sfortunatamente, ci sono molti luoghi, in particolare nelle aree della difesa, della medicina e dei settori finanziari in cui la paranoia aziendale provoca uno sviluppo del prodotto mal specificato e ancora più mal gestito del tipo di cui sono sicuro che maple_shaft fosse maggiormente preoccupato. Queste sono le cose che ritengo possano dare agli architetti un brutto nome meritato (in generale). Sfortunatamente, ci sono molti luoghi, in particolare nelle aree della difesa, della medicina e dei settori finanziari in cui la paranoia aziendale provoca uno sviluppo del prodotto mal specificato e ancora più mal gestito del tipo di cui sono sicuro che maple_shaft fosse maggiormente preoccupato. Queste sono le cose che ritengo possano dare agli architetti un brutto nome meritato (in generale). Sfortunatamente, ci sono molti luoghi, in particolare nelle aree della difesa, della medicina e dei settori finanziari in cui la paranoia aziendale provoca uno sviluppo del prodotto mal specificato e ancora più mal gestito del tipo di cui sono sicuro che maple_shaft fosse maggiormente preoccupato. Queste sono le cose che ritengo possano dare agli architetti un brutto nome meritato (in generale).
Allora, dov'è la via di mezzo che l'OP stava cercando? La risposta ha 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 caratteristici nel senso più ampio, in cui tutto è considerato una scatola nera. Gli architetti devono quindi assicurarsi che i team abbiano accesso al tempo dell'architetto per confermare eventuali assunzioni e ottenere risposte alle 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 interagire con gli altri team per garantire che ciascuna parte del sistema giocherà bene con le altre parti. Queste squadre si incontrano direttamente. Una volta che il sistema è stato progettato al più ampio livello, gli architetti dovrebbero davvero essere le persone a cui si rivolgono i team quando hanno bisogno di un controllo di integrità e per garantire che la "visione" del prodotto venga 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 dirigenti, dei clienti e di tutti gli altri stakeholder, garantendo comunque che queste varie persone possano riunirsi per lavorare tra loro come dovrebbero funzionare le cose.
Gli architetti IMHO dovrebbero innanzitutto essere facilitatori e comunicatori, e secondo i progettisti. Quanto al livello di specifica? Penso che i migliori architetti siano quelli che chiedono ai loro team il livello di dettaglio che un team desidera e tra loro trova un equilibrio che funziona. Team diversi possono avere requisiti diversi in termini di quantità di documentazione o direzione richiesta. I team senior possono trovare un diagramma approssimativamente disegnato e una chat veloce può essere sufficiente per iniziare, mentre i team pieni di sviluppatori relativamente junior potrebbero aver bisogno di un po 'di più per farli funzionare. Soprattutto, l'architetto deve incoraggiare gli sviluppatori a esercitare i propri talenti di progettazione al fine di ottenere il miglior risultato finale da ciascun team.