Hacker di Talento // Great Hackers
Description
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,