Competenze
Cosa so fare, con qualche esempio concreto dal mio lavoro.
Leadership
Far crescere persone e team in maniera sostenibile.
People
Credo nel far crescere le persone attraverso mentoring e condivisione: faccio code review su ogni PR e lavoro in pair e mob programming con il team.
- Mentoring
Faccio da mentore a diversi colleghi in 20tab; in Dunbar ho seguito direttamente onboarding e mentoring di tutto il team tecnico.
- Selezione del personale
Partecipo alla selezione di nuovi sviluppatori in 20tab; in Dunbar gestivo direttamente selezione e onboarding.
- Crescita del team
In Dunbar ho portato il team tecnico da 3 a 12 persone in circa 3 anni, e con il team è cambiata l'offerta dell'agenzia: da pochi siti WordPress a sviluppo custom.
- Crescita del team
- Formazione interna
Nel tempo dedicato al learning presento a tutti i team, non solo al mio, come ho affrontato nuovi problemi e introdotto nuovi standard.
- Mentoring
Finance
Tengo insieme la parte tecnica e quella economica: dalle stime per offerte e gare ai conti dell'azienda.
- Gestione del P&L
Ho progettato e sviluppato Mars, l'ERP interno di 20tab, che gestisce il P&L (conto economico) dell'intera azienda.
- Team management
Gestisco il team anche dal punto di vista economico: persone sui progetti e costi.
- Team management
- Gestione del P&L
Sviluppo software
Progettare e costruire software solido, dall'architettura ai dati.
Python
Il mio linguaggio principale: ci ho costruito API, applicazioni web e Mars, l'ERP interno di 20tab.
- Django
Uso Django da Dunbar a oggi in 20tab.
- Wagtail
Uso Wagtail, il CMS basato su Django, quando un progetto deve gestire contenuti.
- Wagtail
- FastAPI
Ho introdotto FastAPI in 20tab e definito come usarlo nei progetti.
- Pydantic
Lo uso per descrivere e validare i dati, dalle API FastAPI alle configurazioni.
- Django
Database
Progetto e uso database relazionali, dalla modellazione dei dati alla migrazione da sistemi precedenti, come per la versione 2.0 di KnowledgeShare.
- MySQL
Progetto schemi e scrivo query su MySQL.
- PostgreSQL
Il database dei progetti in 20tab.
- PostGIS
Estensione di PostgreSQL per i dati geografici: la uso quando un progetto lavora con mappe e coordinate.
- PostGIS
- SQLAlchemy
Con FastAPI uso SQLAlchemy in modalità asincrona.
- SQLite
Per prototipi, test e applicazioni leggere che non hanno bisogno di un server.
- MySQL
Architettura
Guido le scelte tecniche e l'architettura del team: ho progettato Mars, l'ERP interno di 20tab, e l'architettura della nuova offerta di Data Governance.
- Clean code
Scrivo codice facile da leggere e da cambiare: nomi chiari, funzioni piccole, niente duplicazioni. La code review su ogni PR aiuta a tenerlo così.
- Clean Architecture
Separo il dominio dai dettagli (framework, database, servizi esterni), così il cuore del software resta testabile e indipendente.
- Integrazione API
Collego sistemi diversi attraverso le loro API: Mars integra Factorial, Taiga e Fatture in Cloud ed è l'unica fonte di verità dei dati aziendali.
- Clean code
Agile
Lavorare a piccoli passi, con qualità e una direzione chiara.
Scrum
In Dunbar ho introdotto Scrum da zero, con tutte le cerimonie; in 20tab guido le scelte tecniche di un team Scrum multifunzionale di 6 persone.
Testing
Test automatici su tutti i progetti, con copertura al 100%: in 20tab ho introdotto pytest, definito come usarlo e lavoro per rendere il testing sempre più rapido e snello.
- BDD
In 20tab lavoriamo in BDD: i comportamenti attesi diventano scenari da verificare.
- Gherkin
Scrivo gli scenari BDD in Gherkin (Given, When, Then), così requisiti e test parlano la stessa lingua.
- Pact testing
Uso il contract testing con Pact per verificare che servizi diversi continuino a parlarsi correttamente.
- Gherkin
- TDD
In 20tab lavoriamo in TDD: prima il test, poi il codice che lo fa passare.
- Unit testing
Scrivo test unitari con pytest come base del TDD, con copertura al 100% su tutti i progetti.
- Integration testing
Verifico che i pezzi funzionino insieme, database e servizi esterni compresi.
- E2E testing
Verifico i flussi completi dal punto di vista di chi usa l'applicazione, dall'interfaccia ai dati.
- Unit testing
- BDD
Roadmap
Trasformo obiettivi e richieste in un piano di lavoro: in 20tab seguo la parte tecnica di bandi e gare, con documentazione, architettura proposta e stime.
- User story mapping
Uso lo user story mapping nell'analisi e ho sviluppato un plugin per Claude Code che genera user story map, riducendo i tempi di analisi del team.
- Stime
In Dunbar ho definito con il team un sistema di stima con planning poker: nell'anno e mezzo successivo nessun progetto è uscito da tempi o budget.
- No estimate
Quando stimare costa più di quanto serve, preferisco dividere il lavoro in storie piccole e simili e misurare il flusso.
- User story mapping
DevOps
Portare il software in produzione e tenerlo in piedi.
Linux
Lavoro su Linux sia in sviluppo sia sui server.
- Shell
Uso la riga di comando ogni giorno, per lavorare più in fretta e automatizzare.
- Bash
Scrivo script Bash per automatizzare installazioni, rilasci e manutenzione.
- Bash
- Shell
Cloud
Porto e faccio girare il software sul cloud: in 20tab lo stack dei progetti comprende Docker e Kubernetes, in Dunbar ho guidato la migrazione dell'intera infrastruttura.
- DigitalOcean
In Dunbar ho guidato la migrazione dell'intera infrastruttura su DigitalOcean.
- AWS
Uso i servizi principali di AWS per ospitare e far girare applicazioni.
- DigitalOcean
Monitoraggio
In Dunbar, con la migrazione su DigitalOcean, ho introdotto il monitoraggio: i problemi emergono ai primi segnali.
- Zabbix
Monitoro server e servizi con Zabbix, con allarmi quando qualcosa non va.
- PostHog
Analytics di prodotto: lo sto introducendo per capire come vengono usate le applicazioni.
- OpenTelemetry
Tracce e metriche con lo standard OpenTelemetry: lo sto approfondendo.
- Zabbix
Disaster recovery
In Dunbar ho introdotto il disaster recovery: l'infrastruttura è rimasta stabile anche dopo la mia uscita.