Svolgo attività di consulenza architetturale per aziende e team di sviluppo che devono prendere decisioni tecniche rilevanti o rivedere scelte passate che oggi ne limitano l'evoluzione.
Il mio intervento parte di norma dall'analisi del codice, della documentazione esistente e dai colloqui con il team. Al termine consegno una valutazione scritta dei punti di forza, delle criticità e delle priorità di intervento.
Ambiti di intervento
- Analisi e progettazione: analisi e documentazione dei requisiti, progettazione dell'architettura, del modello dei dati e dei contratti tra backend e frontend, strategia di deployment.
- Scelte tecnologiche: scelta del linguaggio, del framework e del database, valutazione tra un monolite e un'architettura a più servizi, tra ciò che conviene acquistare e ciò che conviene sviluppare. La scelta tiene conto del team che dovrà mantenere il sistema, oltre che del problema da risolvere.
- Audit di codice esistente: revisione di un progetto per valutarne la qualità, i rischi di sicurezza e di manutenzione e lo stato delle dipendenze, prima di un'acquisizione, di un cambio di fornitore o di un investimento.
- Code review e pair programming continuativi, per team che necessitano di una figura senior per la revisione del lavoro.
- Adozione di metodologie: convenzioni di progetto, documentazione, test, CI, gestione delle migrazioni, regole per lo sviluppo con agenti AI.
Metodo
Ogni intervento produce documentazione scritta: analisi, documenti di architettura, convenzioni di progetto che il team può adottare e verificare in automatico. La documentazione descrive lo stato attuale del sistema, mentre le decisioni prese e le alternative scartate sono raccolte in un registro separato, che consente a chi subentra di ricostruire le ragioni delle scelte.
Il principio di riferimento è less is more: la soluzione più piccola che risolve il problema, senza astrazioni per esigenze non ancora presenti e senza dipendenze non giustificate.
Tecnologie
Sul backend lavoro con TypeScript (NestJS, Prisma), PHP (Laravel, Inertia) e Rust (Axum, sqlx), sul frontend con React e Next.js. Per le applicazioni mobili e desktop utilizzo React Native, Tauri e GTK4; come database PostgreSQL, MySQL e SQLite, per l'infrastruttura Linux e Docker.
Contatti
Per informazioni o per richiedere un preventivo è possibile utilizzare il modulo di contatto o scrivere a info@gianmarcotoso.com, descrivendo il progetto e il tipo di supporto richiesto.