Il ruolo del Software Architect in sintesi
In CGN, la definizione dell'architettura software, nel caso in cui non sia
affidata ad un ruolo specifico, è una responsabilità del team di sviluppo. I
nostri software hanno domini complicati e lavorano in situazioni di elevato
carico per periodi limitati. Abbiamo un framework proprietario su .NET
che offre ai team di sviluppo un'architettura esagonale basata su DDD/CQRS e lo
scambio asincrono di messaggi.
Quindi, in questo contesto, citando Martin Fowler, "l'architetto prende le
decisioni importanti, qualunque esse siano", ovvero decide come
garantire performance, scalabilità, sicurezza, resilienza e manutenibilità del
sistema.
Qual è il tuo ruolo?
Paolo N.
Lavoro in CGN dal 2011 ed in
questi 13 anni ho ricoperto diversi ruoli. Ho avuto la possibilità di
lavorare su molti progetti e su tanti aspetti dello sviluppo del software,
dallo sviluppo del codice, alla gestione degli strumenti per supportare il
ciclo di sviluppo del software fino agli aspetti più architetturali sia per
quanto riguarda singole applicazioni che insiemi di applicazioni e i sistemi
che le supportano.
Attualmente faccio parte del board della Software Factory come responsabile dell'architettura e delle tecnologie adottate.
Quali sono le attività che svolgi tipicamente durante un progetto software?
Paolo N.
Prendo decisioni architetturali per garantire ad esempio performance, scalabilità, sicurezza, resilienza, manutenibilità ed evolvibilità futura del sistema, collaboro con i Product Owner per comprendere gli obbiettivi di business ed identificare soluzioni alternative dove ci possono essere criticità future.
Qual è l'ultima cosa che hai imparato che ti ha aiutato nell'esprimerti meglio nel tuo ruolo?
Paolo N.
Negli anni ho imparato che non conta solo come il codice e come le applicazioni siano organizzate ma anche come le persone lavorano e che questi due aspetti siano in sintonia tra loro. In sua assenza si presenteranno sempre maggiori livelli di frizione dovuti alle dipendenze e alla necessità di coordinamento, se invece i due modelli sono allineati questi problemi spariscono o si riducono enormemente.
Com'è lavorare nella software factory CGN?
Paolo N.
Stimolante, non solo per i colleghi con cui confrontarsi o le tecnologie all'avanguardia, ma anche per le sfide che è possibile affrontare. Il livello di complessità delle applicazioni, il loro numero e la necessità di supportarle ed evolverle per periodi molto lunghi offrono sempre nuove sfide.
Ti piacerebbe ricoprire il ruolo di Software Architect?
Per ricoprire questa posizione devi aver maturato una lunga esperienza in
design e analisi OO, nonché possedere una buona conoscenza delle
architetture software, teorica e pratica. È necessario inoltre che tu abbia
solide competenze in Domain Driven Design, tecniche di analisi e
modellazione concettuale.
Nei nostri team di sviluppo questo ruolo, spesso ibrido, si sovrappone
frequentemente a quello di Back-end Developer e corrisponde a figure con una
elevata seniority tecnica.
In qualità di Software Architect, è importante avere la capacità di
contribuire allo sviluppo del prodotto software, “sporcandosi le mani” nei
progetti, anche svolgendo task più operativi.
Come dice Martin Fowler, “L’architetto è colui che concretamente
prende le decisioni importanti in ambito software”. Sei tu?