Software architect maestri della progettazione funzionale e delle specifiche di programmi e applicativi informatici. Analisti delle esigenze dei clienti, sono questi i professionisti preposti a capire quali sono le specifiche tecniche necessarie e a risolvere la mappatura delle singole componenti per realizzare la soluzione più adatta. Alcuni professionisti si spingono anche oltre, presidiando la fase di test e di fine tuning.
Superare la (inutile) dicotomia culturale
Gli esperti fanno notare come oggi i software architect dovrebbero rivedere i propri compiti e i propri ruoli per rimanere agganciati alle evoluzioni DevOps. Tra gli sviluppatori che devono scrivere codice e gli architetti che devono gestire analisi e progetto c’è una dicotomia dello sviluppo sbagliata in partenza. I software architect, infatti, non possono che guadagnare da una componente di programmazione diretta.
Architetti Agile che diventano un esempio per gli sviluppatori
Alcuni leader del team di sviluppo software ritengono che far scrivere codice ai software architect rallenti i tempi di esecuzione, spostando la prospettiva di quella che dovrebbe essere la big picture della programmazione a lungo termine finalizzata a supportare le strategie aziendali. I sostenitori di questo cosiddetto campo senza codice pensano che se i software architect si dedicano a scrivere codice, è probabile che poi siano restii a distribuire il lavoro agli sviluppatori. Si tratta di un pregiudizio, in quanto gli architetti Agile possono essere una guida di riferimento: proprio grazie alle loro capacità di programmazione, infatti, possono dimostrare il valore di alcuni metodi particolari al loro team di sviluppo.
Uscire dalla torre d’avorio e dalle PPT
I software architect che si astengono dallo scrivere codice sono professionisti irrealistici. Pensare che alla programmazione un po’ come il lavoro sporco, infatti, è profondamente sbagliato. Vivere in una torre d’avorio, smanettando sulle slide di PowerPoint nel tempo diventa una perdita di conoscenza, allontanando gli architetti dal contatto con l’evoluzione degli strumenti di sviluppo, le strutture e librerie.
Software architect bravi anche a programmare
Gli architetti Agile prendono decisioni basate sul design che richiedono, il che non può non presupporre anche una conoscenza pratica del toolkit per sviluppatori. Quando gli architetti Agile non hanno familiarità con le nuove tecnologie le ultime pratiche di codifica, creano sistemi che nascono obsoleti. I software architect che non sanno stare al passo con l’evolutiva della programmazione, infatti, difficilmente sono in grado di comunicare l’architettura progettuale dal momento che lavorano su una prospettiva astratta. Un architetto Agile che scrive codice, invece, può creare prove di concetto e prototipi che comunicano idee in dettaglio al team di sviluppo.
Delegare è comunque importante
In effetti, gli architetti che apprezzano l’attività di codifica tendono a commettere l’errore di delegare solo le parti di base del codice di un’applicazione al team di sviluppo. La maggior parte degli sviluppatori ha bisogno della possibilità di migliorare le proprie capacità tanto quanto gli architetti. Per questo è importante che venga loro affidato anche lo sviluppo più sfidante e stimolante.
Dunque, è bene che il software architect scenda in prima persone nell’agone della programmazione per fronteggiare le sfide che si presentano. Ma questo non deve ostacolare la crescita a lungo termine del team. Come delegare correttamente il lavoro su progetti di sviluppo software in modo che il team abbia successo?
Mentre un architetto deve costruire prototipi per progetti complessi e ricercare nuovi strumenti e strutture, gli sviluppatori dovrebbero occuparsi della creazione di progetti reali. Con il software architect che fornisce tutte le indicazioni necessarie.
Migliorare la qualità del codice
Conoscere i linguaggi di programmazione e la semantica aiuta gli architetti del software a rivedere il codice scritto dallo sviluppatore per assicurarsi che questo aderisca agli standard di codifica. In tutte le fasi di revisioni è così possibile valutare se il codice degli sviluppatori sia conforme all’architettura definita. Fornendo i propri feedback al team, i software architect possono evitare così la reiterazione degli errori, contribuendo ad aumentare la qualità del codice in generale. Infine, dovrebbero anche raccomandare gli strumenti giusti per l’analisi del codice statico e per l’acquisizione e l’analisi della metrica delle prestazioni.
Architettura software e collaborazione progettuale
In un team Agile, l’architettura e il design del software sono basate sulla co-creazione e la collaborazione. Un approccio che contrasta nettamente con altre metodologie di sviluppo in cui l’architetto crea l’intero progetto in anticipo. L’Agile è un approccio iterativo e l’iterazione richiede, tra l’altro, la volontà di cambiare. Il software architect, dunque, dovrebbe trasmettere i progetti attuali e potenziali alle parti interessate, incoraggiando i feedback e facendo proprie le istanze di modifiche necessarie.
Quanto tempo dedicare all’editing del codice
Scrivere codice non dovrebbe comunque diventare un lavoro a tempo pieno. Gli architetti non sono sviluppatori: il tempo da dedicare alla programmazione deve essere compatibile con quello del team ed essere finalizzato a informare la squadra su come comunicano le architetture progettate. Conoscere modi nuovi e alternativi per risolvere i problemi che il team di sviluppo può affrontare, significa anche sapere come un design non verificato (che, ad esempio, esiste solo come un diagramma in Microsoft Visio) può rappresentare un rischio. Anche il mentoring, infatti, è una componente importante rispetto al profilo di un software architect.