mercoledì 4 gennaio 2012

Come imparare a programmare ?

Un tema spesso dibattuto sul web e fonte di ansia per un giovane appassionato di computer, è come imparare a fare da soli, almeno un po' delle cose che si vedono girare sul computer appena comprato: cioè come imparare a programmare.

Il pensiero comune e il consiglio che ai miei tempi (fine anni 80) mi veniva dato, era di non pensare a cercare una scuola che insegnasse a programmare, perché lo avrei imparato più tardi all'Università.

L'informatica centra con i computer non più di quanto l'astronomia centri con i telescopi (Dijkstra).
Purtroppo l'università pare centrare con la programmazione non più di quanto una scuola alberghiera centri con la scaloppina che mi preparo stasera, leggendo il mio libretto di ricette. (Io, col dovuto rispetto per Dijkstra).

Ai tempi della scelta dell'università, qui in Italia, si vedeva con sospetto, che Informatica era una variazione di Ingegneria, con un biennio quasi uguale. Quindi ore e ore passate non tanto ad apprendere teoria, quando ad immergersi nell'astrazione.

Dopo 5 anni di  liceo scientifico maxisperimentale di Lugo quasi completamente inutile al mio scopo, un ingegnere, che dirigeva una software house, mi consigliò di non rimanere "parcheggiato" per anni all'università, bensì di frequentare un corso professionalizzante, che mi insegnasse cosa mi serviva veramente. Ne trovai uno a Forlì, di un anno, finanziato dalla comunità europea. Seguii il consiglio e ne fui soddisfatto.
Incontro oggi spesso dei laureati in ingegneria e in informatica, i quali lamentano che solo un 10% di ciò che hanno imparato, serve veramente nel mondo del lavoro. Sulla presunta flessibilità mentale poi, anche la settimana enigmistica aiuta il cervello...

Oggi la situazione è migliorata, nel senso che anche all'università si stanno rendendo conto che sapere disegnare una parabola col Pascal, non è proprio ciò, che il mercato cerca.

Il mercato esiste, bisogna che anche gli intellettuali e gli accademici se ne accorgano.

La riforma universitaria della Moratti doveva servire a creare delle scuole professionalizzanti, sulla falsa riga di quelle europee, inglesi e tedesche in primis.
L'obbiettivo, secondo me, è stato mancato prima di tutto perché l'approccio di noi latini, e degli italiani in particolare, è ben lontano dal pragmatismo anglosassone.

Ci piace il bizantinismo al punto tale, che ci sembra necessario. Per andare da un punto A ad un punto B non si cerca la strada più breve, il segmento, bensì la curva che politicamente accontenta più fazioni, come se dei poli magnetici deviassero il percorso...

Le lauree brevi triennali, continuano a dare un'offerta formativa troppo astratta, che non si spende sul mercato, e non fornisce, per ragioni di tempo contingentato, le basi necessarie per affrontare gli argomenti più avanzati, col doppio risultato, che raggiungere la laurea è difficile, perché il percorso non offre ad ogni tappa le basi utili sulle quali poggiare l'apprendimento per gli esami successivi, poi perché l'offerta non è sufficiente affinché il mercato possa assorbire i neolaureati senza costi di formazione specifica.

Se si considera che in azienda di formazione se ne fa pochissima perché "con la crisi bisogna tagliare le spese", figuriamoci come possono aspettare che un neo assunto apprenda ciò che gli serve sul campo.
Il risultato reale è che solo chi si adatta velocemente ad un posto di lavoro poco formativo, sopravvive in azienda, per gli altri è precariato.

Invece che lamentarsi sempre per i fondi troppo scarsi, a ragione, le università dovrebbero rivedere il loro rapporto con le imprese e con il mondo del lavoro, smettendo di guardarlo dall'alto in basso, in attesa che lo Stato, se può, imponga una riforma ancora più radicale, cioè in attesa che l'Europa ce la imponga, come se fosse un tutor che rimedia alla nostra incapacità di reggerci sulle nostre gambe.

Per rispondere alla domanda che si può porre un giovane appassionato di computer di oggi, io direi:
"non aspettare fino all'università, ma comincia da subito a studiare magari in un istituto tecnico ad indirizzo informatico oppure a ragioneria programmatori. Comunque fai quello che ti piace e nessuno ti impedisce di avvicinarti a qualche manuale americano di ingegneria del software. Impara bene l'inglese, ma soprattutto sfoga la tua creatività naturale, magari programmando".

Qualche facoltà, piano piano, prova a cambiare il cliché che vede la programmazione come matematica applicata. Trattandosi di una materia così interdisciplinare, è bello vedere sorgere corsi di studio come Informatica Umanistica a Pisa, che forma un background utile nel mondo della conservazione dei beni culturali (il vero  petrolio italiano), oppure a Trento una facoltà di Interfacce e Tecnologie per la Comunicazione, inserite nella facoltà di Scienze Cognitive, oppure Informatica per il Management a Bologna, con nozioni di economia e diritto.

Avendo fatto il programmatore professionista per 15 anni, ho sempre sentito la mancanza di un background  di economia aziendale, diritto di internet e psicologia (provate a lavorare in team o a entrare in una qualsiasi azienda e vi renderete conto di quanto valga l'intelligenza emotiva...)

Ciao !

 

3 commenti:

  1. Gent.mo Paolo,
    Da laureato in Ingegneria Biomedica divenuto in seguito sviluppatore web devo dirti che hai colto proprio nel segno.
    Fortunatamente nel corso che ho seguito io al Politecnico di Milano era incluso anche un esame (a scelta) di "Informatica Applicata", che consisteva, essenzialmente, nel creare una applicazione web cominciando da zero.
    Per me è stato uno di quegli esami che, letteralmente, ti cambiano la vita.

    Hai intitolato il tuo saggio "come imparare a programmare?", ecco, forse un aspetto che hai trascurato di sviluppare è l'aspetto meramente pratico. Finito di leggere il tuo articolo qualcuno potrebbe chiedersi: "ok, ma adesso, da dove comincio?", o ancora: "come faccio a sapere se mi piacerebbe *davvero* imparare a programmare?".
    Per dare una risposta anche a questi quesiti vorrei segnalare uno dei miei manuali preferiti, scritto proprio per questo intento da Chris Pine: http://pine.fm/LearnToProgram/ del quale è disponibile anche una versione in italiano qui: http://corsorubyonrails.com/imparare-a-programmare/

    Se gli dai un'occhiata sarei lieto di sapere sapere cosa ne pensi.
    Duccio

    RispondiElimina
    Risposte
    1. Ciao ! Grazie mille per l'interesse che hai mostrato nel mio blog !
      In effetti per chi comincia o per chi vuole sapere se può piacergli la programmazione, il percorso che consiglio è poco istituzionale: ho scritto "non aspettare fino all'università, ma comincia da subito a studiare magari in un istituto tecnico ad indirizzo informatico oppure a ragioneria programmatori."
      Per chi ha qualche anno in più, otrei aggiungere che ci sono corsi, ma bisogna stare attenti alle truffe.

      Imparare a programmare è un po' come imparare a suonare la chitarra elettrica: bisogna trovare un buon maestro, studiare, studiare poi ancora studiare. Dove per studio non intendo solo la teoria ma provare sul campo. L'errore è un insegnante esso stesso.

      Ci sono difficoltà tecniche e tempi da rispettare, bisogna imparare a trovare il giusto compromesso, bisogna imparare ad ascoltare il committente, bisogna imparare a convincerlo a volte che ciò che chiede non conviene e non è perché siamo imbranati noi o stupido lui, ma solo perché la realtà a volte non coincide con i sogni...

      Come conclusione, consiglierei a chi comincia di chiedere a qualche azienda seria di fargli fare un po' di "bottega" con un anziano ("senior"), che abbia la pazienza di spiegare il "perché" delle cose.

      Appena posso darò un'occhiata ai link che mi hai gentilmente indicato, per adesso ti saluto e ti faccio un grande "in bocca al lupo" per la tua carriera e per una vita felice, che è la cosa più importante.

      Elimina
  2. Ho letto il sito in italiano sul corso di Ruby e l'ho trovato veramente carino.

    RispondiElimina