Loading...

LES GRANDS HACKERS

Original

Juillet 2004

(Cet essai est tiré d’une conférence donnée à Oscon 2004.)

Il y a quelques mois, j'ai terminé un nouveau livre et dans les critiques, je remarque constamment des mots comme « provocateur » et « controversé ». Sans parler de « idiot ».

Je n'avais pas l'intention de rendre ce livre controversé. J'essayais de le rendre efficace. Je ne voulais pas faire perdre du temps aux gens en leur disant des choses qu'ils savaient déjà. Il est plus efficace de leur donner les différences. Mais je suppose que cela ne peut que donner un livre alarmant.

Edison

Il n’y a pas de controverse sur l’idée la plus controversée : la suggestion selon laquelle la variation de la richesse pourrait ne pas être un problème aussi important qu’on le pense.

Je n'ai pas dit dans le livre que la variation de richesse était en soi une bonne chose. J'ai dit que dans certaines situations, cela pouvait être le signe de bonnes choses. Un mal de tête lancinant n'est pas une bonne chose, mais il peut être le signe d'une bonne chose - par exemple, que vous reprenez connaissance après avoir été frappé à la tête.

Les variations de richesse peuvent être le signe d'une variation de productivité. (Dans une société où il n'y a qu'une seule personne, elles sont identiques.) Et c'est presque certainement une bonne chose : si votre société ne connaît aucune variation de productivité, ce n'est probablement pas parce que tout le monde est Thomas Edison. C'est probablement parce que vous n'avez pas de Thomas Edison.

Dans une société low-tech, on ne constate pas beaucoup de variations de productivité. Si vous avez une tribu de nomades qui ramassent des branches pour un feu, dans quelle mesure le meilleur ramasseur de branches sera-t-il plus productif que le pire ? Un facteur de deux ? Alors que lorsque vous donnez aux gens un outil complexe comme un ordinateur, la variation dans ce qu'ils peuvent en faire est énorme.

Ce n'est pas une idée nouvelle. Fred Brooks a écrit à ce sujet en 1974, et l'étude qu'il a citée a été publiée en 1968. Mais je pense qu'il a sous-estimé la variation entre les programmeurs. Il a écrit sur la productivité en lignes de code : les meilleurs programmeurs peuvent résoudre un problème donné en un dixième de temps. Mais que se passe-t-il si le problème n'est pas donné ? En programmation, comme dans de nombreux domaines, le plus difficile n'est pas de résoudre les problèmes, mais de décider quels problèmes résoudre. L'imagination est difficile à mesurer, mais dans la pratique, elle domine le type de productivité qui se mesure en lignes de code.

La productivité varie dans tous les domaines, mais il y en a peu où elle varie autant. La variation entre les programmeurs est si grande qu'elle devient une différence de nature. Je ne pense pas que ce soit quelque chose d'intrinsèque à la programmation, cependant. Dans tous les domaines, la technologie amplifie les différences de productivité. Je pense que ce qui se passe dans la programmation, c'est simplement que nous avons un grand levier technologique. Mais dans tous les domaines, le levier s'allonge, de sorte que la variation que nous observons est quelque chose que de plus en plus de domaines verront au fil du temps. Et le succès des entreprises et des pays dépendra de plus en plus de la façon dont ils géreront cette variation.

Si la variation de la productivité augmente avec la technologie, la contribution des individus les plus productifs sera non seulement disproportionnée, mais augmentera au fil du temps. Lorsque vous atteignez le point où 90 % de la production d'un groupe est créée par 1 % de ses membres, vous perdez beaucoup si quelque chose (que ce soit des raids vikings ou une planification centralisée) ramène leur productivité à la moyenne.

Si nous voulons tirer le meilleur parti de ces personnes, nous devons les comprendre. Qu'est-ce qui les motive ? De quoi ont-elles besoin pour faire leur travail ? Comment les reconnaître ? Comment les inciter à venir travailler pour vous ? Et puis, bien sûr, il y a la question : comment devenir un tel employé ?

Plus que de l'argent

Je connais une poignée de super-hackers, alors je me suis assis et j'ai réfléchi à ce qu'ils ont en commun. Leur qualité principale est probablement qu'ils aiment vraiment programmer. Les programmeurs ordinaires écrivent du code pour payer leurs factures. Les grands hackers considèrent cela comme quelque chose qu'ils font pour s'amuser et pour lequel ils sont ravis de voir que les gens les paient.

On dit parfois que les grands programmeurs sont indifférents à l'argent. Ce n'est pas tout à fait vrai. Il est vrai que tout ce qui les intéresse vraiment, c'est de faire un travail intéressant. Mais si vous gagnez suffisamment d'argent, vous pouvez travailler sur ce que vous voulez, et c'est pour cette raison que les hackers sont attirés par l'idée de gagner de très grosses sommes d'argent. Mais tant qu'ils doivent continuer à se présenter au travail tous les jours, ils se soucient plus de ce qu'ils font que du montant qu'ils sont payés pour cela.

D'un point de vue économique, c'est un fait de la plus haute importance, car cela signifie que vous n'avez pas à payer les meilleurs hackers à un prix qui correspond à leur valeur. Un bon programmeur peut être dix ou cent fois plus productif qu'un programmeur ordinaire, mais il s'estimera heureux d'être payé trois fois plus. Comme je l'expliquerai plus tard, c'est en partie parce que les bons hackers ne savent pas à quel point ils sont bons. Mais c'est aussi parce que l'argent n'est pas leur principale préoccupation.

Que veulent les hackers ? Comme tous les artisans, les hackers aiment les bons outils. En fait, c'est un euphémisme. Les bons hackers trouvent insupportable d'utiliser de mauvais outils. Ils refuseront tout simplement de travailler sur des projets avec une mauvaise infrastructure.

Dans une start-up pour laquelle j'ai travaillé, l'une des publicités affichées sur notre tableau d'affichage était une publicité d'IBM. Il s'agissait d'une photo d'un AS400, et le titre disait, je crois, « les pirates informatiques le méprisent ». [1]

Lorsque vous décidez de l'infrastructure à utiliser pour un projet, vous ne prenez pas seulement une décision technique. Vous prenez également une décision sociale, et c'est peut-être la plus importante des deux. Par exemple, si votre entreprise souhaite développer un logiciel, il peut sembler prudent de l'écrire en Java. Mais lorsque vous choisissez un langage, vous choisissez également une communauté. Les programmeurs que vous pourrez embaucher pour travailler sur un projet Java ne seront pas aussi intelligents que ceux que vous pourriez faire travailler sur un projet écrit en Python. Et la qualité de vos hackers compte probablement plus que le langage que vous choisissez. Mais, franchement, le fait que les bons hackers préfèrent Python à Java devrait vous en dire long sur les mérites relatifs de ces langages.

Les entreprises préfèrent les langages les plus populaires car ils les considèrent comme des standards. Elles ne veulent pas parier sur la société Betamax. Mais les langages ne sont pas que des standards. Si vous devez déplacer des bits sur un réseau, n'hésitez pas à utiliser TCP/IP. Mais un langage de programmation n'est pas seulement un format. Un langage de programmation est un moyen d'expression.

J'ai lu que Java venait de dépasser Cobol comme langage le plus populaire. En tant que standard, on ne pourrait pas rêver mieux. Mais en tant que moyen d'expression, on pourrait faire beaucoup mieux. De tous les grands programmeurs auxquels je peux penser, je n'en connais qu'un qui programmerait volontairement en Java. Et de tous les grands programmeurs auxquels je peux penser qui ne travaillent pas pour Sun, sur Java, je n'en connais aucun.

Les bons hackers insistent généralement sur l'utilisation de logiciels open source. Non seulement parce qu'ils sont meilleurs, mais aussi parce qu'ils leur donnent plus de contrôle. Les bons hackers insistent sur le contrôle. C'est en partie ce qui fait d'eux de bons hackers : quand quelque chose ne va pas, ils doivent le réparer. Vous voulez qu'ils ressentent cela à propos du logiciel qu'ils écrivent pour vous. Vous ne devriez pas être surpris s'ils ressentent la même chose à propos du système d'exploitation.

Il y a quelques années, un ami capital-risqueur m'a parlé d'une nouvelle start-up dans laquelle il était impliqué. Cela semblait prometteur. Mais la fois suivante où je lui ai parlé, il m'a dit qu'ils avaient décidé de développer leur logiciel sur Windows NT et qu'ils venaient d'embaucher un développeur NT très expérimenté pour être leur directeur technique. Quand j'ai entendu cela, j'ai pensé que ces gars-là étaient condamnés. D'une part, le directeur technique ne pouvait pas être un hacker de premier ordre, car pour devenir un développeur NT éminent, il aurait dû utiliser NT volontairement, plusieurs fois, et je ne pouvais pas imaginer un grand hacker faire cela ; et d'autre part, même s'il était bon, il aurait du mal à embaucher quelqu'un de compétent pour travailler pour lui si le projet devait être développé sur NT. [2]

La dernière frontière

Après les logiciels, l'outil le plus important pour un hacker est probablement son bureau. Les grandes entreprises pensent que la fonction d'un espace de bureau est d'exprimer son rang. Mais les hackers utilisent leur bureau pour bien plus que cela : ils l'utilisent comme un lieu de réflexion. Et si vous êtes une entreprise technologique, leurs pensées sont votre produit. Ainsi, faire travailler des hackers dans un environnement bruyant et distrayant revient à avoir une usine de peinture où l'air est rempli de suie.

La bande dessinée Dilbert parle beaucoup des bureaux à cloisons, et pour cause. Tous les hackers que je connais les méprisent. La simple perspective d'être interrompu suffit à les dissuader de travailler sur des problèmes difficiles. Si vous voulez vraiment travailler dans un bureau à cloisons, vous avez deux options : travailler à la maison, ou arriver tôt, tard ou le week-end, quand personne d'autre n'est là. Les entreprises ne comprennent-elles pas que c'est le signe que quelque chose ne va pas ? Un environnement de bureau est censé vous aider à travailler, pas quelque chose que vous faites malgré tout.

Les entreprises comme Cisco sont fières que tout le monde dispose d'un bureau, même le PDG. Mais elles ne sont pas aussi avancées qu'elles le pensent ; elles considèrent toujours l'espace de bureau comme un signe de rang. Notez également que Cisco est connue pour ne développer que très peu de produits en interne. Elle obtient de nouvelles technologies en achetant les startups qui les ont créées, alors que les hackers disposaient vraisemblablement d'un endroit calme pour travailler.

Microsoft est une grande entreprise qui comprend les besoins des hackers. J'ai vu une fois une annonce de recrutement pour Microsoft avec une grande image représentant une porte. Le principe était le suivant : travaillez pour nous et nous vous donnerons un endroit où vous pourrez réellement travailler. Et vous savez, Microsoft est remarquable parmi les grandes entreprises dans le sens où elle est capable de développer des logiciels en interne. Pas très bien, peut-être, mais assez bien.

Si les entreprises veulent que les hackers soient productifs, elles devraient regarder ce qu'ils font chez eux. Chez eux, les hackers peuvent organiser les choses eux-mêmes pour être plus productifs. Et quand ils travaillent chez eux, ils ne travaillent pas dans des espaces ouverts et bruyants, mais dans des pièces avec des portes. Ils travaillent dans des endroits confortables, proches de chez eux, avec des gens autour et un endroit où se promener quand ils ont besoin de réfléchir à quelque chose, plutôt que dans des boîtes en verre installées dans des hectares de parking. Ils ont un canapé sur lequel ils peuvent faire une sieste quand ils se sentent fatigués, au lieu de rester assis dans le coma à leur bureau, en faisant semblant de travailler. Il n'y a pas d'équipe de personnes avec des aspirateurs qui rugissent tous les soirs pendant les heures de pointe de piratage. Il n'y a pas de réunions ou, Dieu nous en préserve, de retraites d'entreprise ou d'exercices de team-building. Et quand vous regardez ce qu'ils font sur cet ordinateur, vous verrez que cela renforce ce que j'ai dit plus tôt à propos des outils. Ils peuvent être obligés d'utiliser Java et Windows au travail, mais à la maison, où ils peuvent choisir eux-mêmes, vous avez plus de chances de les trouver en train d'utiliser Perl et Linux.

En effet, ces statistiques sur le fait que Cobol ou Java sont les langages les plus populaires peuvent être trompeuses. Ce que nous devrions examiner, si nous voulons savoir quels outils sont les meilleurs, c'est ce que les hackers choisissent lorsqu'ils peuvent choisir librement, c'est-à-dire dans leurs propres projets. Lorsque vous posez cette question, vous découvrez que les systèmes d'exploitation open source ont déjà une part de marché dominante, et le langage numéro un est probablement Perl.

Intéressant

En plus de bons outils, les hackers veulent des projets intéressants. Qu'est-ce qui rend un projet intéressant ? Il est évident que des applications trop sexy comme des avions furtifs ou des logiciels d'effets spéciaux sont intéressantes à travailler. Mais n'importe quelle application peut être intéressante si elle pose de nouveaux défis techniques. Il est donc difficile de prédire quels problèmes les hackers aimeront, car certains ne deviennent intéressants que lorsque les personnes qui y travaillent découvrent un nouveau type de solution. Avant ITA (qui a écrit le logiciel à l'intérieur d'Orbitz), les personnes travaillant sur les recherches de tarifs aériens pensaient probablement que c'était l'une des applications les plus ennuyeuses imaginables. Mais ITA l'a rendu intéressant en redéfinissant le problème d'une manière plus ambitieuse.

Je pense que la même chose s'est produite chez Google. Lorsque Google a été fondé, l'opinion générale parmi les portails était que la recherche était ennuyeuse et sans importance. Mais les gars de Google ne pensaient pas que la recherche était ennuyeuse, et c'est pourquoi ils la font si bien.

C'est un domaine dans lequel les managers peuvent faire la différence. Comme un parent qui dit à son enfant : « Je parie que tu ne peux pas ranger toute ta chambre en dix minutes », un bon manager peut parfois redéfinir un problème comme un problème plus intéressant. Steve Jobs semble être particulièrement doué dans ce domaine, en partie simplement parce qu'il a des normes élevées. Il existait beaucoup de petits ordinateurs bon marché avant le Mac. Il a redéfini le problème comme suit : en créer un qui soit beau. Et cela a probablement poussé les développeurs à travailler plus dur que n'importe quelle carotte ou bâton.

Ils ont assurément tenu leurs promesses. Lorsque le Mac est apparu pour la première fois, il n'était même pas nécessaire de l'allumer pour savoir qu'il serait en bon état ; on pouvait le savoir grâce à son boîtier. Il y a quelques semaines, je marchais dans la rue à Cambridge et dans la poubelle de quelqu'un, j'ai vu ce qui semblait être un étui de transport pour Mac. J'ai regardé à l'intérieur et il y avait un Mac SE. Je l'ai ramené chez moi, je l'ai branché et il a démarré. Le visage heureux du Macintosh, puis le Finder. Mon Dieu, c'était si simple. C'était comme... Google.

Les hackers aiment travailler pour des gens qui ont des exigences élevées. Mais il ne suffit pas d'être exigeant. Il faut insister sur les bonnes choses. Ce qui signifie généralement que vous devez être vous-même un hacker. J'ai lu de temps en temps des articles sur la façon de gérer les programmeurs. En fait, il devrait y avoir deux articles : un sur ce qu'il faut faire si vous êtes vous-même programmeur, et un sur ce qu'il faut faire si vous ne l'êtes pas. Et le deuxième pourrait probablement se résumer en deux mots : abandonnez.

Le problème n’est pas tant la gestion quotidienne. Les bons hackers sont pratiquement autogérés. Le problème est que si vous n’êtes pas un hacker, vous ne pouvez pas savoir qui sont les bons hackers. Un problème similaire explique pourquoi les voitures américaines sont si laides. J’appelle cela le paradoxe du design. Vous pourriez penser que vous pouvez rendre vos produits beaux simplement en engageant un grand designer pour les concevoir. Mais si vous n’avez pas vous-même bon goût , comment reconnaître un bon designer ? Par définition, vous ne pouvez pas le savoir en regardant son portfolio. Et vous ne pouvez pas vous fier aux prix qu’il a gagnés ou aux emplois qu’il a occupés, car dans le design, comme dans la plupart des domaines, ces éléments ont tendance à être dictés par la mode et le blabla, la véritable compétence venant en troisième position. Il n’y a pas d’autre solution : vous ne pouvez pas gérer un processus destiné à produire de belles choses sans savoir ce qu’est la beauté. Les voitures américaines sont laides parce que les constructeurs automobiles américains sont dirigés par des gens de mauvais goût.

Beaucoup de gens dans ce pays pensent que le goût est quelque chose d'insaisissable, voire de frivole. Ce n'est ni l'un ni l'autre. Pour diriger un projet, un manager doit être l'utilisateur le plus exigeant des produits d'une entreprise. Et si vous avez vraiment bon goût, vous pouvez, comme le fait Steve Jobs, faire en sorte que votre satisfaction soit le genre de problème sur lequel les gens de bonne volonté aiment travailler.

Petits problèmes désagréables

Il est assez facile de dire quels types de problèmes ne sont pas intéressants : ceux pour lesquels, au lieu de résoudre quelques gros problèmes clairs, il faut résoudre beaucoup de petits problèmes désagréables. L'un des pires types de projets consiste à écrire une interface pour un logiciel rempli de bugs. Un autre type de projet consiste à personnaliser quelque chose pour répondre aux besoins complexes et mal définis d'un client individuel. Pour les hackers, ce genre de projets est la mort par milliers.

La caractéristique distinctive des petits problèmes désagréables est qu'ils ne vous apprennent rien. Écrire un compilateur est intéressant car cela vous apprend ce qu'est un compilateur. Mais écrire une interface vers un logiciel bogué ne vous apprend rien, car les bogues sont aléatoires. [3] Ce n'est donc pas seulement la méticulosité qui fait que les bons hackers évitent les petits problèmes désagréables. C'est plutôt une question d'instinct de survie. Travailler sur des petits problèmes désagréables vous rend stupide. Les bons hackers les évitent pour la même raison que les modèles évitent les cheeseburgers.

Bien sûr, certains problèmes ont ce caractère inhérent. Et en raison de l'offre et de la demande, ils sont particulièrement bien rémunérés. Ainsi, une entreprise qui trouverait un moyen de faire travailler d'excellents hackers sur des problèmes fastidieux connaîtrait un grand succès. Comment procéderiez-vous ?

C'est le cas des startups. Dans notre startup, Robert Morris travaillait comme administrateur système. C'est comme si les Rolling Stones jouaient lors d'une bar mitzvah. On ne peut pas embaucher ce genre de talent. Mais les gens sont prêts à faire n'importe quel travail pour les entreprises dont ils sont les fondateurs. [4]

Les grandes entreprises résolvent le problème en compartimentant l'entreprise. Elles font travailler des gens intelligents pour elles en créant un département de recherche et développement séparé où les employés n'ont pas à travailler directement sur les petits problèmes désagréables des clients. [5] Dans ce modèle, le département de recherche fonctionne comme une mine. Il produit de nouvelles idées ; peut-être que le reste de l'entreprise pourra les utiliser.

Il n'est peut-être pas nécessaire d'aller jusqu'à cet extrême. La programmation ascendante propose une autre façon de compartimenter l'entreprise : faire travailler les gens intelligents comme des fabricants d'outils. Si votre entreprise crée des logiciels pour faire x, créez un groupe qui crée des outils pour écrire des logiciels de ce type, et un autre qui utilise ces outils pour écrire les applications. De cette façon, vous pourriez être en mesure de faire écrire 99 % de votre code par des gens intelligents, tout en les gardant presque aussi isolés des utilisateurs qu'ils le seraient dans un département de recherche traditionnel. Les fabricants d'outils auraient des utilisateurs, mais ils ne seraient que les propres développeurs de l'entreprise. [6]

Si Microsoft avait adopté cette approche, ses logiciels ne seraient pas si remplis de failles de sécurité, car les personnes les moins intelligentes qui écrivent les applications ne feraient pas de tâches de bas niveau comme l'allocation de mémoire. Au lieu d'écrire Word directement en C, ils assembleraient de gros blocs Lego en langage Word (Duplo, je crois, est le terme technique).

Agglomération

Outre les problèmes intéressants, les bons hackers aiment rencontrer d'autres bons hackers. Les grands hackers ont tendance à se regrouper, parfois de manière spectaculaire, comme au Xerox Parc. Vous n'attirerez donc pas de bons hackers de manière linéaire en fonction de la qualité de l'environnement que vous leur créez. Cette tendance à se regrouper signifie que cela ressemble davantage au carré de l'environnement. C'est donc le gagnant qui rafle la mise. À tout moment, il n'y a qu'une dizaine ou une vingtaine d'endroits où les hackers veulent le plus travailler, et si vous n'en faites pas partie, vous n'aurez pas seulement moins de bons hackers, vous n'en aurez aucun.

Avoir de bons hackers ne suffit pas à lui seul à assurer le succès d'une entreprise. Cela fonctionne bien pour Google et ITA, qui sont deux des points chauds du moment, mais cela n'a pas aidé Thinking Machines ou Xerox. Sun a connu une bonne période pendant un certain temps, mais son modèle économique est en chute libre. Dans cette situation, même les meilleurs hackers ne peuvent pas vous sauver.

Je pense cependant que toutes choses étant égales par ailleurs, une entreprise capable d'attirer de bons hackers aura un énorme avantage. Certains ne seront pas d'accord avec cela. Lorsque nous faisions le tour des sociétés de capital-risque dans les années 1990, plusieurs d'entre elles nous disaient que les sociétés de logiciels ne gagnaient pas en écrivant de bons logiciels, mais grâce à leur marque, à leur domination sur les canaux et à la conclusion de bonnes affaires.

Ils semblaient vraiment y croire, et je crois savoir pourquoi. Je pense que ce que beaucoup de capital-risqueurs recherchent, du moins inconsciemment, c'est le prochain Microsoft. Et bien sûr, si Microsoft est votre modèle, vous ne devriez pas chercher des entreprises qui espèrent réussir en écrivant de bons logiciels. Mais les capital-risqueurs ont tort de chercher le prochain Microsoft, car aucune start-up ne peut être le prochain Microsoft à moins qu'une autre entreprise ne soit prête à se plier au bon moment pour devenir le prochain IBM.

C'est une erreur de prendre Microsoft comme modèle, car toute leur culture découle de ce coup de chance. Microsoft est un mauvais point de départ. Si vous les écartez, vous découvrez que les bons produits ont tendance à gagner sur le marché. Ce que les capital-risqueurs devraient rechercher, c'est le prochain Apple ou le prochain Google.

Je pense que Bill Gates le sait. Ce qui l’inquiète chez Google, ce n’est pas la puissance de sa marque, mais le fait qu’ils disposent de meilleurs hackers. [7]

Reconnaissance

Alors, qui sont les grands hackers ? Comment savoir quand on en rencontre un ? Cela s'avère très difficile. Même les hackers ne peuvent pas le dire. Je suis presque sûr maintenant que mon ami Trevor Blackwell est un grand hacker. Vous avez peut-être lu sur Slashdot comment il a créé son propre Segway . La chose remarquable à propos de ce projet est qu'il a écrit tout le logiciel en une journée (en Python, soit dit en passant).

Pour Trevor, c'est normal. Mais quand je l'ai rencontré pour la première fois, je pensais qu'il était complètement idiot. Il se tenait dans le bureau de Robert Morris et lui parlait de je ne sais quoi, et je me souviens m'être tenue derrière lui en faisant des gestes frénétiques à Robert pour qu'il chasse ce fou de son bureau afin que nous puissions aller déjeuner. Robert dit qu'il a lui aussi mal jugé Trevor au début. Apparemment, quand Robert l'a rencontré pour la première fois, Trevor venait de commencer un nouveau plan qui consistait à écrire tout ce qui concernait chaque aspect de sa vie sur une pile de fiches, qu'il emportait partout avec lui. Il venait également d'arriver du Canada, avait un fort accent canadien et une coupe mulet.

Le problème est aggravé par le fait que les hackers, malgré leur réputation d'insensibilité sociale, font parfois de gros efforts pour paraître intelligents. Quand j'étais étudiant, je passais de temps en temps au laboratoire d'intelligence artificielle du MIT. Au début, c'était un peu intimidant. Tout le monde parlait très vite. Mais au bout d'un moment, j'ai appris à parler vite. Il n'est pas nécessaire de penser plus vite ; il suffit d'utiliser deux fois plus de mots pour tout dire.

Avec cette quantité de bruit dans le signal, il est difficile de reconnaître les bons hackers quand on les rencontre. Je n'arrive pas à le dire, même maintenant. On ne peut pas non plus le savoir à partir de leur CV. Il semble que la seule façon de juger un hacker soit de travailler avec lui sur quelque chose.

C'est pour cette raison que les secteurs de haute technologie ne se développent qu'autour des universités. Le moteur de ces entreprises n'est pas tant les professeurs que les étudiants. Les start-ups se développent autour des universités parce que les universités rassemblent des jeunes prometteurs et les font travailler sur les mêmes projets. Les plus intelligents apprennent à connaître les autres et, ensemble, ils élaborent leurs propres projets.

Comme on ne peut pas reconnaître un bon hacker sans travailler avec lui, les hackers eux-mêmes ne peuvent pas savoir à quel point ils sont bons. C'est vrai dans une certaine mesure dans la plupart des domaines. J'ai constaté que les gens qui excellent dans un domaine ne sont pas tellement convaincus de leur propre grandeur, mais qu'ils sont perplexes quant à la raison pour laquelle les autres semblent si incompétents.

Mais il est particulièrement difficile pour les hackers de savoir à quel point ils sont bons, car il est difficile de comparer leurs travaux. C'est plus facile dans la plupart des autres domaines. Au cent mètres, on sait en 10 secondes qui est le plus rapide. Même en mathématiques, il semble y avoir un consensus général sur les problèmes difficiles à résoudre et sur ce qui constitue une bonne solution. Mais le hacking, c'est comme l'écriture. Qui peut dire lequel de deux romans est le meilleur ? Certainement pas les auteurs.

En ce qui concerne les hackers, au moins, les autres hackers peuvent le savoir. En effet, contrairement aux romanciers, les hackers collaborent sur des projets. Lorsque vous avez l'occasion de poser quelques problèmes difficiles à quelqu'un sur Internet, vous apprenez assez rapidement à quel point il vous répond avec force. Mais les hackers ne peuvent pas se regarder travailler. Donc si vous demandez à un grand hacker s'il est bon, il vous répondra presque certainement : « Je ne sais pas. » Il ne fait pas seulement preuve de modestie. Il ne sait vraiment pas.

Et personne ne le sait, sauf ceux avec qui nous avons travaillé. Ce qui nous met dans une situation étrange : nous ne savons pas qui devraient être nos héros. Les hackers qui deviennent célèbres le deviennent généralement par hasard, grâce aux relations publiques. Parfois, j'ai besoin de donner l'exemple d'un grand hacker, et je ne sais jamais qui citer. Les premiers noms qui me viennent à l'esprit sont toujours ceux de personnes que je connais personnellement, mais il me semble ridicule de les utiliser. Je pense donc que je devrais peut-être dire Richard Stallman, ou Linus Torvalds, ou Alan Kay, ou quelqu'un de célèbre comme ça. Mais je n'ai aucune idée si ces gars sont de grands hackers. Je n'ai jamais travaillé avec eux sur quoi que ce soit.

S’il existe un Michael Jordan du piratage informatique, personne ne le sait, y compris lui.

Cultivation

Enfin, la question que tous les hackers se posent : comment devenir un grand hacker ? Je ne sais pas s'il est possible de devenir un grand hacker. Mais il est certainement possible de faire des choses qui vous rendent stupide, et si vous pouvez vous rendre stupide, vous pouvez probablement aussi vous rendre intelligent.

La clé pour être un bon hacker est peut-être de travailler sur ce que vous aimez. Quand je pense aux grands hackers que je connais, ils ont une chose en commun : l'extrême difficulté de les faire travailler sur quelque chose qu'ils ne veulent pas faire. Je ne sais pas si c'est une cause ou un effet ; c'est peut-être les deux.

Pour bien faire quelque chose, il faut l' aimer . Donc, dans la mesure où vous parvenez à préserver le fait de pirater comme quelque chose que vous aimez, vous avez de fortes chances de le faire bien. Essayez de conserver l'émerveillement que vous aviez à 14 ans pour la programmation. Si vous avez peur que votre travail actuel vous pourrisse le cerveau, c'est probablement le cas.

Les meilleurs hackers sont bien sûr intelligents, mais c'est vrai dans de nombreux domaines. Y a-t-il une qualité qui leur est propre ? J'ai posé la question à des amis, et la première chose qu'ils ont mentionnée était la curiosité. J'ai toujours pensé que toutes les personnes intelligentes étaient curieuses, que la curiosité était simplement la première dérivée de la connaissance. Mais apparemment, les hackers sont particulièrement curieux, surtout en ce qui concerne le fonctionnement des choses. C'est logique, car les programmes sont en fait des descriptions géantes du fonctionnement des choses.

Plusieurs amis ont mentionné la capacité des hackers à se concentrer, leur capacité, comme l'a dit l'un d'eux, à « ignorer tout ce qui se passe en dehors de leur tête ». J'ai certainement remarqué cela. Et j'ai entendu plusieurs hackers dire qu'après avoir bu ne serait-ce qu'une demi-bière, ils ne savent plus programmer du tout. Donc peut-être que le hacking nécessite une capacité spéciale de concentration. Peut-être que les grands hackers peuvent charger une grande quantité de contexte dans leur tête, de sorte que lorsqu'ils regardent une ligne de code, ils ne voient pas seulement cette ligne mais tout le programme qui l'entoure. John McPhee a écrit que le succès de Bill Bradley en tant que joueur de basket était dû en partie à sa vision périphérique extraordinaire. Une vue « parfaite » signifie environ 47 degrés de vision périphérique verticale. Bill Bradley en avait 70 ; il pouvait voir le panier alors qu'il regardait le sol. Peut-être que les grands hackers ont une capacité innée similaire. (Je triche en utilisant un langage très dense , ce qui rétrécit le terrain.)

Cela pourrait expliquer le décalage entre les bureaux à cloisons. Peut-être que les responsables des installations, n'ayant aucune concentration à briser, n'imaginent pas que travailler dans un bureau à cloisons, pour un hacker, c'est comme avoir le cerveau dans un mixeur. (Alors que Bill, si les rumeurs d'autisme sont vraies, le sait trop bien.)

Une différence que j'ai remarquée entre les grands hackers et les gens intelligents en général, c'est que les hackers sont plus politiquement incorrects . Dans la mesure où il existe une poignée de main secrète entre les bons hackers, c'est lorsqu'ils se connaissent suffisamment pour exprimer des opinions qui leur vaudraient d'être lapidés à mort par le grand public. Et je peux comprendre pourquoi le politiquement incorrect serait une qualité utile en programmation. Les programmes sont très complexes et, du moins entre les mains de bons programmeurs, très fluides. Dans de telles situations, il est utile d'avoir l'habitude de remettre en question les hypothèses.

Pouvez-vous cultiver ces qualités ? Je ne sais pas. Mais vous pouvez au moins ne pas les réprimer. Voici donc ma meilleure recette. S'il est possible de devenir un excellent hacker, la meilleure façon d'y parvenir est peut-être de conclure un pacte avec vous-même : vous n'aurez jamais à travailler sur des projets ennuyeux (à moins que votre famille ne meure de faim), et en échange, vous ne vous autoriserez jamais à faire un travail à moitié fait. Tous les grands hackers que je connais semblent avoir conclu ce pacte, même si aucun d'entre eux n'avait peut-être le choix.

Remarques

[1] Pour être honnête, je dois dire qu'IBM fabrique du matériel décent. J'ai écrit ceci sur un ordinateur portable IBM.

[2] Ils se sont avérés voués à l'échec. Ils ont fermé leurs portes quelques mois plus tard.

[3] Je pense que c'est ce que les gens veulent dire quand ils parlent du « sens de la vie ». À première vue, cela semble une idée étrange. La vie n'est pas une expression ; comment pourrait-elle avoir un sens ? Mais elle peut avoir une qualité qui ressemble beaucoup à un sens. Dans un projet comme un compilateur, vous devez résoudre de nombreux problèmes, mais ceux-ci s'inscrivent tous dans un modèle, comme dans un signal. Alors que lorsque les problèmes que vous devez résoudre sont aléatoires, ils ressemblent à du bruit.

[4] Einstein a travaillé à un moment donné à la conception de réfrigérateurs. (Il avait des capitaux propres.)

[5] Il est difficile de dire exactement ce qui constitue la recherche dans le monde informatique, mais en première approximation, il s’agit de logiciels qui n’ont pas d’utilisateurs.

Je ne pense pas que ce soit la publication qui incite les meilleurs hackers à vouloir travailler dans des services de recherche. Je pense que c'est surtout le fait de ne pas avoir à participer à une réunion de trois heures avec un chef de produit à propos des problèmes d'intégration de la version coréenne de Word 13.27 avec le trombone parlant.

[6] Il y a longtemps, le secteur de la construction connaît un phénomène similaire. Il y a quelques centaines d’années, les constructeurs locaux construisaient tous les éléments de la maison. Mais de plus en plus, les constructeurs assemblent des composants conçus et fabriqués par d’autres. Tout comme l’arrivée de l’édition assistée par ordinateur, cette pratique a donné aux gens la liberté d’expérimenter de manière désastreuse, mais elle est certainement plus efficace.

[7] Google est beaucoup plus dangereux pour Microsoft que Netscape. Probablement plus dangereux que n'importe quelle autre entreprise ne l'a jamais été. Ne serait-ce que parce qu'ils sont déterminés à se battre. Sur leur page d'offres d'emploi, ils affirment que l'une de leurs « valeurs fondamentales » est « Ne soyez pas méchants ». De la part d'une entreprise qui vend de l'huile de soja ou des équipements miniers, une telle déclaration serait tout simplement excentrique. Mais je pense que nous tous, dans le monde de l'informatique, reconnaissons à qui il s'agit là d'une déclaration de guerre.

Merci à Jessica Livingston, Robert Morris et Sarah Harlin pour avoir lu les versions antérieures de cette conférence.