Loading...

GRANDS HACKERS

Original

Juillet 2004

(Cet essai est dérivé d'une conférence à Oscon 2004.)

Il y a quelques mois, j'ai terminé un nouveau livre, et dans les critiques, je continue à remarquer des mots comme "provocateur" et "controversé". Sans parler de "idiot".

Je ne voulais pas rendre le livre controversé. J'essayais de le rendre efficace. Je ne voulais pas perdre le temps des gens à leur dire des choses qu'ils savaient déjà. Il est plus efficace de leur donner les différences. Mais je suppose que cela est destiné à donner un livre alarmant.

Edisons

Il n'y a pas de controverse sur quelle idée est la plus controversée : la suggestion que la variation de richesse pourrait ne pas être un problème aussi grand que nous le pensons.

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 pourrait être un signe de bonnes choses. Un mal de tête lancinant n'est pas une bonne chose, mais cela peut être un signe d'une bonne chose - par exemple, que vous êtes en train de retrouver conscience après avoir été frappé à la tête.

La variation de richesse peut être un signe de variation de productivité. (Dans une société d'un, elles sont identiques.) Et cela est presque certainement une bonne chose : si votre société n'a pas de 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 Edisons.

Dans une société à faible technologie, vous ne voyez pas beaucoup de variation dans la productivité. Si vous avez une tribu de nomades collectant des bâtons pour un feu, combien plus productif le meilleur collecteur de bâtons sera-t-il que le pire ? Un facteur de deux ? Alors que lorsque vous donnez aux gens un outil complexe comme un ordinateur, la variation de ce qu'ils peuvent faire avec est énorme.

Ce n'est pas une nouvelle idée. Fred Brooks en a parlé 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 du temps. Mais que se passe-t-il si le problème n'est pas donné ? En programmation, comme dans de nombreux domaines, la partie difficile n'est pas de résoudre des problèmes, mais de décider quels problèmes résoudre. L'imagination est difficile à mesurer, mais en pratique, elle domine le type de productivité mesurée en lignes de code.

La productivité varie dans n'importe quel domaine, 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 chaque domaine, la technologie amplifie les différences de productivité. Je pense que ce qui se passe dans la programmation, c'est juste que nous avons beaucoup de leviers technologiques. Mais dans chaque domaine, le levier s'allonge, donc la variation que nous voyons 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 manière dont ils y font face.

Si la variation de productivité augmente avec la technologie, alors la contribution des individus les plus productifs ne sera pas seulement disproportionnellement grande, mais augmentera réellement avec le temps. Quand vous atteignez le point où 90 % de la production d'un groupe est créée par 1 % de ses membres, vous perdez gros si quelque chose (que ce soit des raids vikings, ou une planification centrale) tire leur productivité vers la moyenne.

Si nous voulons tirer le meilleur parti d'eux, nous devons comprendre ces personnes particulièrement productives. Qu'est-ce qui les motive ? Que leur faut-il pour faire leur travail ? Comment les reconnaît-on ? Comment les fait-on venir travailler pour vous ? Et puis, bien sûr, il y a la question, comment devient-on l'un d'eux ?

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é déterminante est probablement qu'ils aiment vraiment programmer. Les programmeurs ordinaires écrivent du code pour payer les factures. Les grands hackers pensent à cela comme quelque chose qu'ils font pour le plaisir, et dont ils sont ravis de découvrir que les gens sont prêts à les payer pour cela.

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 est de faire un travail intéressant. Mais si vous gagnez assez d'argent, vous pouvez travailler sur ce que vous voulez, et pour cette raison, les hackers sont attirés par l'idée de gagner de très grosses sommes d'argent. Mais tant qu'ils doivent encore se présenter au travail chaque jour, ils se soucient plus de ce qu'ils y font que de combien ils sont payés pour cela.

Économiquement, c'est un fait d'une grande importance, car cela signifie que vous n'avez pas à payer les grands hackers quoi que ce soit de ce qu'ils valent. Un grand programmeur pourrait être dix ou cent fois plus productif qu'un programmeur ordinaire, mais il se considérera chanceux d'être payé trois fois plus. Comme je l'expliquerai plus tard, c'est partiellement parce que les grands hackers ne savent pas à quel point ils sont bons. Mais c'est aussi parce que l'argent n'est pas la principale chose qu'ils veulent.

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 simplement de travailler sur des projets avec la mauvaise infrastructure.

Dans une startup pour laquelle j'ai travaillé, l'une des choses affichées sur notre tableau d'affichage était une annonce d'IBM. C'était une image d'un AS400, et le titre disait, je pense, "les hackers le méprisent." [1]

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

Les types d'affaires préfèrent les langages les plus populaires parce qu'ils considèrent les langages comme des standards. Ils ne veulent pas parier l'entreprise sur Betamax. Le problème avec les langages, cependant, c'est qu'ils ne sont pas juste des standards. Si vous devez déplacer des bits sur un réseau, par tous les moyens utilisez TCP/IP. Mais un langage de programmation n'est pas juste un format. Un langage de programmation est un moyen d'expression.

J'ai lu que Java vient de dépasser Cobol en tant que langage le plus populaire. En tant que standard, vous ne pourriez pas souhaiter mieux. Mais en tant que moyen d'expression, vous pourriez faire beaucoup mieux. De tous les grands programmeurs auxquels je pense, je ne connais qu'un seul qui programmerait volontairement en Java. Et de tous les grands programmeurs auxquels je pense qui ne travaillent pas pour Sun, sur Java, je n'en connais aucun.

Les grands hackers insistent également généralement pour utiliser des logiciels open source. Pas seulement parce que c'est mieux, mais parce que cela leur donne plus de contrôle. Les bons hackers insistent sur le contrôle. C'est en partie ce qui les rend de bons hackers : quand quelque chose est cassé, ils ont besoin de le réparer. Vous voulez qu'ils se sentent ainsi à propos du logiciel qu'ils écrivent pour vous. Vous ne devriez pas être surpris lorsqu'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 startup avec laquelle il était impliqué. Cela semblait prometteur. Mais la prochaine fois que je lui ai parlé, il a dit qu'ils avaient décidé de construire leur logiciel sur Windows NT, et venaient d'embaucher un développeur NT très expérimenté pour être leur directeur technique. Quand j'ai entendu cela, j'ai pensé, ces gars sont condamnés. D'une part, le CTO ne pouvait pas être un hacker de premier ordre, car pour devenir un éminent développeur NT, 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 bon pour travailler pour lui si le projet devait être construit sur NT. [2]

La dernière frontière

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

La bande dessinée Dilbert a beaucoup à dire sur les cubicles, et avec de bonnes raisons. Tous les hackers que je connais les méprisent. La simple perspective d'être interrompu est suffisante pour empêcher les hackers de travailler sur des problèmes difficiles. Si vous voulez obtenir un vrai travail dans un bureau avec des cubicles, vous avez deux options : travailler à domicile, ou venir tôt ou tard ou le week-end, quand personne d'autre n'est là. Les entreprises ne réalisent-elles pas que c'est un signe que quelque chose est cassé ? Un environnement de bureau est censé être quelque chose qui aide vous à travailler, pas quelque chose sur lequel vous travaillez malgré.

Des entreprises comme Cisco sont fières que tout le monde là-bas ait un cubicle, même le PDG. Mais elles ne sont pas aussi avancées qu'elles le pensent ; évidemment, elles considèrent toujours l'espace de bureau comme un insigne de rang. Notez aussi que Cisco est célèbre pour faire très peu de développement de produits en interne. Ils obtiennent de nouvelles technologies en achetant les startups qui les ont créées - où presque certainement les hackers avaient un endroit calme pour travailler.

Une grande entreprise qui comprend ce dont les hackers ont besoin est Microsoft. J'ai une fois vu une annonce de recrutement pour Microsoft avec une grande image d'une porte. Travaillez pour nous, le principe était, et nous vous donnerons un endroit où vous pourrez réellement faire du travail. Et vous savez, Microsoft est remarquable parmi les grandes entreprises en ce sens qu'elles sont capables de développer des logiciels en interne. Pas bien, peut-être, mais suffisamment 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 qu'ils puissent en faire le maximum. Et quand ils travaillent chez eux, les hackers ne travaillent pas dans des espaces bruyants et ouverts ; ils travaillent dans des pièces avec des portes. Ils travaillent dans des endroits confortables, de quartier, avec des gens autour et quelque part pour marcher quand ils ont besoin de réfléchir, au lieu d'être dans des boîtes en verre situées dans des acres de parkings. Ils ont un canapé sur lequel ils peuvent faire une sieste quand ils se sentent fatigués, au lieu de rester dans le coma à leur bureau, prétendant travailler. Il n'y a pas d'équipe de personnes avec des aspirateurs qui passent chaque soir pendant les heures de hacking de pointe. 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 constaterez que cela renforce ce que j'ai dit plus tôt sur les outils. Ils peuvent devoir utiliser Java et Windows au travail, mais chez eux, où ils peuvent choisir pour eux-mêmes, vous êtes plus susceptibles de les trouver utilisant Perl et Linux.

En effet, ces statistiques sur Cobol ou Java étant le langage le plus populaire peuvent être trompeuses. Ce que nous devrions examiner, si nous voulons savoir quels outils sont les meilleurs, c'est ce que les hackers choisissent quand ils peuvent choisir librement - c'est-à-dire, dans des projets qui leur appartiennent. Quand 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

Avec de bons outils, les hackers veulent des projets intéressants. Qu'est-ce qui rend un projet intéressant ? Eh bien, évidemment, des applications manifestement sexy comme des avions furtifs ou des logiciels d'effets spéciaux seraient intéressantes à travailler. Mais toute application peut être intéressante si elle pose des défis techniques nouveaux. Il est donc difficile de prédire quels problèmes les hackers aimeront, car certains deviennent intéressants seulement 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é, la sagesse conventionnelle parmi les soi-disant 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 le font si bien.

C'est un domaine où les managers peuvent faire une différence. Comme un parent disant à un 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 bon à cela, en partie simplement en ayant des normes élevées. Il y avait beaucoup de petits ordinateurs peu coûteux avant le Mac. Il a redéfini le problème comme : en faire un qui soit beau. Et cela a probablement poussé les développeurs plus fort que n'importe quelle carotte ou bâton ne pourrait le faire.

Ils ont certainement livré. Lorsque le Mac est apparu pour la première fois, vous n'aviez même pas besoin de l'allumer pour savoir qu'il serait bon ; vous pouviez le dire par le boîtier. Il y a quelques semaines, je marchais dans la rue à Cambridge, et dans les ordures de quelqu'un, j'ai vu ce qui semblait être un étui de Mac. J'ai regardé à l'intérieur, et il y avait un Mac SE. Je l'ai ramené chez moi et l'ai branché, et il a démarré. Le visage heureux de Macintosh, et puis le Finder. Mon Dieu, c'était si simple. C'était juste comme ... Google.

Les hackers aiment travailler pour des personnes ayant des normes élevées. Mais ce n'est pas suffisant d'être exigeant. Vous devez insister sur les bonnes choses. Ce qui signifie généralement que vous devez être un hacker vous-même. J'ai vu des articles occasionnels sur la façon de gérer des programmeurs. En réalité, il devrait y avoir deux articles : un sur ce qu'il faut faire si vous êtes vous-même un programmeur, et un sur ce qu'il faut faire si vous ne l'êtes pas. Et le deuxième pourrait probablement être condensé en deux mots : abandonnez.

Le problème n'est pas tant la gestion quotidienne. De très bons hackers sont pratiquement auto-gérants. Le problème est que, si vous n'êtes pas un hacker, vous ne pouvez pas dire qui sont les bons hackers. Un problème similaire explique pourquoi les voitures américaines sont si laides. Je l'appelle le paradoxe du design. Vous pourriez penser que vous pourriez rendre vos produits beaux simplement en embauchant un grand designer pour les concevoir. Mais si vous-même n'avez pas bon goût, comment allez-vous reconnaître un bon designer ? Par définition, vous ne pouvez pas le dire à partir de son portfolio. Et vous ne pouvez pas vous fier aux récompenses qu'il a remportées ou aux emplois qu'il a eus, car en design, comme dans la plupart des domaines, ceux-ci tendent à être dictés par la mode et le réseautage, avec la véritable capacité en troisième position. Il n'y a pas d'échappatoire : 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 entreprises automobiles américaines sont dirigées par des personnes ayant un mauvais goût.

Beaucoup de gens dans ce pays considèrent le goût comme quelque chose d'insaisissable, ou même de frivole. Ce n'est ni l'un ni l'autre. Pour diriger le design, 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 Steve Jobs, faire de votre satisfaction le genre de problème sur lequel les bonnes personnes aiment travailler.

Problèmes désagréables

Il est assez facile de dire quels types de problèmes ne sont pas intéressants : ceux où au lieu de résoudre quelques grands problèmes clairs, vous devez résoudre beaucoup de petits problèmes désagréables. L'un des pires types de projets est d'écrire une interface pour un logiciel qui est plein de bugs. Un autre est lorsque vous devez personnaliser quelque chose pour les besoins complexes et mal définis d'un client individuel. Pour les hackers, ces types de projets sont la mort par mille coupures.

La caractéristique distinctive des petits problèmes désagréables est que vous n'apprenez rien d'eux. Écrire un compilateur est intéressant parce que cela vous enseigne ce qu'est un compilateur. Mais écrire une interface pour un logiciel bogué ne vous apprend rien, car les bugs sont aléatoires. [3] Donc, ce n'est pas seulement la minutie qui fait que les bons hackers évitent les petits problèmes désagréables. C'est plus une question de préservation de soi. Travailler sur des petits problèmes désagréables vous rend stupide. Les bons hackers l'évitent pour la même raison que les mannequins évitent les cheeseburgers.

Bien sûr, certains problèmes ont intrinsèquement ce caractère. Et à cause de l'offre et de la demande, ils paient particulièrement bien. Donc, une entreprise qui trouverait un moyen de faire travailler de grands hackers sur des problèmes ennuyeux serait très réussie. Comment le feriez-vous ?

Un endroit où cela se produit est dans les startups. Dans notre startup, nous avions Robert Morris travaillant comme administrateur système. C'est comme avoir les Rolling Stones jouant à une bar mitzvah. Vous ne pouvez pas embaucher ce genre de talent. Mais les gens feront n'importe quelle quantité de corvées pour des entreprises dont ils sont les fondateurs. [4]

Les grandes entreprises résolvent le problème en partitionnant l'entreprise. Elles obtiennent des personnes intelligentes pour travailler pour elles en établissant un département R&D 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. Ils produisent de nouvelles idées ; peut-être le reste de l'entreprise pourra les utiliser.

Vous n'avez peut-être pas à aller à cet extrême. La programmation ascendante suggère une autre façon de partitionner l'entreprise : faire travailler les personnes intelligentes comme fabricants d'outils. Si votre entreprise fabrique des logiciels pour faire x, ayez un groupe qui construit des outils pour écrire des logiciels de ce type, et un autre qui utilise ces outils pour écrire les applications. De cette manière, vous pourriez être en mesure de faire écrire 99 % de votre code par des personnes intelligentes, mais les garder presque aussi isolées des utilisateurs qu'elles le seraient dans un département de recherche traditionnel. Les fabricants d'outils auraient des utilisateurs, mais ce ne seraient que les développeurs de l'entreprise. [6]

Si Microsoft utilisait cette approche, leur logiciel ne serait pas si plein de failles de sécurité, car les personnes moins intelligentes écrivant les applications réelles ne feraient pas de choses de bas niveau comme allouer de la mémoire. Au lieu d'écrire Word directement en C, elles assembleraient de grands blocs Lego de langage Word. (Duplo, je crois, est le terme technique.)

Regroupement

Avec des problèmes intéressants, ce que les bons hackers aiment, ce sont d'autres bons hackers. Les grands hackers ont tendance à se regrouper - parfois spectaculairement, comme à Xerox Parc. Donc, vous n'attirerez pas de bons hackers en proportion linéaire de la qualité de l'environnement que vous créez pour eux. La tendance à se regrouper signifie que c'est plus comme le carré de l'environnement. Donc, c'est le gagnant qui prend tout. À tout moment, il n'y a qu'environ dix ou vingt endroits où les hackers veulent le plus travailler, et si vous n'en faites pas partie, vous n'aurez pas seulement moins de grands hackers, vous n'en aurez aucun.

Avoir de grands hackers n'est pas, en soi, suffisant pour faire une entreprise réussie. Cela fonctionne bien pour Google et ITA, qui sont deux des points chauds en ce moment, mais cela n'a pas aidé Thinking Machines ou Xerox. Sun a eu une bonne période pendant un certain temps, mais leur modèle économique est un ascenseur descendant. Dans cette situation, même les meilleurs hackers ne peuvent pas vous sauver.

Je pense cependant qu'en tenant compte de toutes choses égales par ailleurs, une entreprise qui peut attirer de grands hackers aura un énorme avantage. Il y a des gens qui ne seraient pas d'accord avec cela. Lorsque nous faisions le tour des sociétés de capital-risque dans les années 1990, plusieurs nous ont dit que les entreprises de logiciels ne gagnaient pas en écrivant de grands logiciels, mais grâce à la marque, et en dominant les canaux, et en faisant les bonnes affaires.

Ils semblaient vraiment croire cela, et je pense que je sais pourquoi. Je pense que ce que beaucoup de VCs 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 gagner en écrivant de grands logiciels. Mais les VCs se trompent de chercher le prochain Microsoft, car aucune startup ne peut être le prochain Microsoft à moins qu'une autre entreprise ne soit prête à se plier au bon moment et à être le prochain IBM.

C'est une erreur d'utiliser Microsoft comme modèle, car toute leur culture découle de ce coup de chance. Microsoft est un mauvais point de données. Si vous les excluez, vous constatez que de bons produits ont tendance à gagner sur le marché. Ce que les VCs devraient rechercher, c'est le prochain Apple, ou le prochain Google.

Je pense que Bill Gates le sait. Ce qui l'inquiète à propos de Google, ce n'est pas le pouvoir de leur marque, mais le fait qu'ils ont de meilleurs hackers. [7]

Reconnaissance

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

Pour Trevor, c'est la norme. Mais quand je l'ai rencontré pour la première fois, je pensais qu'il était un complet idiot. Il se tenait dans le bureau de Robert Morris en lui parlant de quelque chose ou d'autre, et je me souviens m'être tenu derrière lui en faisant des gestes frénétiques à Robert pour chasser ce fou de son bureau afin que nous puissions aller déjeuner. Robert dit qu'il a mal jugé Trevor au début aussi. Apparemment, lorsque Robert l'a rencontré pour la première fois, Trevor venait de commencer un nouveau projet qui consistait à tout écrire sur tous les aspects de sa vie sur une pile de cartes index, qu'il emportait partout avec lui. Il venait également d'arriver du Canada, et 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'oblivion social, mettent parfois beaucoup d'efforts à sembler intelligents. Quand j'étais en école supérieure, je traînais parfois au laboratoire d'IA du MIT. C'était un peu intimidant au début. Tout le monde parlait si vite. Mais après un certain temps, j'ai appris le truc de parler vite. Vous n'avez pas à penser plus vite ; il suffit d'utiliser deux fois plus de mots pour dire tout.

Avec cette quantité de bruit dans le signal, il est difficile de reconnaître de bons hackers lorsque vous les rencontrez. Je ne peux pas le dire, même maintenant. Vous ne pouvez pas non plus le dire à partir de leurs CV. Il semble que la seule façon de juger un hacker est de travailler avec lui sur quelque chose.

Et c'est la raison pour laquelle les zones de haute technologie n'apparaissent que autour des universités. L'ingrédient actif ici n'est pas tant les professeurs que les étudiants. Les startups 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 intelligents apprennent qui sont les autres intelligents, et ensemble ils concoctent de nouveaux projets à eux.

Parce que vous ne pouvez pas reconnaître un grand hacker sauf en travaillant avec lui, les hackers eux-mêmes ne peuvent pas dire à quel point ils sont bons. C'est vrai dans une certaine mesure dans la plupart des domaines. J'ai constaté que les personnes qui sont excellentes dans quelque chose ne sont pas tant convaincues de leur propre grandeur que mystifiées par le fait que tout le monde semble si incompétent.

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

Avec les hackers, au moins, d'autres hackers peuvent le dire. C'est parce que, contrairement aux romanciers, les hackers collaborent sur des projets. Quand vous avez la chance de frapper quelques problèmes difficiles sur le net à quelqu'un, vous apprenez assez rapidement à quel point ils les frappent en retour. Mais les hackers ne peuvent pas s'observer au travail. Donc, si vous demandez à un grand hacker à quel point il est bon, il est presque certain de répondre, je ne sais pas. Il n'est pas juste modeste. Il ne sait vraiment pas.

Et aucun d'entre nous ne sait, sauf pour les personnes avec lesquelles nous avons réellement 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 tendent à devenir célèbres par des accidents aléatoires de relations publiques. Parfois, j'ai besoin de donner un exemple d'un grand hacker, et je ne sais jamais qui utiliser. Les premiers noms qui me viennent à l'esprit sont toujours des personnes que je connais personnellement, mais cela semble lame de les utiliser. Alors, je pense, peut-être devrais-je 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 y a un Michael Jordan du hacking, personne ne le sait, y compris lui.

Cultivation

Enfin, la question que tous les hackers se posent : comment devient-on un grand hacker ? Je ne sais pas s'il est possible de se transformer en un. 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 peut être de travailler sur ce que vous aimez. Quand je pense aux grands hackers que je connais, une chose qu'ils ont en commun est l'extrême difficulté de les faire travailler sur quoi que ce soit qu'ils ne veulent pas. Je ne sais pas si c'est la cause ou l'effet ; cela peut être les deux.

Pour bien faire quelque chose, vous devez aimer cela. Donc, dans la mesure où vous pouvez préserver le hacking comme quelque chose que vous aimez, vous êtes susceptible de le faire bien. Essayez de garder le sens de l'émerveillement que vous aviez à propos de la programmation à 14 ans. Si vous êtes inquiet que votre emploi actuel pourrisse votre cerveau, c'est probablement le cas.

Les meilleurs hackers ont tendance à être intelligents, bien sûr, mais c'est vrai dans beaucoup de domaines. Y a-t-il une qualité qui est unique aux hackers ? J'ai demandé à quelques amis, et la chose numéro un qu'ils ont mentionnée était la curiosité. J'avais toujours supposé 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 à propos de la façon dont les choses fonctionnent. Cela a du sens, car les programmes sont en effet de grandes descriptions de la façon dont les choses fonctionnent.

Plusieurs amis ont mentionné la capacité des hackers à se concentrer - leur capacité, comme l'a dit l'un d'eux, à "ignorer tout ce qui est en dehors de leur propre tête." J'ai certainement remarqué cela. Et j'ai entendu plusieurs hackers dire qu'après avoir bu même une demi-bière, ils ne peuvent pas programmer du tout. Donc, peut-être que le hacking nécessite une capacité spéciale à se concentrer. 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 voient non 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-ball était dû en partie à sa vision périphérique extraordinaire. Une vision "parfaite" signifie environ 47 degrés de vision périphérique verticale. Bill Bradley avait 70 ; il pouvait voir le panier quand 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éduit le terrain.)

Cela pourrait expliquer le décalage concernant les cubicles. Peut-être que les personnes en charge des installations, n'ayant aucune concentration à briser, n'ont aucune idée que travailler dans un cubicle donne à un hacker l'impression d'avoir son cerveau dans un mélangeur. (Tandis que Bill, si les rumeurs sur l'autisme sont vraies, le sait que trop bien.)

Une différence que j'ai remarquée entre les grands hackers et les personnes intelligentes en général est que les hackers sont plus politiquement incorrects. Dans la mesure où il y a une poignée secrète parmi les bons hackers, c'est quand ils se connaissent suffisamment bien pour exprimer des opinions qui les feraient lapider à mort par le grand public. Et je peux voir pourquoi l'incorrection politique 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. Donc voici ma meilleure tentative pour une recette. Si il est possible de se transformer en un grand hacker, la façon de le faire peut être de conclure l'accord suivant avec vous-même : vous ne devez jamais travailler sur des projets ennuyeux (à moins que votre famille ne risque de mourir de faim), et en retour, vous ne vous permettrez jamais de faire un travail bâclé. Tous les grands hackers que je connais semblent avoir conclu cet accord, bien que peut-être aucun d'eux n'ait eu le choix dans la question.

Notes

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

[2] Ils se sont effectivement révélés condamnés. Ils ont fermé 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 beaucoup de problèmes, mais les problèmes tombent tous dans un schéma, comme dans un signal. Alors que lorsque les problèmes que vous devez résoudre sont aléatoires, ils semblent être du bruit.

[4] Einstein a à un moment travaillé à concevoir des réfrigérateurs. (Il avait des actions.)

[5] Il est difficile de dire exactement ce qui constitue la recherche dans le monde de l'informatique, mais comme première approximation, c'est un logiciel qui n'a pas d'utilisateurs.

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

[6] Quelque chose de similaire se produit depuis longtemps dans le secteur de la construction. Lorsque vous faisiez construire une maison il y a quelques centaines d'années, les constructeurs locaux construisaient tout dedans. Mais de plus en plus, ce que font les constructeurs, c'est assembler des composants conçus et fabriqués par quelqu'un d'autre. Cela a, comme l'arrivée de l'édition de bureau, donné aux gens la liberté d'expérimenter de manière désastreuse, mais c'est certainement plus efficace.

[7] Google est beaucoup plus dangereux pour Microsoft que Netscape ne l'était. Probablement plus dangereux que n'importe quelle autre entreprise ne l'a jamais été. Pas moins parce qu'ils sont déterminés à se battre. Sur leur page de liste d'emplois, ils disent que l'une de leurs "valeurs fondamentales" est "Ne soyez pas malveillant." Pour une entreprise vendant de l'huile de soja ou des équipements miniers, une telle déclaration serait simplement excentrique. Mais je pense que nous tous dans le monde de l'informatique reconnaissons à qui cela constitue une déclaration de guerre.

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