Listen

Description

Traduzione in italiano di Daniel Falbo dall’essay originale di Paul Graham "Undergraduation" [Marzo 2005].

Recentemente ho ricevuto diverse mail da studenti di informatica che mi chiedono come comportarsi all'università. Potrei non essere la miglior fonte di consigli, perché io all'università ho fatto filosofia. Tuttavia, ho frequentato talmente tanti corsi di informatica che la maggior parte degli studenti di informatica pensava che anch’io lo fossi. Di certo, ero uno smanettone, un hacker.

Hacking

Cosa dovreste fare all'università per diventare buoni hacker? Ci sono due cose principali che potete fare: diventare molto bravi nella programmazione e imparare molto su problemi specifici e interessanti. Queste due cose si rivelano equivalenti, perché l’una spinge a fare l'altra.

Per diventare bravi nella programmazione, dovete (a) lavorare molto (b) su problemi difficili. E il modo per costringervi a lavorare su problemi difficili è quello di impegnarvi in un progetto molto coinvolgente.

Probabilmente questo progetto non sarà un compito di scuola. Il mio amico Robert ha imparato molto scrivendo software di reti mentre era uno studente universitario. Uno dei suoi progetti consisteva nel collegare Harvard con l’Arpanet; era stata uno dei nodi originali, ma nel 1984 la connessione era morta. Non solo questo lavoro non era per un corso dell’università, ma poiché vi dedicò tutto il suo tempo trascurando gli studi, fu espulso dall’università per un anno. Alla fine le cose si sono sistemate, e ora è professore all’ MIT. Per voi probabilmente sarebbe meglio non arrivare a questo estremo; all'epoca gli causò molte preoccupazioni.

Un altro modo per diventare bravi nella programmazione è trovare altre persone che lo sono e imparare da loro. I programmatori tendono a raggrupparsi in tribù in base al tipo di lavoro che svolgono e agli strumenti che utilizzano, e alcune tribù sono più intelligenti di altre. Guardatevi intorno e osservate su cosa sembrano lavorare le persone più intelligenti: di solito c'è un motivo.

Alcune delle persone più intelligenti che vi circondano sono professori. Un modo per trovare un lavoro interessante è quello di offrirsi come assistente di ricerca. I professori sono particolarmente interessati a persone che possano risolvere per loro noiosi problemi di tipo amministrativo, quindi questo è un modo per farsi strada. Ciò che temono sono le persone poco serie e quelli che abbelliscono solo il curriculum. È fin troppo comune che l’arrivo di un assistente aumenti solo il lavoro. Quindi, dovete far capire che voi lo diminuirete.

Non scoraggiatevi se vi dicono di no. Il rifiuto è quasi sempre meno personale di quanto si pensi. Passate al prossimo. (Questo vale anche per gli appuntamenti).

Attenzione, perché anche se la maggior parte dei professori sono intelligenti, non tutti lavorano su cose interessanti. I professori devono pubblicare risultati inediti per avanzare la loro carriera, ma c'è più concorrenza nelle aree di ricerca più interessanti. Quindi i professori meno ambiziosi pubblicano una serie di articoli le cui conclusioni sono inedite perché non c’è nessun altro al quale interessano. È meglio evitarli.

Io non ho mai lavorato come assistente di ricerca, quindi mi sento un po' disonesto a consigliare questa strada. Ho imparato a programmare scrivendo cose mie, in particolare cercando di capire come funzionasse SHRDLU di Winograd, uno dei primi programmi di comprensione del linguaggio naturale. Ero ossessionato da quel programma come una madre con un bambino appena nato.

Qualunque siano gli svantaggi di lavorare da soli, il vantaggio è che il progetto è tutto vostro. Non dovete mai scendere a compromessi o chiedere il permesso a nessuno e se avete una nuova idea potete semplicemente sedervi e iniziare a implementarla.

Nei vostri progetti non dovete preoccuparvi delle novità (come devono fare i professori) o dei profitti (come devono fare le aziende). Tutto ciò che conta è la difficoltà tecnica del progetto, che non ha alcuna correlazione con la natura dell'applicazione. Applicazioni "serie" come i database sono spesso banali e noiose dal punto di vista tecnico (se soffrite di insonnia, provate a leggere letteratura tecnica sui database), mentre applicazioni "frivole" come i giochi sono spesso molto sofisticate. Sono sicuro che là fuori ci sono aziende di giochi che lavorano su prodotti con un contenuto intellettuale superiore a quello delle ricerche svolte in nove decimi dei dipartimenti di informatica.

Se fossi all'università ora probabilmente lavorerei sulla grafica: un gioco in rete, per esempio, o uno strumento per l'animazione 3D. Quando ero studente i processori non erano abbastanza veloci da permettere di fare qualcosa di interessante con la grafica, ma è difficile immaginare qualcosa di più divertente su cui lavorare adesso.

Matematica

Quando frequentavo l'università, molti professori credevano (o almeno desideravano) che l'informatica fosse un ramo della matematica. Quest’idea era più sentita ad Harvard, dove fino agli anni '80 non c'era nemmeno un corso di laurea in informatica; fino ad allora ci si doveva specializzare in matematica applicata. Era quasi altrettanto grave alla Cornell. Quando dissi al temibile professor Conway che ero interessato all'intelligenza artificiale (un tema molto caldo all'epoca), mi disse che avrei dovuto invece specializzarmi in matematica. Non sono ancora sicuro se pensasse che l'IA richiedesse tanta matematica o se pensasse che l'IA fosse un'assurdità e che specializzarmi in qualcosa di rigoroso mi avrebbe guarito da queste stupide ambizioni.

In realtà, la quantità di matematica necessaria come hacker è molto inferiore a quella che la maggior parte dei dipartimenti universitari voglia ammettere. Non credo che serva molto di più della matematica delle scuole superiori più alcuni concetti di teoria del calcolo. (Bisogna sapere cos'è un algoritmo n^2 se si vuole evitare di scriverlo). A meno che non si intenda scrivere applicazioni matematiche, ovviamente. La robotica, ad esempio, è tutta matematica.

Ma anche se per la maggior parte dei lavori di hacking non serve letteralmente la matematica, nel senso di conoscere i 1001 trucchi per fare le derivate, la matematica vale molto la pena di essere studiata per il suo valore intrinseco. È una preziosa fonte di metafore per quasi tutti i tipi di lavoro. Vorrei aver studiato più matematica all'università per questo motivo.

Come molte persone, da bambino ho subito abusi matematici. Ho imparato a pensare alla matematica come a un insieme di formule che non erano belle né avevano alcuna relazione con la mia vita, ma che dovevano essere memorizzate per andare bene ai test.

Una delle cose più preziose che si possano fare all'università è imparare a conoscere il vero significato della matematica. Potrebbe non essere facile, perché molti bravi matematici sono pessimi insegnanti. E anche se ci sono molti libri popolari sulla matematica, pochi sembrano buoni. I migliori che mi vengono in mente sono quelli di Sawyer. E naturalmente Euclide.

Tutto

Thomas Huxley diceva: "Cercate di imparare qualcosa su tutto e tutto su qualcosa". La maggior parte delle università mira a questo ideale.

Ma cosa significa tutto? Per me significa tutto ciò che si impara lavorando onestamente su problemi difficili. Tutto questo lavoro tende a essere correlato, nel senso che le idee e le tecniche in un campo possono spesso essere trapiantate con successo in altri. Anche in quelli che sembrano molto distanti. Per esempio, scrivo saggi nello stesso modo in cui scrivo software: mi siedo e butto giù una prima versione il più velocemente possibile, poi passo diverse settimane a riscriverla.

Lavorare su problemi difficili non è di per sé sufficiente. Gli alchimisti medievali lavoravano su un problema difficile, ma il loro approccio era così campato in aria che c'era poco da imparare studiandolo, tranne forse sulla capacità delle persone di illudersi. Sfortunatamente, il tipo di IA che stavo cercando di apprendere all'università aveva lo stesso difetto: un problema molto difficile, affrontato allegramente con tecniche irrimediabilmente inadeguate. Audace? Più vicino alla frode.

Anche le scienze sociali sono abbastanza fasulle, perché sono molto influenzate dalle mode intellettuali. Se un fisico incontrasse un collega di 100 anni fa, potrebbe insegnargli qualcosa di nuovo; se uno psicologo incontrasse un collega di 100 anni fa, si limiterebbe a una discussione ideologica. Certo, frequentando un corso di psicologia si impara qualcosa. Il punto è che si impara molto di più frequentando un corso in un'altra facoltà.

A mio parere, i dipartimenti che valgono la pena sono la matematica, le scienze esatte, l'ingegneria, la storia (in particolare la storia economica e sociale e la storia della scienza), l'architettura e i classici. Un corso di storia dell'arte può essere utile. La letteratura moderna è importante, ma il modo per impararla è semplicemente leggerla. Di musica non ne so abbastanza da poterne parlare.

Si possono saltare le scienze sociali, la filosofia e i vari dipartimenti creati di recente in risposta alle pressioni politiche. Molti di questi campi parlano di problemi importanti, certo. Ma il modo in cui ne parlano è inutile. Per esempio, la filosofia parla, tra le altre cose, dei nostri obblighi reciproci; ma si può imparare di più da una saggia nonna o da Elwyn Brooks White che da un filosofo accademico.

Di questo ne parlo per esperienza. Probabilmente avrei dovuto offendermi quando la gente ha riso di Clinton per aver detto: "Dipende dal significato della parola 'è'". All'università ho seguito circa cinque corsi sul significato del verbo essere.

Un altro modo per capire quali campi vale la pena studiare è creare il grafico degli abbandoni. Ad esempio, conosco molte persone che sono passate dalla matematica all'informatica perché trovavano la matematica troppo difficile, ma nessuno che abbia fatto il contrario. Le persone non fanno cose difficili gratuitamente; nessuno lavorerà su un problema più difficile a meno che non sia proporzionalmente (o almeno log(n)) più gratificante. Quindi probabilmente la matematica vale più dell'informatica. Con paragoni simili si può fare un grafico di tutti i dipartimenti di un'università. In fondo si trovano le materie con minor contenuto intellettuale.

Se si utilizza questo metodo, si otterrà più o meno la stessa risposta che ho appena dato.

I corsi di lingua sono un'anomalia. Credo sia meglio considerarli come attività extracurricolari, come i corsi di ceramica. Sarebbero molto più utili se combinati con un periodo di vita in un Paese in cui si parla la lingua. Per capriccio ho studiato l'arabo quando ero matricola. È stato molto faticoso e gli unici benefici duraturi sono stati una strana capacità di identificare le radici semitiche e alcune intuizioni su come le persone riconoscono le parole.

I corsi di arte e di scrittura creativa sono dei veri e propri jolly. Di solito non viene insegnato molto: si lavora su quello che si vuole e poi ci si siede a criticare le creazioni degli altri sotto la vaga supervisione dell'insegnante. Ma la scrittura e l'arte sono entrambi problemi molto difficili ai quali (alcuni) lavorano onestamente, quindi vale la pena studiarli, soprattutto se si riesce a trovare un buon insegnante.

Il mondo del lavoro

Naturalmente gli studenti universitari non devono pensare solo all'apprendimento. Ci sono anche due problemi pratici da considerare: il mondo del lavoro e il dottorato.

In teoria, un'educazione liberale non dovrebbe fornire una formazione professionale. Ma tutti sanno che questa è un po' una frottola. Gli hacker in tutte le università apprendono competenze pratiche, e non per caso.

Ciò che dovreste imparare per ottenere un lavoro dipende dal tipo di lavoro che desiderate. Se volete lavorare in una grande azienda, imparate a scrivere in Blub su Windows. Se volete lavorare in una piccola azienda o in un laboratorio di ricerca, farete meglio a imparare Ruby su Linux. E se volete avviare una vostra azienda, cosa che credo sarà sempre più comune, imparate a padroneggiare gli strumenti più potenti che riuscite a trovare, perché sarete in gara contro i vostri concorrenti, e loro saranno il vostro cavallo di battaglia.

Non c’è una correlazione diretta tra le competenze che si dovrebbero apprendere all'università e quelle che si utilizzeranno a lavoro. All'università si dovrebbe puntare leggermente più in alto.

Negli allenamenti un giocatore di football può arrivare a sollevare anche 140kg su panca, anche se non dovrà mai esercitare una forza simile nel corso di una partita. Allo stesso modo, se i vostri professori cercano di farvi imparare cose più avanzate di quelle che vi serviranno in un lavoro, potrebbe non essere solo perché sono accademici distaccati dal mondo reale. Forse stanno cercando di farvi sollevare pesi con il cervello.

I programmi che si scrivono per i corsi differiscono in tre modi fondamentali da quelli che si scriveranno nel mondo reale: sono piccoli, si parte da zero e il problema è solitamente artificiale e predeterminato. Nel mondo reale, i programmi sono più grandi, tendono a coinvolgere tanto codice esistente e spesso richiedono di capire qual è il problema prima di poterlo risolvere.

Non è necessario aspettare di finire l'università (o addirittura di iniziarla) per apprendere queste competenze. Se volete iniziare ad avere a che fare con codice esistente, ad esempio, potete contribuire a progetti open-source. Il tipo di datore di lavoro per cui vale la pena lavorare sarà impressionato da questo tanto quanto dai buoni voti nei compiti.

Nei progetti open-source esistenti non si fa molta pratica con la terza abilità: decidere quali problemi risolvere. Ma nulla vi impedisce di avviare nuovi progetti per conto vostro. E i buoni datori di lavoro saranno ancora più impressionati da questo.

Che tipo di problema dovreste cercare di risolvere? Un modo per rispondere a questa domanda è chiedersi di cosa avete bisogno come utenti. Ad esempio, ho scoperto un buon algoritmo per il filtraggio dello spam perché volevo smettere di ricevere spam. Ora vorrei avere un lettore di posta elettronica che in qualche modo impedisca alla mia casella di posta di riempirsi. Tendo a usare la mia casella di posta come un elenco di cose da fare. Ma è come usare un cacciavite per aprire le bottiglie: quello che serve davvero è un apribottiglie.

Dottorato

E il dottorato? Conviene farlo? E come si fa ad entrare in una buona università?

In teoria, il dottorato è una formazione professionale alla ricerca, e non si dovrebbe intraprendere se non si vuole fare della ricerca la propria carriera. Eppure la metà delle persone che conseguono un dottorato in informatica non si dedicano alla ricerca. Personalmente, non ho fatto il dottorato per diventare professore. L’ho fatto perché volevo imparare di più.

Quindi, se siete interessati principalmente all'hacking e andate a fare un dottorato, troverete molte altre persone che sono altrettanto fuori luogo. E se metà delle persone che si hanno intorno si sentono altrettanto fuori luogo, si è davvero fuori luogo?

C'è un problema fondamentale nell’ambito dell’informatica, che emerge in situazioni come questa. Nessuno è sicuro di cosa debba essere la "ricerca". Molta ricerca è in realtà hacking che è stato compresso in forma di articolo accademico per avere qualcos’altro da poter pubblicare.

È quindi fuorviante chiedersi se ci si troverà a proprio agio a fare il dottorato, perché pochi dottorandi si sentono a casa in informatica. L'intero settore è a disagio nella sua stessa pelle. Quindi il fatto che siate interessati principalmente all'hacking non dovrebbe scoraggiarvi dall’intraprendere un percorso di dottorato. Siate solo avvertiti che dovrete fare un sacco di cose che non vi piacciono.

La prima è la tesi. Quasi tutti odiano la loro tesi non appena se ne liberano. Il processo tende intrinsecamente a produrre un risultato sgradevole, come una torta fatta con farina integrale e cotta per dodici ore. Poche tesi vengono lette con piacere, soprattutto dai loro autori.

Ma migliaia di persone prima di voi hanno sofferto per la stesura di una tesi. E a parte questo, il dottorato è quasi un paradiso. Molti lo ricordano come il periodo più felice della loro vita. E quasi tutti gli altri, me compreso, lo ricordano come un periodo che lo sarebbe stato, se solo non avessero dovuto scrivere una tesi.

Il pericolo del dottorato è che non si vede la parte spaventosa in anticipo. I programmi di dottorato iniziano come un’università parte 2, con diversi anni di lezioni. Quindi, quando si affronta l'orrore di scrivere una tesi, si è già dentro da diversi anni. Abbandonare ora significherebbe diventare qualcuno che non ha completato il dottorato, e probabilmente l'idea non vi piacerebbe. Quando Robert è stato espulso per aver scritto l’internet worm del 1988, l'ho invidiato enormemente per aver trovato una via d'uscita senza lo stigma del fallimento.

Nel complesso, il dottorato è probabilmente meglio della maggior parte delle alternative. Si incontrano un sacco di persone intelligenti e la vostra triste procrastinazione sarà almeno un potente legame comune. E naturalmente alla fine si ha un dottorato di ricerca. Me ne ero dimenticato. Suppongo che valga qualcosa.

Il vantaggio più grande di un dottorato (oltre ad essere una sorta di tessera d'appartenenza all'accademia) potrebbe essere che ti dà una certa sicurezza di base. Ad esempio, i termostati Honeywell di casa mia hanno un'interfaccia utente davvero atroce. Mia madre, che ha lo stesso modello, ha passato una giornata a leggere il manuale d'uso per imparare a usare il suo. Lei pensava che il problema fosse suo. Ma io posso pensare: "Se qualcuno con un dottorato in informatica non riesce a capire questo termostato, deve essere progettato male".

Se volete ancora intraprendere un dottorato dopo questa raccomandazione equivoca, posso darvi un consiglio solido su come entrare. Molti dei miei amici sono ora professori di informatica, quindi conosco bene la storia delle ammissioni. È molto diverso dall'università. Nella maggior parte delle università, sono i responsabili delle ammissioni a decidere chi viene ammesso. Per i programmi di dottorato, lo fanno i professori. E cercano di farlo bene, perché le persone che ammettono lavoreranno per loro.

A quanto pare, nelle scuole migliori contano solo le raccomandazioni. I test standardizzati non contano nulla e i voti contano poco. La lettera è più che altro un'opportunità per squalificarsi dicendo qualcosa di stupido. L'unica cosa di cui i professori si fidano sono le raccomandazioni, preferibilmente di persone che conoscono.

Quindi, se volete entrare in un programma di dottorato, la chiave è impressionare i vostri professori. E grazie ai miei amici professori so cosa li impressiona: non cercare di impressionarli. Non sono impressionati dagli studenti che ottengono buoni voti o che vogliono essere i loro assistenti di ricerca per poter accedere a quell’università. Sono impressionati da studenti che prendono buoni voti e vogliono essere i loro assistenti di ricerca perché sono sinceramente interessati all'argomento.

Quindi la cosa migliore da fare all'università, sia che vogliate entrare alla scuola di specializzazione sia che vogliate diventare bravi hacker, è capire cosa vi piace veramente. È difficile convincere i professori a farvi entrare e impossibile convincere i problemi a lasciarsi risolvere. L'università è il momento in cui fare finta smette di funzionare. A questo punto, a meno che non vogliate andare a lavorare per una grande azienda, il che è come tornare al liceo, l'unico modo per andare avanti è fare ciò che vi piace.

Altri consigli per studenti universitari

More Advice for Undergrads

Ho chiesto a diversi amici professori e/o eminenti hacker cosa ne pensassero del saggio. I loro commenti sono stati così belli che ho pensato di darli direttamente a voi. Ho dato a tutti dei nomi in codice, perché alcuni potrebbero voler rimanere anonimi.

NT:

L'unica cosa che mi è sembrata mancare nel tuo saggio è una dichiarazione che sostenga o smentisca l'idea che l’informatica sia per i solitari. Non sono d'accordo con questa idea. Amo smanettare, ma lo amo ancora di più quando è un'esperienza condivisa. I problemi più difficili sembrano un po' più superabili quando si è in due.

Naturalmente, alla fine entra in gioco la legge di Fred Brooks sull'aggiunta di manodopera. La regola è: lavorare in piccoli gruppi con persone valide. State lontani dalle grandi organizzazioni burocratiche dove pensare a come avanzare di livello è più importante che pensare fuori dagli schemi. L’informatica presenta molti aspetti individuali, proprio come l'arte. Ma essere un individuo non significa che la macchina prenda il posto di buoni amici, colleghi e mentori.

TO:

Penso che dovresti dire: "L'università è il momento in cui fare finta inizia a smettere di funzionare".

FS:

La matematica è più difficile dell’informatica, senza dubbio. Tuttavia, non mi sembra affatto chiaro che la matematica abbia lo stesso contenuto intellettuale dell’informatica. Le colline della matematica sono individualmente più difficili da scalare, ma l’informatica è un pezzo di paesaggio più grande. (Formalmente, l’informatica studia oggetti con uno stato ed una storia. Ci sono modi importanti in cui questo è più difficile e generale dei sistemi assiomatici puri).

Empiricamente, non credo che la differenza tra matematica e informatica sia molto utile per prevedere quanto interessante ed efficace sarà il pensatore che uscirà dall'altra parte. Quindi, pur essendo d'accordo con lo spirito della tua euristica del "grafico degli abbandoni", penso che la matematica e l’informatica siano un esempio poco utile per spiegarla. È molto meglio notare che entrambe sono materie difficili con contenuti reali, e contrapporle a qualche tipo di palese cestineria come le scienze politiche o gli "studi etnici".

"Forse stanno cercando di farvi sollevare pesi con il cervello". In effetti, credo che la matematica pura sia un ottimo sollevamento pesi.

SA:

Il problema della grafica come applicazione è che la realizzazione di un gioco 3D decente ha una grossa componente teatrale. È necessario il motion capture e un reparto artistico per tutte le texture e gli sfondi. Nessuno rimarrà impressionato da cubi rosa e sfere verdi che rimbalzano sullo schermo. Penso che la tecnologia abbia superato la capacità di chiunque di fare qualcosa di semplice e bello con essa.

DF:

Quando studiavo matematica, ho scoperto che due cose erano vere: (1) l'insegnante non era troppo bravo e (2) il libro non era troppo bello. Quindi compravo sempre una mezza dozzina di libri sull'argomento e cercavo di avere un quadro completo leggendo le stesse sezioni in ogni libro. Questa combinazione mi ha aiutato a capire molto di più della somma dei contenuti. Inoltre, non mi sono mai opposto a leggere qualcosa fino a 10 volte, fino a quando non ne ho tratto tutto il meglio.

Ho trovato la matematica e soprattutto la logica formale uno strumento indispensabile per strutturare le idee. Per me era come il latino. Il latino era un linguaggio naturale molto pulito e la logica era un linguaggio formale molto pulito. Ho dovuto impararla da solo, perché il corso di logica che avevo era costituito dalle prime 30 pagine di Mendelsohn. Quando si vuole dire qualcosa in modo inequivocabile, descriverla formalmente è un buon inizio.

Quando si vogliono capire, per esempio, le entusiasmanti monadi, capire la logica e un po' di teoria delle categorie aiuta. Anche la teoria delle categorie è piuttosto carina. Dice semplicemente che tutto deve essere descritto in termini di composizione di funzioni e che questo operatore deve soddisfare determinate proprietà.

Se si pensa alla logica come a qualcosa di vivo, che permette di dimostrare teoremi, è affascinante. Pensateci: dimostrare teoremi al computer. È sbalorditivo. Non porterà probabilmente al successo di una start-up, ma che momento è quando si dimostra un teorema senza euristiche, ecc.

Ho insistito affinché tutti i miei dottorandi studiassero anche logica. Questo dovrebbe dire qualcosa.

ML:

La vera ragione per studiare la matematica non è che è utile, ma che è figa. Questa dovrebbe essere l'unica ragione di cui un aspirante hacker ha bisogno. Inoltre, con la sua enfasi sul rigore e sull'astrazione, è bella in molti modi, come la programmazione al suo meglio. Il fatto che di tanto in tanto sia anche utile è solo un di più.

Non sono nemmeno d'accordo sul fatto che i bravi matematici tendano a essere cattivi insegnanti. Avendo goduto del privilegio di un'istruzione costosa, sono dell'opinione che i migliori matematici siano di solito (certamente non sempre) degli ottimi insegnanti e che a volte siano straordinariamente bravi. Il vero motivo per cui è difficile imparare la matematica è che la comprensione della matematica richiede nuovi e difficili (almeno all'inizio) modi di pensare. I corsi di analisi matematica da manuale eludono queste difficoltà e quindi insegnano poco di valido. Capire davvero l’analisi matematica è stato difficile per Newton ed è difficile anche oggi.



This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit paulgrahamita.substack.com