DIPLÔME DE PREMIER CYCLE
OriginalMars 2005
(Certaines parties de cet essai ont commencé comme des réponses aux étudiants qui m'ont écrit avec des questions.)
J'ai récemment reçu plusieurs courriels d'étudiants en informatique me demandant ce qu'ils devaient faire à l'université. Je ne suis peut-être pas la meilleure source de conseils, car j'ai suivi des cours de philosophie à l'université. Mais j'ai suivi tellement de cours d'informatique que la plupart des étudiants en informatique pensaient que j'en étais un. J'étais certainement un hacker, au moins.
Piratage
Que faut-il faire à l'université pour devenir un bon hacker ? Il y a deux choses principales que vous pouvez faire : devenir très bon en programmation et apprendre beaucoup de choses sur des problèmes spécifiques et intéressants. Ces deux choses s'avèrent équivalentes, car chacune vous pousse à faire l'autre.
La meilleure façon de devenir bon en programmation est de travailler (a) beaucoup (b) sur des problèmes difficiles. Et la meilleure façon de vous forcer à résoudre des problèmes difficiles est de travailler sur un projet très engageant.
Il y a fort à parier que ce projet ne sera pas un devoir de classe. Mon ami Robert a beaucoup appris en écrivant des logiciels de réseau quand il était étudiant. L'un de ses projets consistait à connecter Harvard à l'Arpanet ; c'était l'un des nœuds d'origine, mais en 1984, la connexion était coupée. [1] Non seulement ce travail n'était pas destiné à un cours, mais comme il y consacrait tout son temps et négligeait ses études, il fut renvoyé de l'école pendant un an. [2] Tout s'est arrangé à la fin, et il est maintenant professeur au MIT. Mais vous serez probablement plus heureux si vous n'allez pas jusqu'à cet extrême ; cela lui a causé beaucoup d'inquiétudes à l'époque.
Une autre façon de devenir bon en programmation est de trouver d'autres personnes qui le sont et d'apprendre ce qu'elles savent. Les programmeurs ont tendance à se regrouper en tribus en fonction du type de travail qu'ils font et des outils qu'ils utilisent, et certaines tribus sont plus intelligentes que d'autres. Regardez autour de vous et voyez sur quoi les gens intelligents semblent travailler ; il y a généralement une raison.
Certaines des personnes les plus intelligentes autour de vous sont des professeurs. Une façon de trouver un travail intéressant est donc de se porter volontaire comme assistant de recherche. Les professeurs sont particulièrement intéressés par des personnes capables de résoudre des problèmes fastidieux de type administration de système, ce qui constitue un moyen de mettre un pied dans la porte. Ce qu'ils craignent, ce sont les faux-culs et les rédacteurs de CV. Il est trop courant qu'un assistant se traduise par une augmentation nette du travail. Vous devez donc faire comprendre que vous vous engagez dans une diminution nette.
Ne vous laissez pas décourager s'ils vous disent non. Le rejet est presque toujours moins personnel que ce que la personne rejetée imagine. Passez simplement à autre chose. (Cela s'applique également aux rencontres amoureuses.)
Attention, car même si la plupart des professeurs sont intelligents, tous ne travaillent pas sur des sujets intéressants. Les professeurs doivent publier des résultats novateurs pour faire avancer leur carrière, mais la concurrence est plus forte dans les domaines de recherche plus intéressants. Les professeurs les moins ambitieux publient donc une série d'articles dont les conclusions sont novatrices parce que personne d'autre ne s'en soucie. Il vaut mieux les éviter.
Je n'ai jamais travaillé comme assistante de recherche, je me sens donc un peu malhonnête de recommander cette voie. J'ai appris à programmer en écrivant moi-même des trucs, notamment en essayant de faire de la rétro-ingénierie sur SHRDLU de Winograd. J'étais aussi obsédée par ce programme qu'une mère avec son nouveau-né.
Quels que soient les inconvénients de travailler seul, l'avantage est que le projet est entièrement le vôtre. Vous n'avez jamais à faire de compromis ni à demander la permission à qui que ce soit, et si vous avez une nouvelle idée, vous pouvez simplement vous asseoir et commencer à la mettre en œuvre.
Dans vos propres projets, vous n'avez pas à vous soucier de la nouveauté (comme le font les professeurs) ou de la rentabilité (comme le font les entreprises). Tout ce qui compte, c'est la difficulté technique du projet, et cela n'a aucun rapport avec la nature de l'application. Les applications « sérieuses » comme les bases de données sont souvent triviales et techniquement ennuyeuses (si vous souffrez d'insomnie, essayez de lire la littérature technique sur les bases de données) tandis que les applications « frivoles » comme les jeux sont souvent très sophistiquées. Je suis sûr qu'il existe des sociétés de jeux qui travaillent sur des produits avec plus de contenu intellectuel que la recherche effectuée dans les neuf dixièmes les plus bas des départements informatiques des universités.
Si j'étais à l'université aujourd'hui, je travaillerais probablement sur le graphisme : un jeu en réseau, par exemple, ou un outil d'animation 3D. Quand j'étais étudiant, il n'y avait pas assez de cycles pour rendre le graphisme intéressant, mais il est difficile d'imaginer quelque chose de plus amusant sur lequel travailler aujourd'hui.
Mathématiques
Quand j'étais à l'université, beaucoup de professeurs croyaient (ou du moins souhaitaient) que l'informatique soit une branche des mathématiques. Cette idée était particulièrement répandue à Harvard, où il n'y avait même pas de spécialisation en informatique jusqu'aux années 1980 ; jusque-là, il fallait se spécialiser en mathématiques appliquées. Mais c'était presque aussi mauvais à Cornell. Quand j'ai dit au redoutable professeur Conway que je m'intéressais à l'IA (un sujet brûlant à l'époque), il m'a dit que je devrais me spécialiser en mathématiques. Je ne sais toujours pas s'il pensait que l'IA nécessitait des mathématiques, ou s'il pensait que l'IA était une absurdité et que se spécialiser dans quelque chose de rigoureux me guérirait de ces ambitions stupides.
En fait, la quantité de mathématiques dont vous avez besoin en tant que hacker est bien inférieure à ce que la plupart des départements universitaires aiment admettre. Je ne pense pas que vous ayez besoin de beaucoup plus que des mathématiques du lycée plus quelques concepts de la théorie du calcul. (Vous devez savoir ce qu'est un algorithme n^2 si vous voulez éviter d'en écrire.) À moins que vous n'ayez l'intention d'écrire des applications mathématiques, bien sûr. La robotique, par exemple, est entièrement mathématique.
Mais même si vous n'avez pas besoin de mathématiques pour la plupart des types de piratage informatique, au sens où vous ne connaissez pas 1001 astuces pour différencier les formules, les mathématiques valent vraiment la peine d'être étudiées pour elles-mêmes. C'est une source précieuse de métaphores pour presque tout type de travail. [3] J'aurais aimé étudier davantage les mathématiques à l'université pour cette raison.
Comme beaucoup de gens, j'ai été victime d'abus mathématiques dans mon enfance. J'ai appris à considérer les mathématiques comme une collection de formules qui n'étaient ni belles ni liées à ma vie (malgré mes tentatives de les traduire en « problèmes »), mais qu'il fallait mémoriser pour réussir aux examens.
L'une des choses les plus précieuses que vous pourriez faire à l'université serait d'apprendre ce que sont vraiment les mathématiques. Cela ne sera peut-être pas facile, car beaucoup de bons mathématiciens sont de mauvais professeurs. Et s'il existe de nombreux livres populaires sur les mathématiques, peu semblent bons. Les meilleurs auxquels je puisse penser sont ceux de WW Sawyer. Et bien sûr Euclide. [4]
Tout
Thomas Huxley a dit : « Essayez d'apprendre quelque chose sur tout et tout sur quelque chose. » La plupart des universités visent cet idéal.
Mais qu'est-ce que tout cela signifie ? Pour moi, cela signifie tout ce que les gens apprennent en travaillant honnêtement sur des problèmes difficiles. Tous ces travaux tendent à être liés, dans la mesure où les idées et les techniques d'un domaine peuvent souvent être transplantées avec succès dans d'autres. Même dans d'autres qui semblent assez éloignés. Par exemple, j'écris des essais de la même manière que j'écris des logiciels : je m'assois et je fais une version 1 boiteuse aussi vite que je peux taper, puis je passe plusieurs semaines à la réécrire.
Travailler sur des problèmes difficiles n'est pas suffisant en soi. Les alchimistes médiévaux travaillaient sur un problème difficile, mais leur approche était si bidon qu'il n'y avait pas grand-chose à apprendre de son étude, sauf peut-être sur la capacité des gens à se leurrer eux-mêmes. Malheureusement, le type d'IA que j'essayais d'apprendre à l'université avait le même défaut : un problème très difficile, abordé allègrement avec des techniques désespérément inadéquates. Audacieux ? Plus proche de la fraude.
Les sciences sociales sont également assez bidon, car elles sont très influencées par les modes intellectuelles. Si un physicien rencontrait un collègue d'il y a 100 ans, il pourrait lui apprendre de nouvelles choses ; si un psychologue rencontrait un collègue d'il y a 100 ans, ils se lanceraient dans une dispute idéologique. Oui, bien sûr, vous apprendrez quelque chose en suivant un cours de psychologie. Le fait est que vous en apprendrez davantage en suivant un cours dans un autre département.
Les matières qui valent la peine d'être suivies sont, à mon avis, les mathématiques, les sciences exactes, l'ingénierie, l'histoire (notamment l'histoire économique et sociale et l'histoire des sciences), l'architecture et les lettres classiques. Un cours d'histoire de l'art peut être utile. La littérature moderne est importante, mais la seule façon de l'apprendre est de la lire. Je n'en sais pas assez sur la musique pour pouvoir me prononcer.
Vous pouvez faire l’impasse sur les sciences sociales, la philosophie et les divers départements créés récemment en réponse aux pressions politiques. Beaucoup de ces disciplines traitent de problèmes importants, certes. Mais la manière dont elles en parlent est inutile. Par exemple, la philosophie parle, entre autres, de nos obligations les uns envers les autres ; mais vous pouvez en apprendre davantage sur ce sujet auprès d’une grand-mère sage ou d’EB White que d’un philosophe universitaire.
Je parle ici d'expérience. J'aurais probablement dû être offensé quand les gens se sont moqués de Clinton pour avoir dit : « Cela dépend de la signification du mot "est". » J'ai suivi environ cinq cours à l'université sur la signification du mot "est".
Une autre façon de déterminer quels domaines méritent d'être étudiés est de créer un graphique d'abandon. Par exemple, je connais beaucoup de gens qui sont passés des mathématiques à l'informatique parce qu'ils trouvaient les mathématiques trop difficiles, et personne n'a fait le contraire. Les gens ne font pas des choses difficiles gratuitement ; personne ne travaillera sur un problème plus difficile à moins qu'il ne soit proportionnellement (ou au moins log(n)) plus gratifiant. Il est donc probable que les mathématiques valent plus la peine d'être étudiées que l'informatique. En faisant des comparaisons similaires, vous pouvez créer un graphique de tous les départements d'une université. En bas, vous trouverez les sujets ayant le moins de contenu intellectuel.
Si vous utilisez cette méthode, vous obtiendrez à peu près la même réponse que celle que je viens de donner.
Les cours de langue sont une anomalie. Je pense qu'il vaut mieux les considérer comme des activités extrascolaires, comme des cours de poterie. Ils seraient bien plus utiles s'ils étaient combinés avec un séjour dans un pays où la langue est parlée. Sur un coup de tête, j'ai étudié l'arabe en première année. C'était beaucoup de travail, et les seuls bénéfices durables étaient une capacité étrange à identifier les racines sémitiques et quelques idées sur la façon dont les gens reconnaissent les mots.
Les cours d'art en studio et d'écriture créative sont des jokers. En général, on n'apprend pas grand-chose : on travaille (ou on ne travaille pas) sur ce que l'on veut, puis on reste assis à offrir des « critiques » des créations des uns et des autres sous la supervision vague du professeur. Mais l'écriture et l'art sont tous deux des problèmes très difficiles sur lesquels (certaines) personnes travaillent honnêtement, donc ils valent la peine d'être résolus, surtout si vous pouvez trouver un bon professeur.
Emplois
Bien sûr, les étudiants doivent penser à autre chose qu'à l'apprentissage. Il y a aussi deux problèmes pratiques à prendre en compte : l'emploi et les études supérieures.
En théorie, une éducation libérale n’est pas censée fournir une formation professionnelle. Mais tout le monde sait que c’est un mensonge. Les hackers de toutes les universités acquièrent des compétences pratiques, et ce n’est pas par hasard.
Ce que vous devez apprendre pour obtenir un emploi dépend du type d'emploi que vous souhaitez. Si vous voulez travailler dans une grande entreprise, apprenez à pirater Blub sous Windows. Si vous voulez travailler dans une petite entreprise ou un laboratoire de recherche, vous ferez mieux d'apprendre Ruby sous Linux. Et si vous voulez créer votre propre entreprise, ce qui sera de plus en plus courant, je pense, maîtrisez les outils les plus puissants que vous pourrez trouver, car vous allez vous lancer dans une course contre vos concurrents, et ils seront votre cheval de bataille.
Il n'y a pas de corrélation directe entre les compétences que vous devriez acquérir à l'université et celles que vous utiliserez dans un emploi. Vous devriez viser un niveau légèrement plus élevé à l'université.
Lors d'un entraînement, un joueur de football peut soulever 136 kg au développé couché, même s'il n'a jamais à exercer une force aussi importante au cours d'un match. De même, si vos professeurs essaient de vous faire apprendre des choses plus avancées que celles dont vous aurez besoin dans votre travail, ce n'est peut-être pas seulement parce qu'ils sont des universitaires, détachés du monde réel. Ils essaient peut-être de vous faire soulever des poids avec votre cerveau.
Les programmes que vous écrivez en classe diffèrent de ceux que vous écrivez dans le monde réel sur trois points essentiels : ils sont petits, vous devez partir de zéro et le problème est généralement artificiel et prédéterminé. Dans le monde réel, les programmes sont plus volumineux, ont tendance à impliquer du code existant et nécessitent souvent que vous compreniez quel est le problème avant de pouvoir le résoudre.
Vous n'avez pas besoin d'attendre de quitter (ou même d'entrer) l'université pour acquérir ces compétences. Si vous souhaitez apprendre à gérer du code existant, par exemple, vous pouvez contribuer à des projets open source. Le type d'employeur pour lequel vous souhaitez travailler sera aussi impressionné par cela que par de bonnes notes aux devoirs.
Dans les projets open source existants, vous n'avez pas beaucoup de pratique sur la troisième compétence, qui consiste à décider quels problèmes résoudre. Mais rien ne vous empêche de lancer vos propres projets. Et les bons employeurs seront encore plus impressionnés par cela.
Quel genre de problème devriez-vous essayer de résoudre ? Une façon de répondre à cette question est de vous demander ce dont vous avez besoin en tant qu'utilisateur. Par exemple, je suis tombé sur un bon algorithme de filtrage du spam parce que je voulais arrêter de recevoir du spam. Maintenant, ce que j'aimerais avoir, c'est un lecteur de courrier électronique qui empêcherait ma boîte de réception de se remplir. J'ai tendance à utiliser ma boîte de réception comme une liste de tâches à faire. Mais c'est comme utiliser un tournevis pour ouvrir des bouteilles ; ce que l'on veut vraiment, c'est un décapsuleur.
École supérieure
Et les études supérieures ? Faut-il y aller ? Et comment entrer dans une bonne école ?
En principe, les études supérieures sont une formation professionnelle à la recherche, et vous ne devriez pas y aller à moins de vouloir faire de la recherche votre métier. Et pourtant, la moitié des personnes qui obtiennent un doctorat en informatique ne se lancent pas dans la recherche. Je ne suis pas allé à l'école supérieure pour devenir professeur. J'y suis allé parce que je voulais en apprendre davantage.
Donc si vous vous intéressez principalement au piratage informatique et que vous faites des études supérieures, vous rencontrerez beaucoup d'autres personnes qui sont également hors de leur élément. Et si la moitié des gens autour de vous sont hors de leur élément comme vous, êtes-vous vraiment hors de votre élément ?
Il y a un problème fondamental dans l'informatique, et il se manifeste dans des situations comme celle-ci. Personne ne sait vraiment ce que l'on entend par « recherche ». Une grande partie de la recherche est du piratage informatique qui doit être intégré dans un article universitaire pour donner lieu à une publication supplémentaire.
Il est donc un peu trompeur de se demander si vous vous sentirez à l'aise dans vos études supérieures, car très peu de gens se sentent à l'aise dans l'informatique. Le domaine dans son ensemble est mal à l'aise dans sa propre peau. Le fait que vous soyez principalement intéressé par le hacking ne devrait donc pas vous dissuader de poursuivre des études supérieures. Sachez simplement que vous devrez faire beaucoup de choses que vous n'aimez pas.
La première étape sera la rédaction de votre thèse. Presque tout le monde déteste sa thèse une fois qu'elle est terminée. Le processus a tendance à produire un résultat désagréable, comme un gâteau fait de farine de blé entier et cuit pendant douze heures. Peu de thèses sont lues avec plaisir, surtout par leurs auteurs.
Mais des milliers d'autres avant vous ont souffert en écrivant une thèse. Et à part cela, les études supérieures sont presque un paradis. Beaucoup de gens s'en souviennent comme de la période la plus heureuse de leur vie. Et presque tous les autres, moi y compris, s'en souviennent comme d'une période qui aurait eu lieu s'ils n'avaient pas eu à rédiger une thèse. [5]
Le danger des études supérieures est que vous ne voyez pas la partie effrayante dès le départ. Les programmes de doctorat commencent comme une deuxième partie d'université, avec plusieurs années de cours. Donc, au moment où vous faites face à l'horreur de rédiger une thèse, vous avez déjà plusieurs années d'études. Si vous abandonnez maintenant, vous aurez abandonné vos études supérieures et vous n'aimerez probablement pas cette idée. Lorsque Robert s'est fait virer de ses études supérieures pour avoir écrit le ver Internet de 1988, je l'enviais énormément d'avoir trouvé une issue sans le stigmate de l'échec.
Dans l'ensemble, les études supérieures sont probablement meilleures que la plupart des autres alternatives. Vous rencontrez beaucoup de gens intelligents et votre morne procrastination sera au moins un lien commun puissant. Et bien sûr, vous avez un doctorat à la fin. J'avais oublié ça. Je suppose que ça vaut quelque chose.
Le plus grand avantage d'un doctorat (outre le fait qu'il soit la carte de visite du monde universitaire, bien sûr) est peut-être qu'il vous donne une certaine confiance de base. Par exemple, les thermostats Honeywell de ma maison ont l'interface utilisateur la plus atroce. Ma mère, qui possède le même modèle, a passé une journée à lire consciencieusement le manuel d'utilisation pour apprendre à utiliser le sien. Elle a supposé que le problème venait d'elle. Mais je peux me dire : « Si quelqu'un qui a un doctorat en informatique ne peut pas comprendre ce thermostat, il doit être mal conçu. »
Si vous souhaitez toujours poursuivre vos études supérieures après cette recommandation équivoque, je peux vous donner de bons conseils sur la manière d'y parvenir. Beaucoup de mes amis sont désormais professeurs d'informatique, donc je connais bien les procédures d'admission. C'est très différent de l'université. Dans la plupart des universités, ce sont les responsables des admissions qui décident qui est admis. Pour les programmes de doctorat, ce sont les professeurs qui le font. Et ils essaient de le faire bien, car les personnes qu'ils admettent vont travailler pour eux.
Apparemment, seules les recommandations comptent vraiment dans les meilleures écoles. Les tests standardisés ne comptent pour rien, et les notes pour peu. La rédaction est surtout une occasion de se disqualifier en disant quelque chose de stupide. La seule chose à laquelle les professeurs font confiance, ce sont les recommandations, de préférence de personnes qu'ils connaissent. [6]
Donc, si vous voulez intégrer un programme de doctorat, la clé est d'impressionner vos professeurs. Et mes amis professeurs savent ce qui les impressionne : pas seulement essayer de les impressionner. Ils ne sont pas impressionnés par les étudiants qui ont de bonnes notes ou qui veulent être leurs assistants de recherche pour pouvoir entrer en école supérieure. Ils sont impressionnés par les étudiants qui ont de bonnes notes et qui veulent être leurs assistants de recherche parce qu'ils sont vraiment intéressés par le sujet.
La meilleure chose que vous puissiez faire à l'université, que vous souhaitiez intégrer une école supérieure ou simplement devenir bon en piratage informatique, c'est de découvrir ce que vous aimez vraiment. Il est difficile de duper les professeurs pour qu'ils vous laissent entrer dans une école supérieure, et impossible de duper les problèmes pour qu'ils vous laissent les résoudre. C'est à l'université que faire semblant cesse de fonctionner. À partir de là, à moins que vous ne vouliez travailler pour une grande entreprise, ce qui revient à retourner au lycée, la seule façon d'avancer est de faire ce que vous aimez .
Remarques
[1] Personne ne semble s’en être soucié, ce qui montre à quel point l’Arpanet (qui est devenu Internet) était sans importance jusqu’en 1984.
[2] C'est pourquoi, lorsque je suis devenu employeur, je ne me souciais pas des moyennes. En fait, nous avons activement recherché des personnes qui avaient échoué à l'école. Un jour, nous avons placardé des affiches un peu partout à Harvard sur lesquelles on pouvait lire : « Vous venez de vous faire virer pour avoir eu de mauvais résultats en cours parce que vous avez passé tout votre temps à travailler sur un projet personnel ? Venez travailler pour nous ! » Nous avons réussi à trouver un jeune qui avait été viré, et c'était un excellent hacker.
Quand Harvard renvoie les étudiants de premier cycle pendant un an, ils doivent trouver un emploi. L'idée est de leur montrer à quel point le monde réel est horrible, afin qu'ils comprennent la chance qu'ils ont d'être à l'université. Ce plan s'est retourné contre le gars qui est venu travailler pour nous, parce qu'il s'est plus amusé qu'à l'école et a gagné plus cette année-là grâce aux options sur actions que n'importe lequel de ses professeurs en salaire. Alors, au lieu de rentrer en se repentant à la fin de l'année, il a pris une autre année sabbatique et est parti en Europe. Il a finalement obtenu son diplôme à environ 26 ans.
[3] Eric Raymond dit que les meilleures métaphores pour les hackers se trouvent dans la théorie des ensembles, la combinatoire et la théorie des graphes.
Trevor Blackwell vous rappelle de suivre des cours de mathématiques destinés aux étudiants en mathématiques. « Les cours de mathématiques pour ingénieurs étaient vraiment nuls. En fait, tous les cours de mathématiques pour ingénieurs sont nuls, y compris les mathématiques, le droit, l'écriture et la conception visuelle. »
[4] Autres livres fortement recommandés : What is Mathematics? , de Courant et Robbins ; Geometry and the Imagination de Hilbert et Cohn-Vossen. Et pour ceux qui s'intéressent au graphisme, Euclid de Byrne .
[5] Si vous voulez avoir une vie parfaite, il vous faudrait faire des études supérieures, rédiger secrètement votre thèse au cours de la première ou de la deuxième année, puis vous amuser pendant les trois années suivantes, en rédigeant un chapitre à la fois. Cette perspective mettra l'eau à la bouche des étudiants diplômés, mais je ne connais personne qui ait eu la discipline nécessaire pour y parvenir.
[6] Un ami professeur dit que 15 à 20 % des étudiants diplômés qu'ils admettent chaque année sont des « outsiders ». Mais ce qu'il entend par outsiders, ce sont des gens dont les candidatures sont parfaites à tous points de vue, sauf que personne au sein du comité d'admission ne connaît les professeurs qui ont rédigé les recommandations.
Donc, si vous voulez intégrer une école supérieure en sciences, vous devez aller dans un établissement où il y a de vrais professeurs chercheurs. Sinon, vous passerez pour un pari risqué aux yeux des comités d'admission, peu importe votre niveau.
Ce qui implique une conséquence surprenante mais apparemment inévitable : les petites universités d'arts libéraux sont condamnées. La plupart des lycéens intelligents envisagent au moins de s'orienter vers les sciences, même s'ils choisissent finalement de ne pas le faire. Pourquoi aller dans une université qui limite leurs options ?
Merci à Trevor Blackwell, Alex Lewin, Jessica Livingston, Robert Morris, Eric Raymond et plusieurs professeurs d'informatique anonymes pour avoir lu les brouillons de cet ouvrage, ainsi qu'aux étudiants dont les questions ont été à l'origine de ce texte.