Ciao, mi presento: sono Massimo Bombino, e mi occupo dello Sviluppo di Software ad Alta Qualità da 30 anni, in particolare mi sono dedicato negli ultimi 20 anni al Software soggetto alla Certificazione Safety-Critical per il Settore Avionico e Aerospaziale, il settore più rigido e impegnativo ma anche quello dove ho imparato di più in assoluto su come impostare un processo di sviluppo software che sia veramente affidabile.
Ho lavorato (e lavoro tuttora) con aziende del calibro di: Ferrari Automobili, AUDI TTTech, Boeing, Airbus, Leonardo Finmeccanica, Aermacchi, Agusta Westland, Nortrhop Grumman, Piaggio Aerospace, Thales Alenia Space, Honeywell, Telespazio, Ansaldo, Hitachi, Datalogic, AUTEC Safety, Electrolux, Transenterix, Boston Scientific, STIGA, Tecnodal, Brusa e tantissime altre, aiutandole a ottimizzare il loro Ciclo di Sviluppo Software, identificare prima gli errori tramite la Modellazione e la Simulazione, migliorare la Strategia di Test, raggiungere prima la Certificazione.
Un corso quindi intensivo ed essenzialmente per PROGRAMMATORI E ARCHITETTI SOFTWARE o aspiranti tali: può essere tranquillamente il tuo primo corso di programmazione, senza saperne nulla prima.
Magari fosse stato il mio primo corso! Quante notti insonni, quante incazzature, quante problematiche avrei evitato…
Ma contiene così tanti concetti avanzati e poco insegnati, frutto della mia esperienza personale che oramai supera e di molto i 30 anni (sì, ho iniziato a programmare il BASIC e il PASCAL tipo a… 12-13 anni!) in centinaia di progetti e di clienti in tutto il mondo, dal gestionale all’aerospaziale, che tutto quel che ho appreso e concentrato in questo può essere di grandissima utilità anche a chi ha magari un sacco di anni di esperienza…. perché ti potrebbe evitare le testate contro il muro prese da me e dai miei colleghi e partner in questi anni in ambienti estremamente severi e critici.
E’ anche un corso per MANAGER: al di là degli aspetti tecnici di dettaglio, è un compendio di best practises, consigli strategici, impostazioni iniziali corrette ed errori da evitare. Come capirai continuando a leggere, grazie al distillato di esperienza personale nelle aziende e progetti in cui ho lavorato da dipendente, consulente e formatore, non è solamente un classico corso di programmazione, è una vera e propria guida strategica alla progettazione e scrittura di Software Sicuro. Per cui è fondamentale che siano concetti che padroneggi anche tu, per poterli implementare con il tuo team.
Ma se già programmi da tempo, perché mai dovresti rifare un corso di programmazione dopo anni dall’ultima volta che ne hai fatto uno?
Semplice: perché questo è il corso che avrei voluto fare io all’inizio della mia carriera ma non esisteva (e non esisteva fino ad ora!), invece di quello che “passava il convento”:
– manuali strettamente tecnici e didascalici
– corsi strutturati come un mero elenco di costrutti, strutture e dichiarazioni…
– prove su prove su prove, errori inspiegabili, crash disastrosi
– rifacimento di intere applicazioni e architetture per colli di bottiglia e problemi strutturali
– notti insonni, straordinari al lavoro, ritardi, problemi col cliente…
Oltre ad essere un corso tecnico, molto intenso e fitto di informazioni, è fondamentalmente un corso strategico: ti insegna il mindset corretto, l’impostazione iniziale, le scelte chiave, l’approccio necessario ad evitare grossi guai futuri.
Non sto a ripetere la frase del grandissimo Michael Jordan, di cui è uscito di recente il film a puntate “The Last Dance” su fatto che lui stesso, per diventare il più grande, ha imparato dai propri errori.
Quello che otterrai in questo corso senza respiro è proprio l’elenco delle cazzate meravigliose che ho commesso io (o visto commettere), delle scelte in apparenza intelligenti e poi rivelatesi disastrose, di tutti i “mai più!” che ho dovuto esclamare nella mia carriera e di conseguenza tutto quello che avrei dovuto fare (ed è il caso che cominci almeno a fare TU).
La differenza di questo rispetto ad altri N-mila corso esistenti al mondo, è proprio il fatto che è PREVENTIVO: non ti spiega all’inizio una serie di tecniche in fila, tra cui alcune estremamente pericolose e inefficienti, per poi scoprire solo dopo mesi o anni (se va bene in un corso avanzato, più spesso sulle tue spalle le conseguenze disastrose di certe scelte).
Ci sono cose nei linguaggi storici e moderni che sono estremamente rischiose e vanno usate con estrema cautela: perché allora insegnarle? Perché imparare a fare la nitroglicerina in casa, quando rischi di saltare in aria te, la tua casa, la tua famiglia e tutto il vicinato?
Fin da primo giorno, scoprirai non solo i dettagli tecnici, ma anche e soprattutto:
– Le scelte strategiche che devi fare prima di scrivere la prima linea di codice (linguaggio, sistema operativo, microprocessore, architettura, …)
– I compromessi e le conseguenze di certe decisioni di base che si ripercuoteranno in futuro
– Quali tecniche, costrutti, tecnicismi sono sicuri e affidabili e quali invece richiedono cautela e pianificazione, o sono da evitare del tutto
– Quali sono le Best-Practises, le linee guida, gli standard internazionali per lo sviluppo di Software più sicuri e affidabile
– Come evitare le sirene del marketing di tool e altre diavolerie che ti fanno andare fuori strada promettendo risultati irraggiungibili
– Gli errori più comuni, i trabocchetti, gli effetti collaterali da evitare a tutti i costi
Senza tutte queste informazioni fondamentali a completamento delle nozioni tecniche, sarebbe come insegnarti a cosa serve ogni singolo bottone, leva e manovella di un jet di linea, senza avere comunque la minima idea di cosa voglia dire pilotare un aereo.
Che tipo di applicazioni potrai sviluppare dopo un corso del genere?
Serve per fare app per telefonino o un software aeronautico questione di vita o di morte?
Meglio per programmare un gestionale oppure un delicatissimo dispositivo medicale?
Questo è un modulo formativo ESSENTIALS: quindi pur essendo ad altissima densità di informazioni rimane comunque un corso base, non è dedicato a un dominio specifico, un linguaggio preciso, un’architettura particolare. Non fa moltissima differenza se sviluppi app per telefonini, dispositivi embedded, sistemi gestionali.
I principi di base dello Sviluppo di Software Sicuro sono ESATTAMENTE GLI STESSI e vanno solo calati nella realtà tecnica in cui operi.
Per questo motivo, si tratta di un corso che ti potrebbe rendere già autonomo ed essere in grado di programmare quello che vuoi, ma richiede poi degli approfondimenti specifici, più tecnici e di dettaglio, che sarò lieto di suggerirti.
Detto questo, posso consigliarti questo corso se ricadi in uno di questi casi:
– Se sviluppi applicazioni che devono avere un alto grado di affidabilità e sicurezza (es. che trattano dati sensibili, transazioni economiche, oppure con tantissimi utenti)
– Se lavori in un settore Safety-Critical dove la sicurezza non è un optional (aerospazio, medicale, automotive, …)
– Se vuoi in generale incrementare l’Affidabilità e l’Efficienza del tuo processo di Sviluppo Software
– Infine, se lavori in maniera totalmente dedicata al Cliente per cui vuoi fornire un Software che massimizzi la Customer Satisfaction
Con questo bagaglio culturale immenso, condensato fitto fitto in una manciata di moduli di formazione, ti renderà già un programmatore evoluto e con un livello di esperienza e di padronanza della programmazione software che nessun altro corso “teorico” potrebbe mai darti
“Ci sono buoni corsi di programmazione software, che consentono allo studente di essere più intelligente dopo lo studio rispetto a prima. Ci sono grandi libri, che permettono al lettore di essere più intelligente, mentre insegnano simultaneamente le migliori strategie per colmare le lacune di conoscenza.
Il corso di Massimo è fantastico in quanto spiega sia il mondo del software critico, sia le intuizioni per risolvere molti aspetti legati alla qualità del codice, oggi sempre più importanti.
Max ha fatto un lavoro magistrale nel rendere interessante e divertente un argomento normalmente complesso e noioso. Ci mostra in questo corso come capire meglio il regno dello sviluppo del software Embedded & Realtime e come applicare queste conoscenze nel mondo reale.
Io e Massimo abbiamo entrambi commesso degli errori tecnici sostanziali nei nostri decenni combinati di sviluppo di software e sistemi critici per la sicurezza:
con questo libro, tu puoi prevenire gli stessi errori e
capire al meglio come evitare di aggiungerne di altri”
Vance Hilderman – CEO di AFuzion, guru della Certificazione Avionica
“Il software è tradizionalmente progettato, codificato, quindi testato.
Tuttavia, una codifica di scarsa qualità e una fase di test effettuata solamente alla fine del processo, possono aggiungere una quantità significativa di tempo e di rischio a un progetto, rendendo probabile che gli sviluppatori lavorino con software di scarsa qualità, causando ulteriori ritardi man mano che vengono rilevati più problemi. La strategia ideale consiste nell’avere un processo che supporti il test il più presto possibile nel ciclo di vita dello sviluppo e che consenta di apportare modifiche rapidamente.
La Continuous Integration si concentra sulla capacità di creare e testare un’applicazione ogni volta che un cambiamento viene effettuato. I test manuali funzionano bene con una piccola base di codice, ma con il software sempre più al centro di tanti prodotti, questo processo deve essere automatizzato per far fronte alla sfida impari. Risolvere il problema della qualità del software e del time-to-market è una lotta quotidiana, ma la Continuous Integration aiuta gli sviluppatori e gli ingegneri a risolvere questi problemi.
Mettendo in atto un motore di integrazione continua, è possibile testare prima nel processo software (spostandosi a sinistra del V-Cycle), consentendo quindi una migliore qualità del software, un time-to-market ridotto e una solida base di codice per il futuro.
Massimo, in questo corso, ci mostra come applicare concetti come la Continuous Integration, DevOps, il Change-Based Testing in un modo che sia accessibile anche alle piccole e medie imprese, con un fattore di rendimento 100 volte superiore rispetto ad altri approcci, senza alcun sacrificio per la qualità, anzi migliorandola di pari passo”.
Niroshan Rajadurai – Global Advanced Security Sales at GitHub, Software Factory Evangelist
Mi chiamo Massimo Bombino e lavoro da oltre 25 anni nel settore dello sviluppo software e ho avuto modo di ricoprire una lunga serie di ruoli legati al ciclo di vita del software, in vari ambiti (da sviluppatore a manager, dalla modellazione al testing, da dipendente a libero professionista, dal software gestionale a quello aerospaziale, dall’ambiente safety-critical a quello business-critical).
Ho tenuto decine di corsi di programmazione, design, Certificazione Aerospaziale e Industriale. Insomma, un vero e proprio Tecnocrate.
Per anni sono stato costretto a combattere contro tutti i problemi correlati allo sviluppo del software: ritardi, incomprensioni, bug, lamentele da parte di clienti, manager. Ed una sensazione di impotenza nel vedere come il software, benché onnipresente in qualunque aspetto della nostra vita, in realtà sia una disciplina completamente sottovalutata, sottostimata e bistrattata ma di assoluta e sempre crescente importanza e soprattutto pericolo.
Mi sono avvicinato oramai oltre 15 anni fa al mondo del software Safety Critical e della Certificazione tipico di ambienti Aerospaziali, Ferroviari, Medicali, Automobilistici ed ho imparato un sacco di cose interessanti ed insospettabili su come scrivere del codice in maniera professionale, ingegneristica e scientifica che non sia solo più stabile e sicuro ma anche meno costoso, in maniera più efficiente e veloce. Ma con un’infrastruttura di metodi, di procedure, di documentazione quasi del tutto inavvicinabile ad una PMI dove il numero di addetti software spesso è molto limitato.
Per qualsiasi dubbio o chiarimento
Assistenza:
Telefono: +39-349-6736781