Uno sviluppatore full-stack è esattamente questo: uno sviluppatore. Scrivono codice, di solito su indicazione di qualcuno - che sia il proprietario del prodotto attraverso le user stories agili, o semplicemente il team lead che dice loro cosa fare dopo. Ci possono essere altri modi per ottenere la direzione, ma alla fine si scrive codice.
Anche un architetto scrive codice per una certa percentuale del suo tempo, ma questo non è il suo lavoro principale. Il loro lavoro consiste nell'analizzare i requisiti non funzionali di un sistema software e scegliere gli approcci da adottare per raggiungerli. Per esempio, l'estensibilità. Cosa significa effettivamente nel contesto di un dato progetto e come deve essere realizzato? Lo stesso vale per la sicurezza, la scalabilità e altri "attributi di qualità". L'architetto deve prendere in considerazione il quadro generale di un sistema software, tutte le sue parti mobili, il design di alto livello, gli approcci preferiti a certi tipi di problemi, ecc. Poi deve comunicare tutto questo al team e assicurarsi che questa visione sia portata avanti nel progetto. La parte di codifica del lavoro tipicamente coinvolge "picchi architettonici"--che sono una specie di prototipo di una fetta dall'alto in basso di un sistema per provare la fattibilità di un approccio o un insieme di approcci. Inoltre, e su linee simili, prototipi --anche per provare la fattibilità di qualche idea e inoltre per servire come punto di partenza per altri sviluppatori su cui costruire. Gli architetti valutano e scelgono anche le tecnologie da usare in un progetto. Valutano i compromessi tra diversi design e scelgono la strada da seguire. Sono i grandi pensatori, i comunicatori e i leader.
Chi ha più opportunità e migliori stipendi? Onestamente non posso rispondere. Probabilmente ci sono meno posti di lavoro per gli architetti che per gli sviluppatori. Ma lo stesso si può dire per qualsiasi specialista. Non posso commentare gli stipendi, tranne che per dire che gli architetti hanno tipicamente più esperienza di lavoro di un tipico sviluppatore full-stack, poiché ci vuole più esperienza per diventarlo. Questo può avere un effetto sugli stipendi previsti, ma d'altra parte il mercato è piuttosto irrazionale e varia selvaggiamente da un posto all'altro. Qualcuno che si è laureato ieri all'università e non ha mai lavorato come programmatore nella sua vita farà uno stipendio molto più alto nella SF Bay Area di quanto io abbia mai fatto nella mia carriera.