Traduzione e lettura in italiano di Elena Carmazzi dall’essay originale di Paul Graham "Great Hackers" [Luglio 2004].
(Questo saggio è tratto da un intervento a Oscon 2004)
Pochi mesi fa ho finito un nuovo libro e tra le recensioni continuo a notare parole come “provocatorio” e “controverso”, per non parlare di “idiota”.
Non volevo rendere il libro controverso, stavo cercando di renderlo efficiente. Non volevo far perdere tempo alle persone dicendo loro cose che già sapevano; è più efficiente dare loro solo le differenze, ma suppongo che questo sia destinato a produrre un libro allarmante.
Edisons
Non c'è dubbio su quale sia l'idea più controversa: il suggerimento che la variazione della ricchezza potrebbe non essere un problema così grande come pensiamo.
Nel libro non ho detto che la variazione della ricchezza fosse di per sé una cosa buona, ho detto che in alcune situazioni potrebbe essere un segno di cose buone. Un mal di testa lancinante non è una cosa buona, ma può essere un segno di una cosa buona, ad esempio che stai riprendendo conoscenza dopo essere stato colpito alla testa.
La variazione della ricchezza può essere un segno di variazione nella produttività - (in una società di un singolo, sono identici) - e quello è quasi certamente una buona cosa: se la tua società non ha variazioni nella produttività, probabilmente non è perché tutti sono Thomas Edison. Probabilmente è perché non hai Thomas Edison.
In una società a bassa tecnologia non si vede molta variazione nella produttività. Se hai una tribù di nomadi che raccoglie bastoni per un fuoco, quanto più produttivo sarà il miglior raccoglitore di bastoni del peggiore? Un fattore di due? Mentre quando dai alle persone uno strumento complesso come un computer, la variazione in ciò che possono fare con esso è enorme.
Quest’idea non è nuova. Fred Brooks ne parlò già nel 1974 e lo studio che citò era stato pubblicato nel 1968. Penso però che che abbia sottovalutato la variazione tra i programmatori scrivendo sulla produttività in righe di codice: i migliori programmatori possono risolvere un dato problema in un decimo del tempo. Ma cosa succede se il problema non è dato? Nella programmazione, come in molti campi, la parte difficile non è risolvere i problemi, ma decidere quali problemi risolvere. L'immaginazione è difficile da misurare, ma in pratica domina il tipo di produttività che si misura in righe di codice.
La produttività varia in qualsiasi campo, ma ce ne sono pochi in cui varia così tanto. La variazione tra i programmatori è così grande che diventa una differenza di genere, però non penso che questo sia qualcosa di intrinseco alla programmazione. In ogni campo, la tecnologia amplifica le differenze di produttività: credo che quello che sta succedendo nella programmazione sia solo che abbiamo molta leva tecnologica, ma in ogni campo la leva si allunga, quindi la variazione che vediamo è qualcosa che sempre più campi vedranno col passare del tempo. E il successo delle aziende e dei paesi dipenderà sempre più da come gestirlo.
Se la variazione della produttività aumenta con la tecnologia, allora il contributo degli individui più produttivi non solo sarà sproporzionatamente grande, ma crescerà effettivamente nel tempo. Quando si raggiunge il punto in cui il 90% della produzione di un gruppo è creato dall'1% dei suoi membri, si perde molto se qualcosa riduce la loro produttività alla media (sia che si tratti di incursioni vichinghe o di pianificazione centrale).
Se vogliamo ottenere il massimo da loro, dobbiamo capire queste persone particolarmente produttive. Cosa li motiva? Di cosa hanno bisogno per fare il loro lavoro? Come li riconosci? Come fai a convincerli a venire a lavorare per te? E poi ovviamente c'è La domanda: come si diventa uno di loro?
Più dei soldi
Conosco una manciata di super hacker, quindi mi sono seduto e ho pensato a cosa hanno in comune. La loro qualità distintiva è probabilmente che amano davvero programmare. I programmatori ordinari scrivono codice per pagare le bollette. I grandi hacker lo considerano qualcosa che fanno per divertimento e sono felici di scoprire che la gente li pagherà per questo.
A volte si dice che i grandi programmatori siano indifferenti al denaro. Questo non è del tutto vero. È vero che tutto ciò a cui tengono davvero è fare un lavoro interessante. Ma se guadagni abbastanza soldi, puoi lavorare su quello che vuoi e per questo motivo gli hacker sono attratti dall'idea di fare davvero molti soldi. Ma finché devono ancora presentarsi al lavoro ogni giorno, si preoccupano di più di cosa ci fanno che di quanto vengono pagati per questo.
Economicamente, questo è un fatto di grande importanza, perché significa che non devi pagare i grandi hacker nulla di simile a quanto valgono. Un grande programmatore potrebbe essere dieci o cento volte più produttivo di uno normale, ma si considererà fortunato a essere pagato tre volte di più. Come spiegherò più avanti, questo è in parte dovuto al fatto che i grandi hacker non sanno quanto sono bravi. Ma è anche perché il denaro non è la cosa principale che vogliono.
Cosa vogliono gli hacker? Come tutti gli artigiani, agli hacker piacciono i buoni strumenti. In realtà, è un eufemismo. I buoni hacker trovano insopportabile usare strumenti cattivi. Si rifiuteranno semplicemente di lavorare a progetti con l'infrastruttura sbagliata.
In una startup per cui ho lavorato una volta, una delle cose affisse alla nostra bacheca era una pubblicità di IBM. Era una foto di un AS400 e il titolo diceva, credo, "gli hacker lo disprezzano".
Quando decidi quale infrastruttura utilizzare per un progetto, non stai solo prendendo una decisione tecnica. Stai anche prendendo una decisione sociale e questa potrebbe essere la più importante delle due. Ad esempio, se la tua azienda desidera scrivere del software, potrebbe sembrare una scelta prudente scriverlo in Java. Ma quando scegli una lingua, scegli anche una comunità. I programmatori che sarai in grado di assumere per lavorare a un progetto Java non saranno intelligenti come quelli che potresti ottenere per lavorare a un progetto scritto in Python. E la qualità dei tuoi hacker probabilmente conta più del linguaggio che scegli. Anche se, francamente, il fatto che i bravi hacker preferiscano Python a Java dovrebbe dirti qualcosa sui meriti relativi di questi linguaggi.
I tipi aziendali preferiscono i linguaggi più diffusi perché li considerano standard. Non vogliono scommettere sull'azienda Betamax. La cosa sui linguaggi, però, è che non sono solo standard. Se devi spostare bit su una rete, usa assolutamente TCP/IP. Ma un linguaggio di programmazione non è solo un formato, un linguaggio di programmazione è un mezzo di espressione.
Ho letto che Java ha appena superato Cobol come linguaggio più popolare. Come standard, non potresti desiderare di meglio. Ma come mezzo di espressione, potresti fare molto meglio. Di tutti i grandi programmatori che mi vengono in mente, ne conosco solo uno che programmerebbe volontariamente in Java. E di tutti i grandi programmatori che mi vengono in mente che non lavorano per Sun, su Java, ne conosco zero.
Anche i grandi hacker generalmente insistono nell'usare software open source. Non solo perché è meglio, ma perché dà loro più controllo. I bravi hacker insistono sul controllo. Questo fa parte di ciò che li rende bravi hacker: quando qualcosa si rompe, devono ripararlo. Vuoi che si sentano così riguardo al software che stanno scrivendo per te. Non dovresti essere sorpreso quando si sentono allo stesso modo riguardo al sistema operativo.
Un paio di anni fa un amico venture capitalist mi ha parlato di una nuova startup con cui era coinvolto. Sembrava promettente. Ma la volta successiva che gli ho parlato, ha detto che avevano deciso di costruire il loro software su Windows NT e avevano appena assunto uno sviluppatore NT molto esperto come chief technical officer. Quando ho sentito questo, ho pensato, questi ragazzi sono condannati. Uno, il CTO non poteva essere un hacker di prim'ordine, perché per diventare un eminente sviluppatore NT avrebbe dovuto usare NT volontariamente, più volte, e non riuscivo a immaginare un grande hacker che lo facesse; e due, anche se fosse stato bravo, avrebbe avuto difficoltà ad assumere qualcuno di bravo a lavorare per lui se il progetto avesse dovuto essere costruito su NT.
L’ultima frontiera
Dopo il software, lo strumento più importante per un hacker è probabilmente il suo ufficio. Le grandi aziende pensano che la funzione dello spazio ufficio sia quella di esprimere gerarchia. Ma gli hacker usano i loro uffici per più di questo: usano il loro ufficio come un posto in cui pensare. E se sei un'azienda tecnologica, i loro pensieri sono il tuo prodotto. Quindi far lavorare gli hacker in un ambiente rumoroso e che distrae è come avere una fabbrica di vernici dove l'aria è piena di fuliggine.
Il fumetto Dilbert ha molto da dire sui cubicoli e per una buona ragione. Tutti gli hacker che conosco li disprezzano. La semplice prospettiva di essere interrotti è sufficiente per impedire agli hacker di lavorare su problemi difficili. Se vuoi portare a termine un vero lavoro in un ufficio con i cubicoli, hai due opzioni: lavorare da casa o venire presto o tardi o durante il fine settimana, quando non c'è nessun altro. Le aziende non si rendono conto che questo è un segno che qualcosa si è rotto? Un ambiente d'ufficio dovrebbe essere qualcosa che ti aiuti a lavorare, non qualcosa per cui lavori nonostante.
Aziende come Cisco sono orgogliose che tutti lì abbiano un cubicolo, persino l'amministratore delegato. Ma non sono così avanzati come pensano; ovviamente vedono ancora lo spazio ufficio come un distintivo di gerarchia. Nota anche che Cisco è famosa per aver svolto pochissimo sviluppo di prodotti internamente. Ottengono nuove tecnologie acquistando le startup che le hanno create, dove presumibilmente gli hacker avevano un posto tranquillo dove lavorare.
Una grande azienda che comprende di cosa hanno bisogno gli hacker è Microsoft. Una volta ho visto un annuncio di recruiting per Microsoft con una grande foto di una porta. Lavora per noi, la premessa era che ti daremo un posto dove lavorare dove puoi effettivamente portare a termine il lavoro. E come saprete, Microsoft è notevole tra le grandi aziende in quanto è in grado di sviluppare software internamente. Non bene, forse, ma abbastanza bene.
Se le aziende vogliono che gli hacker siano produttivi, dovrebbero guardare cosa fanno a casa. A casa, gli hacker possono organizzare le cose da soli in modo da poter fare il massimo. E quando lavorano da casa, gli hacker non lavorano in spazi rumorosi e aperti; lavorano in stanze con porte. Lavorano in luoghi accoglienti e di quartiere con persone intorno e un posto dove camminare quando hanno bisogno di riflettere su qualcosa, invece che in scatole di vetro incastonate in acri di parcheggi. Hanno un divano su cui possono schiacciare un pisolino quando si sentono stanchi, invece di stare seduti in coma alla scrivania, fingendo di lavorare. Non c'è un equipaggio di persone con aspirapolvere che ruggisce ogni sera durante le ore di punta dell'hacking. Non ci sono riunioni o, Dio non voglia, ritiri aziendali o esercizi di team building. E quando guardi cosa stanno facendo su quel computer, scoprirai che rafforza ciò che ho detto prima sugli strumenti. Potrebbero dover usare Java e Windows al lavoro, ma a casa, dove possono scegliere da soli, è più probabile che li troviate a usare Perl e Linux.
In effetti, queste statistiche su Cobol o Java come linguaggio più popolare possono essere fuorvianti. Ciò che dovremmo guardare, se vogliamo sapere quali sono gli strumenti migliori, è ciò che gli hacker scelgono quando possono scegliere liberamente, ovvero nei progetti propri. Quando fai questa domanda, scopri che i sistemi operativi open source hanno già una quota di mercato dominante e il linguaggio numero uno è probabilmente Perl.
Interessante
Insieme a buoni strumenti, gli hacker vogliono progetti interessanti. Cosa rende interessante un progetto? Bene, ovviamente le applicazioni palesemente sexy come gli aerei stealth o il software per effetti speciali sarebbero interessanti su cui lavorare. Ma qualsiasi applicazione può essere interessante se pone nuove sfide tecniche. Quindi è difficile prevedere quali problemi piaceranno agli hacker, perché alcuni diventano interessanti solo quando le persone che ci lavorano scoprono un nuovo tipo di soluzione. Prima di ITA (che ha scritto il software all'interno di Orbitz), le persone che lavoravano alle ricerche sulle tariffe aeree probabilmente pensavano che fosse una delle applicazioni più noiose immaginabili. Ma ITA lo ha reso interessante ridefinendo il problema in modo più ambizioso.
Penso che la stessa cosa sia successa a Google. Quando è stata fondata Google, la saggezza convenzionale tra i cosiddetti portali era che la ricerca fosse noiosa e non importante. Ma i ragazzi di Google non pensavano che la ricerca fosse noiosa ed è per questo che lo fanno così bene.
Questa è un'area in cui i manager possono fare la differenza. Come un genitore che dice a un bambino: “scommetto che non riesci a pulire tutta la tua stanza in dieci minuti”, un buon manager a volte può ridefinire un problema come più interessante. Steve Jobs sembra essere particolarmente bravo in questo, in parte semplicemente avendo standard elevati. C'erano molti computer piccoli ed economici prima del Mac. Ha ridefinito il problema come: crearne uno bello. E questo probabilmente ha spinto gli sviluppatori più di quanto potesse fare qualsiasi carota o bastone.
Certo che hanno consegnato. Quando è apparso per la prima volta il Mac, non dovevi nemmeno accenderlo per sapere che sarebbe stato buono; si capiva dalla custodia. Qualche settimana fa stavo camminando per strada a Cambridge e nella spazzatura di qualcuno ho visto quella che sembrava essere una custodia per il trasporto di un Mac. Ho guardato dentro e c'era un Mac SE. L'ho portato a casa e l'ho collegato e si è avviato. La faccia felice del Macintosh e poi il Finder. Mio Dio, era così semplice. Era proprio come... Google.
Agli hacker piace lavorare per persone con standard elevati. Ma non basta essere esigenti. Devi insistere sulle cose giuste. Il che di solito significa che devi essere tu stesso un hacker. Ho visto articoli occasionali su come gestire i programmatori. In realtà dovrebbero esserci due articoli: uno su cosa fare se sei tu stesso un programmatore e uno su cosa fare se non lo sei. E il secondo potrebbe probabilmente essere condensato in una parola: arrendersi.
Il problema non è tanto la gestione quotidiana. Gli hacker davvero bravi sono praticamente autogestiti. Il problema è che, se non sei un hacker, non puoi dire chi sono i bravi hacker. Un problema simile spiega perché le auto americane sono così brutte. Lo chiamo il paradosso del design. Potresti pensare di poter rendere i tuoi prodotti belli semplicemente assumendo un grande designer per progettarli. Ma se tu stesso non hai buon gusto, come farai a riconoscere un buon designer? Per definizione non puoi dirlo dal suo portfolio. E non puoi andare dai premi che ha vinto o dai lavori che ha svolto, perché nel design, come nella maggior parte dei campi, quelli tendono a essere guidati dalla moda e dallo schmoozing, con la capacità effettiva un terzo distante. Non c'è modo di aggirarlo: non puoi gestire un processo destinato a produrre cose belle senza sapere cosa sia bello. Le auto americane sono brutte perché le case automobilistiche americane sono gestite da persone di cattivo gusto.
Molte persone in questo paese pensano al gusto come a qualcosa di inafferrabile o addirittura frivolo. Non è né l'uno né l'altro. Per guidare la progettazione, un manager deve essere l'utente più esigente dei prodotti di un'azienda. E se hai davvero buon gusto, puoi, come fa Steve Jobs, rendere soddisfacente il tipo di problema su cui le brave persone amano lavorare.
Piccoli problemi fastidiosi
È abbastanza facile dire quali tipi di problemi non sono interessanti: quelli in cui devi risolvere un sacco di piccoli e fastidiosi problemi, invece di risolverne alcuni ma grandi e chiari. Uno dei peggiori tipi di progetti è scrivere un'interfaccia a un software pieno di bug. Un altro è quando devi personalizzare qualcosa per le complesse e mal definite esigenze di un singolo cliente. Per gli hacker questo tipo di progetti sono la morte del proprio lavoro.
La caratteristica distintiva dei piccoli problemi spiacevoli è che non impari nulla da loro. Scrivere un compilatore è interessante perché ti insegna cos'è un compilatore. Ma scrivere un'interfaccia a un software buggato non ti insegna nulla, perché i bug sono casuali. Quindi non è solo la pignoleria che fa sì che i bravi hacker evitino i piccoli problemi spiacevoli. È più una questione di autoconservazione. Lavorare su piccoli problemi spiacevoli ti rende stupido. I bravi hacker lo evitano per lo stesso motivo per cui le modelle evitano i cheeseburger.
Certo, alcuni problemi hanno intrinsecamente questo carattere. E a causa della domanda e dell'offerta, pagano particolarmente bene. Quindi un'azienda che ha trovato un modo per convincere i grandi hacker a lavorare su problemi noiosi avrebbe molto successo. Come lo faresti? Un posto in cui questo accade è nelle startup. Nella nostra startup avevamo Robert Morris che lavorava come amministratore di sistema. È come avere i Rolling Stones che suonano a un bar mitzvah. Non puoi assumere quel tipo di talento. Ma le persone faranno qualsiasi quantità di lavoro per le aziende di cui sono i fondatori.
Le aziende più grandi risolvono il problema suddividendo l'azienda. Fanno lavorare le persone intelligenti per loro istituendo un dipartimento di ricerca e sviluppo separato in cui i dipendenti non devono lavorare direttamente sui piccoli problemi spiacevoli dei clienti. In questo modello, il reparto di ricerca funziona come una miniera. Producono nuove idee; forse il resto dell'azienda sarà in grado di usarli.
Potrebbe non essere necessario arrivare a questo estremo. La programmazione dal basso verso l'alto suggerisce un altro modo per suddividere l'azienda: far lavorare le persone intelligenti come produttori di strumenti. Se la tua azienda produce software per fare x, fai in modo che un gruppo costruisca strumenti per scrivere software di quel tipo e un altro che utilizza questi strumenti per scrivere le applicazioni. In questo modo potresti essere in grado di convincere le persone intelligenti a scrivere il 99% del tuo codice, ma comunque tenerle quasi isolate dagli utenti come farebbero in un tradizionale reparto di ricerca. I produttori di strumenti avrebbero utenti, ma sarebbero solo gli sviluppatori interni dell'azienda.
Se Microsoft utilizzasse questo approccio, il suo software non sarebbe così pieno di falle di sicurezza, perché le persone meno intelligenti che scrivono le applicazioni effettive non farebbero cose di basso livello come allocare memoria. Invece di scrivere Word direttamente in C, starebbero collegando insieme grossi blocchi Lego di Word-language. (Duplo, credo, è il termine tecnico.)
Raggruppamento
Insieme a problemi interessanti, ciò che piace ai bravi hacker sono altri bravi hacker. I grandi hacker tendono a raggrupparsi, a volte in modo spettacolare, come a Xerox Parc. Quindi non attirerai buoni hacker in proporzione lineare a quanto è buono l'ambiente che crei per loro. La tendenza al raggruppamento significa che è più simile al quadrato dell'ambiente. Quindi il vincitore prende tutto. In un dato momento, ci sono solo una decina o una ventina di posti in cui gli hacker vogliono lavorare di più e se non sei uno di loro, non avrai solo meno grandi hacker, ne avrai zero.
Avere grandi hacker non è, di per sé, sufficiente per rendere un'azienda di successo. Funziona bene per Google e ITA, che sono due dei punti caldi in questo momento, ma non ha aiutato Thinking Machines o Xerox. Sun ha avuto una bella corsa per un po', ma il loro modello di business è un ascensore in discesa. In quella situazione, nemmeno i migliori hacker possono salvarti.
Penso, però, che a parità di altre condizioni, un'azienda che può attirare grandi hacker avrà un enorme vantaggio. C'è chi non sarebbe d'accordo con questo. Quando stavamo facendo il giro delle società di venture capital negli anni '90, molti ci hanno detto che le società di software non vincevano scrivendo ottimo software, ma attraverso il brand, dominando i canali e facendo gli affari giusti.
Sembravano davvero crederci e penso di sapere perché. Penso che molti VC stiano cercando, almeno inconsciamente, il prossimo Microsoft. E ovviamente se Microsoft è il tuo modello, non dovresti cercare aziende che sperano di vincere scrivendo un ottimo software. Ma i VC sbagliano a cercare il prossimo Microsoft, perché nessuna startup può essere il prossimo Microsoft a meno che qualche altra azienda non sia pronta a chinarsi al momento giusto ed essere il prossimo IBM.
È un errore usare Microsoft come modello, perché tutta la loro cultura deriva da quella fortunata occasione. Microsoft è un brutto dato. Se li butti fuori, scopri che i buoni prodotti tendono a vincere sul mercato. Ciò che i VC dovrebbero cercare è il prossimo Apple o il prossimo Google.
Penso che Bill Gates lo sappia. Ciò che lo preoccupa di Google non è la potenza del loro brand, ma il fatto che abbiano hacker migliori.
Riconoscimento
Quindi chi sono i grandi hacker? Come fai a sapere quando ne incontri uno? Risulta essere molto difficile. Persino gli hacker non possono dirlo. Ora sono abbastanza sicuro che il mio amico Trevor Blackwell sia un grande hacker. Potresti aver letto su Slashdot come si è fatto il suo Segway. La cosa notevole di questo progetto è che ha scritto tutto il software in un giorno (in Python, per inciso).
Per Trevor, questo è normale. Ma quando l'ho incontrato per la prima volta, ho pensato che fosse un completo idiota. Era in piedi nell'ufficio di Robert Morris balbettando qualcosa o l'altro, e ricordo di essere rimasto dietro di lui facendo gesti frenetici a Robert per scacciare questo pazzo dal suo ufficio in modo da poter andare a pranzo. Robert dice che anche lui ha giudicato male Trevor all'inizio. Apparentemente, quando Robert lo incontrò per la prima volta, Trevor aveva appena iniziato un nuovo schema che prevedeva di annotare tutto su ogni aspetto della sua vita su una pila di schede, che portava sempre con sé. Era anche appena arrivato dal Canada e aveva un forte accento canadese e un mullet.
Il problema è aggravato dal fatto che gli hacker, nonostante la loro reputazione di oblio sociale, a volte si impegnano a fondo per sembrare intelligenti. Quando ero alla scuola di specializzazione, a volte andavo in giro per il MIT AI Lab. All'inizio è stato un po' intimidatorio. Tutti lì parlavano così velocemente. Ma dopo un po' ho imparato il trucco di parlare velocemente. Non devi pensare più velocemente; usa solo il doppio delle parole per dire tutto.
Con questa quantità di rumore nel segnale, è difficile distinguere i bravi hacker quando li incontri. Non riesco a dirlo, nemmeno adesso. Non puoi nemmeno dirlo dai loro curriculum. Sembra che l'unico modo per giudicare un hacker sia lavorare con lui su qualcosa.
Ed è questo il motivo per cui le aree high-tech si verificano solo intorno alle università. L'ingrediente attivo qui non sono tanto i professori quanto gli studenti. Le startup crescono intorno alle università perché le università riuniscono giovani promettenti e li fanno lavorare sugli stessi progetti. Quelli intelligenti imparano chi sono gli altri intelligenti e insieme inventano nuovi progetti propri.
Poiché non puoi distinguere un grande hacker se non lavorando con lui, gli hacker stessi non possono dire quanto sono bravi. Questo è vero in una certa misura nella maggior parte dei campi. Ho scoperto che le persone che sono brave in qualcosa non sono tanto convinte della propria grandezza quanto mistificate dal motivo per cui tutti gli altri sembrano così incompetenti.
Ma è particolarmente difficile per gli hacker sapere quanto sono bravi, perché è difficile confrontare il loro lavoro. Questo è più facile nella maggior parte degli altri campi. Nei cento metri, sai in 10 secondi chi è il più veloce. Anche in matematica sembra esserci un consenso generale su quali problemi sono difficili da risolvere e cosa costituisce una buona soluzione. Ma l'hacking è come scrivere. Chi può dire quale di due romanzi è migliore? Certamente non gli autori.
Con gli hacker, almeno, gli altri hacker possono dirlo. Questo perché, a differenza dei romanzieri, gli hacker collaborano ai progetti. Quando riesci a colpire alcuni problemi difficili sulla rete contro qualcuno, impari abbastanza rapidamente quanto duramente li hanno colpiti. Ma gli hacker non possono vedersi al lavoro. Quindi se chiedi a un grande hacker quanto è bravo, è quasi certo che risponderà, non lo so. Non sta solo essendo modesto. Davvero non lo sa.
E nessuno di noi lo sa, tranne che per le persone con cui abbiamo effettivamente lavorato. Il che ci mette in una situazione strana: non sappiamo chi dovrebbero essere i nostri eroi. Gli hacker che diventano famosi tendono a diventare famosi per incidenti casuali di pubbliche relazioni. Di tanto in tanto ho bisogno di fare un esempio di un grande hacker e non so mai chi usare. I primi nomi che mi vengono in mente tendono sempre a essere persone che conosco personalmente, ma sembra zoppo usarli. Quindi, penso, forse dovrei dire Richard Stallman, o Linus Torvalds, o Alan Kay, o qualcuno di famoso così. Ma non ho idea se questi ragazzi siano grandi hacker. Non ho mai lavorato con loro su niente.
Se c'è un Michael Jordan dell'hacking, nessuno lo sa, incluso lui.
Coltivazione
Infine, la domanda su cui si sono interrogati tutti gli hacker: come si diventa un grande hacker? Non so se sia possibile farne uno, ma è certamente possibile fare cose che ti rendono stupido e se puoi renderti stupido, probabilmente puoi anche renderti intelligente.
La chiave per essere un buon hacker potrebbe essere lavorare su ciò che ti piace. Quando penso ai grandi hacker che conosco, una cosa che hanno in comune è l'estrema difficoltà di farli lavorare su qualsiasi cosa non vogliano. Non so se questa sia causa o effetto; potrebbe essere entrambi.
Per fare bene qualcosa devi amarla. Quindi, nella misura in cui puoi preservare l'hacking come qualcosa che ami, è probabile che lo farai bene. Cerca di mantenere il senso di meraviglia che avevi per la programmazione a 14 anni. Se sei preoccupato che il tuo attuale lavoro ti stia facendo marcire il cervello, probabilmente è così.
I migliori hacker tendono ad essere intelligenti, ovviamente, ma questo è vero in molti campi. C'è qualche qualità che è unica per gli hacker? Ho chiesto ad alcuni amici e la cosa numero uno che hanno menzionato è stata la curiosità. Avevo sempre pensato che tutte le persone intelligenti fossero curiose, che la curiosità fosse semplicemente la prima derivata della conoscenza. Ma a quanto pare gli hacker sono particolarmente curiosi, soprattutto su come funzionano le cose. Ha senso, perché i programmi sono in effetti descrizioni giganti di come funzionano le cose.
Diversi amici hanno menzionato la capacità degli hacker di concentrarsi, la loro capacità, come ha detto uno, di "escludere tutto ciò che è al di fuori della propria testa". Certamente l'ho notato. E ho sentito diversi hacker dire che dopo aver bevuto anche solo mezza birra non riescono a programmare affatto. Quindi forse l'hacking richiede una speciale capacità di concentrazione. Forse i grandi hacker possono caricare una grande quantità di contesto nella loro testa, in modo che quando guardano una riga di codice, vedono non solo quella riga ma l'intero programma che la circonda. John McPhee ha scritto che il successo di Bill Bradley come giocatore di basket era dovuto in parte alla sua straordinaria visione periferica. Una vista "perfetta" significa circa 47 gradi di visione periferica verticale. Bill Bradley ne aveva 70; riusciva a vedere il canestro quando guardava il pavimento. Forse i grandi hacker hanno una simile capacità innata (imbrogliano usando un linguaggio molto denso, che restringe il campo).
Questo potrebbe spiegare la disconnessione sui cubicoli. Forse i responsabili delle strutture, non avendo alcuna concentrazione da infrangere, non hanno idea che lavorare in un cubicolo per un hacker sia come avere il cervello in un frullatore (mentre Bill, se le voci sull'autismo sono vere, lo sa fin troppo bene).
Una differenza che ho notato tra i grandi hacker e le persone intelligenti in generale è che gli hacker sono più politicamente scorretti. Nella misura in cui esiste una stretta di mano segreta tra i bravi hacker, è quando si conoscono abbastanza bene da esprimere opinioni che li farebbero lapidare a morte dal pubblico in generale. E posso capire perché la scorrettezza politica sarebbe una qualità utile nella programmazione. I programmi sono molto complessi e, almeno nelle mani di buoni programmatori, molto fluidi. In tali situazioni è utile avere l'abitudine di mettere in discussione le ipotesi.
Si possono coltivare queste qualità? Non lo so. Ma almeno possiamo non reprimerle. Quindi ecco il mio miglior tentativo di una ricetta. Se fosse possibile trasformarvi in un grande hacker, il modo per farlo potrebbe essere quello di fare il seguente accordo con voi stessi: non dovete lavorare su progetti noiosi (a meno che la vostra famiglia non muoia di fame) e in cambio non farete mai un lavoro a metà. Tutti i grandi hacker che conosco sembrano aver fatto quell'accordo, anche se forse nessuno di loro ha avuto scelta in materia.
Share this post