Consulenza e trasferimento tecnologico
progettare meglio per crescere insieme
Un progetto migliore non può prescindere da un team migliore. L'effetto tipico di un'attività di consulenza deve consistere nell'instaurare una sinergia tra gli artefatti prodotti e tutti coloro che sono attivamente coinvolti nel processo di produzione. Non è infatti possibile produrre un prodotto migliore senza investire nella crescita collettiva del suo gruppo di lavoro. Tenendo in cosiderazione questi aspetti, le attività di consulenza che propongo raramente sono focalizzate al singolo progetto. Sono piuttosto un'opportunità per analizzare processi, artefatti e best practice, ruoli e competenze. Ogni realtà aziendale è diversa, per cui è necessario adattare pratiche e politiche in considerazione della cultura preesistente. Non prometto risultati miracolosi. Non sono un venditore di tecnologie, né mi interessa instaurarmi a tempo indefinito presso il cliente come consulente "tutto-fare". Ho una competenza nelle tecnologie object-oriented, nelle architetture software, nell'approccio model-driven, nella progettazione di sistemi critici. Se siete interessati ad introdurre o a migliorare i processi inerenti a tali aspetti nella vostra azienda, contattatemi.
approccio ingegneristico
L'approccio che propongo, seppure filtrato attraverso la prospettiva della modellazione UML, è e rimane un approccio tipicamente ingegneristico. Costruire "buon" software significa ingegnerizzarlo bene, ossia costruirlo seguendo tecniche e pratiche ben consolidate di ingegneria del software. Ritengo che la professione legata allo sviluppo di software debba distinguersi nettamente rispetto ad un approccio artigianale (hobbistico), dove tali pratiche non rientrano nel bagaglio culturale aziendale e quindi sono applicate solamente occasionalmente, in modo ad hoc. Nessun sistema industriale seriamente sviluppato dovrebbe essere realizzato senza un progetto architetturale e di dettaglio, senza un piano di test, senza misure oggettive delle caratteristiche di qualità di codice e design, tutti aspetti che incidono sui costi di manutenzione ed estensione (la voce di spesa maggiore di un progetto software che entra in produzione).