Quali sono le competenze necessarie per essere un buon architetto di software?

Come l'altra risposta descrive i lati non tecnici delle cose, questo post cerca di fornire un complemento.

Essere un architetto è solo un'opzione di ciò che un ingegnere del software può diventare. Gli architetti si allargano. Sono generalisti. Gli scienziati e gli algoritmisti vanno in profondità. Sono specialisti. Altri ancora non sono tecnici.

Allora, lavorando e interagendo con diversi architetti del software nel corso della mia carriera, e attraverso la mia esperienza di progettazione di sistemi (con la mia limitata esperienza), ecco la mia opinione:

  • Un architetto progetta sistemi software secondo i requisiti degli stakeholder, tecnici, di business e operativi, di solito per un orizzonte temporale piuttosto lungo (al contrario dell'hacking di poche centinaia di linee di codice per creare un'app in una settimana)

  • Un architetto deve avere la capacità di pensare e lavorare in diversi livelli di astrazione (dal livello più alto ai dettagli a volte cruciali), diverse prospettive (codice, runtime, deployment, operazione) e punti di vista di qualità (scalabilità, affidabilità, sicurezza, ecc.) del sistema. Un architetto di solito ha un ottimo repertorio di modelli mentali per mettere il sistema nella testa di qualcuno non simultaneamente, ma un aspetto rilevante alla volta

  • Un architetto può anticipare i requisiti attuali e futuri hard e soft del sistema. Per fare questo, un architetto deve aver visto e sperimentato molte cose sulla costruzione del sistema, sperimentato diversi approcci e modelli e capire le loro proprietà e compromessi. Materiali sufficienti sono ingredienti necessari per la saggezza pratica. Troppo poco impasto non farà una buona crema.

  • Un architetto si occupa di problemi ingegneristici del mondo reale, non di quelli teorici, quindi i grandi scienziati (risolutori di problemi teorici) non sono necessariamente grandi architetti, e viceversa (non è necessario per un architetto avere una rigorosa profondità in certe aree speciali, a meno che non sia richiesto). Quindi un architetto ha bisogno di essere radicato nella realtà.

Gli architetti che ammiro generalmente soddisfano le caratteristiche di cui sopra.