La tua domanda è difficile perché tocca molte aree: processo, leadership e progettazione del software (o architettura). Presumo che tu abbia già un processo standard, ma se non lo fai, prova uno dei processi Agile. Parlerò di leadership e architettura del software.
Leadership. L'ottimo libro di Fred Brooks, The Mythical Man-Month, parla di avere un capo tecnico nel modo in cui un team chirurgico ha un leader. Personalmente, mi piace più collaborazione di quella che vedo con i medici, quindi consideriamo il team chirurgico di Brooks un estremo. Tuttavia, hai bisogno di qualcuno per coordinare tecnicamente chi sta facendo cosa, cose come allocare le persone a lavorare in diverse parti del sistema, decidere quali sono le parti più difficili (più rischiose) (in modo che non vengano rimandate finché non sono costose cambiare/correggere) e fare delle scelte quando il team non è d'accordo. Questo tipo di leadership tecnica è necessaria sia che tu stia costruendo software, macchine o pogo stick.
Architettura/Design. Il mantra standard è che "Ogni sistema ha un'architettura", ma il corollario è che non tutte le architetture vengono scelte deliberatamente. Puoi copiare implicitamente l'architettura dal tuo ultimo progetto, ad esempio un sistema a 3 livelli. Oppure può essere pre-deciso una volta che sai che stai usando un framework come EJB. All'inizio di un progetto, prenderai decisioni architettoniche e alcuni saranno difficili da cambiare in seguito. Come manterrai i dati? Userai un framework (es. Spring, EJB, RoR)? Elaborerai i dati in modo incrementale o in batch?
Praticamente qualsiasi architettura può essere costretta a soddisfare le vostre esigenze. Ad esempio, è possibile utilizzare RoR per creare un termostato. Ma avrai un tempo più semplice quando la tua architettura si adatta bene ai requisiti. A volte hai dei requisiti, come la bassa latenza dell'interfaccia utente, che può essere aiutata da una scelta di architettura saggia, come l'utilizzo di AJAX. Quindi l'inizio del tuo progetto è un'opportunità per pensare a queste cose e farle bene. (E questo non significa che tu salga sulla montagna, pensi intensamente, poi datti le tue risposte alla squadra - anche qui di nuovo io preferisco la collaborazione).
Non aver paura di pensare all'architettura in anticipo, soprattutto sui modi in cui può aiutarti a evitare le difficoltà, ma non cercare di decidere tutto in anticipo. Avrai dei problemi se una parte del tuo team ha iniziato a utilizzare Ruby on Rails mentre un'altra parte ha iniziato a utilizzare EJB, quindi prendi alcune decisioni tecniche, quelle che sono obbligate a te e quelle che faranno fronte ai tuoi maggiori rischi.
Un'ultima cosa: le prime discussioni sull'architettura sono una benedizione e una maledizione. Sono una benedizione in quanto ottengono le idee in anticipo e consentono di scegliere il scegliendo il piuttosto che fare un errore. Ma sono una maledizione in quanto tutti avranno opinioni, e può essere difficile farli puntare tutti nella stessa direzione (cioè tornare alla necessità di una leadership tecnica).
Raccomando il capitolo 12 di Applied Software Architecture per indicazioni sulla domanda. L'elenco dei titoli dà una buona idea del suo consiglio: creare una visione, l'architetto come consulente tecnico chiave, l'architetto prende le decisioni, gli architetti, le coordinate dell'architetto, gli strumenti dell'architetto, i sostenitori dell'architetto. Il libro 97 Things che menzioni è più una collezione di perle di saggezza piuttosto che una guida coesa all'architettura.
George Fairbanks, autore di Just Enough Software Architecture
grande risposta, molto migliore del mio =) +1 –