Questo articolo ha suscitato in me, immediatamente, tre riflessioni (piu’ 2):
1. Io ho preso la patente « tardi » (avevo quasi 27 anni). Ovviamente ho studiato per l’esame di teoria. Mi ricordo come fosse oggi come mio papa’ mi spiegasse il funzionamento delle diverse parti del motore e della meccanica, con parole ed esempi che andavano oltre il testo che serviva per passare l’esame.
Lui mi diceva che dovevo capire bene quelle cose, perché mi servivano sia per ben guidare ma anche per capire e anticipare i problemi.
Con la spocchia del giovane moderno (di allora…), non gli ho dato retta. In fondo gia’ lavoravo, non avevo voglia di « perdere tempo » su cose di cui non vedevo un’utilita’ pratica. mi sono fatto il mio esame, l’ho passato subito e ho dimenticato assolutamente tutto.
E’ vero che le auto, oggi, sono meno « manipolabili » che 40 anni fa…. Ma quante volte mi sono detto che se avessi capito di piu’, magari avrei guidato diversamente o, addirittura, avrei acquistato dei modelli diversi.
2. Il libro « Outliers » di Malcom Gladwell.
Ossia un libro che mostra esempi concreti, relativi a persone che sono diventate importanti nel loro mestiere, di quanto lavoro oscuro ci sia dietro. Sicuramente (o, almeno, immagino…) Bill Gates (per fare un esempio) non ha piu’ programmato lui stesso gli strumenti che la MSFT ha creato. Ma sicuramente l’approccio lo ha seguito lungo buona parte della sua carriera
3 .man mano che invecchio, e che ho un po’ piu’ di tempo per pensare, mi rendo conto quanto lavoro, quanta dedizione, quanta precisione ci sia dietro a tantissime cose che ci affascinano.
Dalla preparazione minuziosa delle situazioni di gioco in una partita di calcio, all’orchestrazione delle tecnologie e delle persone con skills diversi dietro ad una vettura di Formula 1, alla determinazione puntigliosa e infaticabile ricerca dell’innovazione e della perfezi9ne di uno spettacolo, di un film, di un concerto… dellla cerimonia di apertura dei Giochi di Milano-Cortina.
INCISO: Quanto studio, quanta fatica, quanti « tentativi », quante cadute per arrivare a questi risultati.
Sono il lavoro di alcune persone, nemmeno cosi’ poche.
Certo, uno puo’ dire: ma quanto guadagnano! E poi sono delle eccezioni, nel mio lavoro io devo cercare di cavarmela, mica arrivare alla perfezione.
4. io ho tantissime lacune. E non riuscirei a fare quel poco che riesco se non fossi supportato da chi mi ama e da chi lavora perche’ io riesca a fare quel poco.
Mi sto (con colpevole ritardo) rendendo conto di quanto lavoro, quanta conoscenza, quanta precisione, quanta concentrazione ci vuole per fare la differenza nelle cose di ogni giorno.
Prendiamo il cibo. Oggi possiamo comprare piatti gia’ pronti, che ci liberano da quel « task » cosi’ tante volte invisibile. Ci sono poi i robot che fanno sempre piu’ cose….
Dunque saper cucinare non serve?
5. termino con la prima delle cose a cui ho pensato leggendo l’articolo: la CALCOLATRICE.
Mio papa’ mi ha regalato la prima calcolatrice (una Casio a cristalli liquidi che ho ancora) quando ho iniziato il primo anno al Politecnico, ottobre 1977.
Ho litigato con i miei figli per far loro capire l’importanza di sapere fare i conti a mente…. Perché il riflesso di capire se il risultato di un’operaione e’ corretto non te lo da la calcolatrice. Se sbagli a digitare e metti una virgola o uno zero e ti fidi ciecamente del risultato….
Sono orgoglioso di essere ancora capace di fare le operazioni a mente. E quante volte quel riflesso, quella conoscenza diffusa, silenziosa, invisibile mi ha accompagnato, non solo nella mia vita professionale.
Penso sia giusto imparare come funzionano le cose per un ingegnere, anche se poi nel mondo del lavoro si terrà ad un livello di astrazione più alto. Soprattutto per i corsi base dei primi 2-3 anni che ti fanno capire come funziona il mondo.
Uno degli esempi più calzanti dal Poli é il corso di Sicurezza Informatica con il Prof. Decina copriva tutta la pratica del calcolo della cifratura 3DES/RSA/DSA etc, incluso fare i conti a mano degli esponenziali con square e multiply.
Ho mai scritto una libreria RSA? Chiaramente no. Ma sapere far i conti con p = 3 e q = 11 e sapere le meccaniche di dettaglio mi ha permesso di lavorare con protocolli di sicurezza e librerie avanzate senza mai avere un dubbio, incluso durante il debugging di problemi intricati. Del 100% del contenuto corso ricordo il 20% chiave per il mio lavoro, ma perché il mio cervello ha processato quel 100% e distillato il 20% chiave. Se il Prof. Decina mi avesse semplicemente insegnato la teoria della cifratura simmetrica e asimmetrica probabilmente avrei comunque ricordato il 20%, ma a quel punto di un 100% che era tutto chiave e avrei una comprensione incompleta della materia.
Sulla base della mia esperienza sono a favore di insegnare ai nuovi studenti a programmare, con chiaramente qualche capitolo su come GenAI li può supportare, ma anche i rischi associati.
AI fa discretamente bene il reverse engineering. Dovrebbe essere in grado di produrre test (deterministici) per misurare l'efficacia dell'ottimizzazione e aiutare un refactoring verso qualcosa di più manutenibile pur rimanendo molto orientato all'efficienza come Rust (che non consco ma di cui mi parlano benissimo) ma anche solo C. Comunque, se qualcuno a metà dei 90 si era sognato di farsi un DB proprietario, tanto ”deterministico” non lo era quindi chissà le ottimizzazioni 😅
In 42 anni di programmazione (ne ho 50, e si ho iniziato a 8 con MSX) mi pare un discorso che si ripete, dai puristi dell assembly (68k il mio) sul C e figurati il Pascal e via così fino agli IDE e i RAD. Uso AI tantissimo e lavoro con clienti da una trentina di paesi che dovrebbero essere tecnici a livello apicale nelle loro società. L AI è uno strumento fantastico per le cose semplici, di aiuto per le medie, controproducente per quelle difficili. Gli incapaci c'erano, ci sono e ci saranno e non li salverà l AI. Ma è vero, loro ne sono già schiavi e vittime. Se vuole un consiglio insegni Python e R ai suoi studenti usando Markdown e yaml, la ringrazieranno.
Il parallelo con assembly e linguaggi 3G mi ha fatto venire in mente un caso che abbiamo nel nostro prodotto. Il core DB proprietario scritto 30 anni fa ha alcune ottimizzazioni in assembly che oggi nessuno del mio team tocca e prende per buone. Analizzandole in profondità perderemmo tantissime performance se lasciassimo la scelta al compilatore. Però, come trovo 1 caso in cui andare a basso livello sia vantaggioso, se scrivessimo tutto in assembly ci sarebbero migliaia di implementazioni molto meno ottimali di quelle che produce il compilatore a partire da C o C++.
Riflettendoci, oggi con un team che ha studiato tra i 3 e i 15 anni fa, non penso che a nessuno sarebbe venuto in mente di fare ottimizzazioni del genere. Ora mi chiedo se il software sarà in gran parte generato da AI nei prossimi anni, avremo probabilmente meno comprensione delle meccaniche del coding, molte meno ottimizzazioni, ma on average anche meno errori grossolani? O forse non andrà così perché i compilatori sono deterministici e i coding agent non lo sono?
Talvolta trasferire la conoscenza del dominio al programmatore può essere quasi impossibile e costringe l’esperto del dominio a farsi programmatore.
Sono laureato in ingegneria chimica, mi sono occupato di modellazione dei processi chimici in ambito R&D per quarant’anni e mi sono quasi sempre fatto carico della parte di programmazione.
Tutto iniziò con l’esame di Programmazione dei calcolatori elettronici sostenuto nel 1979 con il prof. Carlo Ghezzi e mi sembra bizzarro che questo insegnamento possa ridursi a insegnare a fare delle richieste a un software.
Questo articolo ha suscitato in me, immediatamente, tre riflessioni (piu’ 2):
1. Io ho preso la patente « tardi » (avevo quasi 27 anni). Ovviamente ho studiato per l’esame di teoria. Mi ricordo come fosse oggi come mio papa’ mi spiegasse il funzionamento delle diverse parti del motore e della meccanica, con parole ed esempi che andavano oltre il testo che serviva per passare l’esame.
Lui mi diceva che dovevo capire bene quelle cose, perché mi servivano sia per ben guidare ma anche per capire e anticipare i problemi.
Con la spocchia del giovane moderno (di allora…), non gli ho dato retta. In fondo gia’ lavoravo, non avevo voglia di « perdere tempo » su cose di cui non vedevo un’utilita’ pratica. mi sono fatto il mio esame, l’ho passato subito e ho dimenticato assolutamente tutto.
E’ vero che le auto, oggi, sono meno « manipolabili » che 40 anni fa…. Ma quante volte mi sono detto che se avessi capito di piu’, magari avrei guidato diversamente o, addirittura, avrei acquistato dei modelli diversi.
2. Il libro « Outliers » di Malcom Gladwell.
Ossia un libro che mostra esempi concreti, relativi a persone che sono diventate importanti nel loro mestiere, di quanto lavoro oscuro ci sia dietro. Sicuramente (o, almeno, immagino…) Bill Gates (per fare un esempio) non ha piu’ programmato lui stesso gli strumenti che la MSFT ha creato. Ma sicuramente l’approccio lo ha seguito lungo buona parte della sua carriera
3 .man mano che invecchio, e che ho un po’ piu’ di tempo per pensare, mi rendo conto quanto lavoro, quanta dedizione, quanta precisione ci sia dietro a tantissime cose che ci affascinano.
Dalla preparazione minuziosa delle situazioni di gioco in una partita di calcio, all’orchestrazione delle tecnologie e delle persone con skills diversi dietro ad una vettura di Formula 1, alla determinazione puntigliosa e infaticabile ricerca dell’innovazione e della perfezi9ne di uno spettacolo, di un film, di un concerto… dellla cerimonia di apertura dei Giochi di Milano-Cortina.
INCISO: Quanto studio, quanta fatica, quanti « tentativi », quante cadute per arrivare a questi risultati.
Sono il lavoro di alcune persone, nemmeno cosi’ poche.
Certo, uno puo’ dire: ma quanto guadagnano! E poi sono delle eccezioni, nel mio lavoro io devo cercare di cavarmela, mica arrivare alla perfezione.
4. io ho tantissime lacune. E non riuscirei a fare quel poco che riesco se non fossi supportato da chi mi ama e da chi lavora perche’ io riesca a fare quel poco.
Mi sto (con colpevole ritardo) rendendo conto di quanto lavoro, quanta conoscenza, quanta precisione, quanta concentrazione ci vuole per fare la differenza nelle cose di ogni giorno.
Prendiamo il cibo. Oggi possiamo comprare piatti gia’ pronti, che ci liberano da quel « task » cosi’ tante volte invisibile. Ci sono poi i robot che fanno sempre piu’ cose….
Dunque saper cucinare non serve?
5. termino con la prima delle cose a cui ho pensato leggendo l’articolo: la CALCOLATRICE.
Mio papa’ mi ha regalato la prima calcolatrice (una Casio a cristalli liquidi che ho ancora) quando ho iniziato il primo anno al Politecnico, ottobre 1977.
Ho litigato con i miei figli per far loro capire l’importanza di sapere fare i conti a mente…. Perché il riflesso di capire se il risultato di un’operaione e’ corretto non te lo da la calcolatrice. Se sbagli a digitare e metti una virgola o uno zero e ti fidi ciecamente del risultato….
Sono orgoglioso di essere ancora capace di fare le operazioni a mente. E quante volte quel riflesso, quella conoscenza diffusa, silenziosa, invisibile mi ha accompagnato, non solo nella mia vita professionale.
Penso sia giusto imparare come funzionano le cose per un ingegnere, anche se poi nel mondo del lavoro si terrà ad un livello di astrazione più alto. Soprattutto per i corsi base dei primi 2-3 anni che ti fanno capire come funziona il mondo.
Uno degli esempi più calzanti dal Poli é il corso di Sicurezza Informatica con il Prof. Decina copriva tutta la pratica del calcolo della cifratura 3DES/RSA/DSA etc, incluso fare i conti a mano degli esponenziali con square e multiply.
Ho mai scritto una libreria RSA? Chiaramente no. Ma sapere far i conti con p = 3 e q = 11 e sapere le meccaniche di dettaglio mi ha permesso di lavorare con protocolli di sicurezza e librerie avanzate senza mai avere un dubbio, incluso durante il debugging di problemi intricati. Del 100% del contenuto corso ricordo il 20% chiave per il mio lavoro, ma perché il mio cervello ha processato quel 100% e distillato il 20% chiave. Se il Prof. Decina mi avesse semplicemente insegnato la teoria della cifratura simmetrica e asimmetrica probabilmente avrei comunque ricordato il 20%, ma a quel punto di un 100% che era tutto chiave e avrei una comprensione incompleta della materia.
Sulla base della mia esperienza sono a favore di insegnare ai nuovi studenti a programmare, con chiaramente qualche capitolo su come GenAI li può supportare, ma anche i rischi associati.
AI fa discretamente bene il reverse engineering. Dovrebbe essere in grado di produrre test (deterministici) per misurare l'efficacia dell'ottimizzazione e aiutare un refactoring verso qualcosa di più manutenibile pur rimanendo molto orientato all'efficienza come Rust (che non consco ma di cui mi parlano benissimo) ma anche solo C. Comunque, se qualcuno a metà dei 90 si era sognato di farsi un DB proprietario, tanto ”deterministico” non lo era quindi chissà le ottimizzazioni 😅
In 42 anni di programmazione (ne ho 50, e si ho iniziato a 8 con MSX) mi pare un discorso che si ripete, dai puristi dell assembly (68k il mio) sul C e figurati il Pascal e via così fino agli IDE e i RAD. Uso AI tantissimo e lavoro con clienti da una trentina di paesi che dovrebbero essere tecnici a livello apicale nelle loro società. L AI è uno strumento fantastico per le cose semplici, di aiuto per le medie, controproducente per quelle difficili. Gli incapaci c'erano, ci sono e ci saranno e non li salverà l AI. Ma è vero, loro ne sono già schiavi e vittime. Se vuole un consiglio insegni Python e R ai suoi studenti usando Markdown e yaml, la ringrazieranno.
Il parallelo con assembly e linguaggi 3G mi ha fatto venire in mente un caso che abbiamo nel nostro prodotto. Il core DB proprietario scritto 30 anni fa ha alcune ottimizzazioni in assembly che oggi nessuno del mio team tocca e prende per buone. Analizzandole in profondità perderemmo tantissime performance se lasciassimo la scelta al compilatore. Però, come trovo 1 caso in cui andare a basso livello sia vantaggioso, se scrivessimo tutto in assembly ci sarebbero migliaia di implementazioni molto meno ottimali di quelle che produce il compilatore a partire da C o C++.
Riflettendoci, oggi con un team che ha studiato tra i 3 e i 15 anni fa, non penso che a nessuno sarebbe venuto in mente di fare ottimizzazioni del genere. Ora mi chiedo se il software sarà in gran parte generato da AI nei prossimi anni, avremo probabilmente meno comprensione delle meccaniche del coding, molte meno ottimizzazioni, ma on average anche meno errori grossolani? O forse non andrà così perché i compilatori sono deterministici e i coding agent non lo sono?
Talvolta trasferire la conoscenza del dominio al programmatore può essere quasi impossibile e costringe l’esperto del dominio a farsi programmatore.
Sono laureato in ingegneria chimica, mi sono occupato di modellazione dei processi chimici in ambito R&D per quarant’anni e mi sono quasi sempre fatto carico della parte di programmazione.
Tutto iniziò con l’esame di Programmazione dei calcolatori elettronici sostenuto nel 1979 con il prof. Carlo Ghezzi e mi sembra bizzarro che questo insegnamento possa ridursi a insegnare a fare delle richieste a un software.
Professor Della Vigna, anno accademico 1978/1979 :-)
Io ho fatto quell'esame con Carlo nel 1978 :-)