Consulenza architetturale

Progettazione, scelte tecnologiche e revisione del codice per team di sviluppo

Offro consulenza architetturale ad aziende e team di sviluppo che devono prendere decisioni tecniche rilevanti o rivedere scelte che oggi limitano l'evoluzione del software.

Di solito parto dall'analisi del codice e della documentazione esistente e dal confronto 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 cercano il supporto di una figura senior nella revisione del lavoro.
  • Adozione di metodologie: convenzioni di progetto, documentazione, test, CI, gestione delle migrazioni, regole per lo sviluppo con agenti AI.

Metodo

Per ogni intervento preparo 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 permette 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 uso React Native, Tauri e GTK4; per i database PostgreSQL, MySQL e SQLite; per l'infrastruttura Linux e Docker.