Loading...

DIPLÔME DE PREMIER CYCLE

Original

Mars 2005

(Certaines parties de cet essai ont commencé comme des réponses à des étudiants de premier cycle qui m'ont écrit avec des questions.)

J'ai récemment reçu plusieurs e-mails d'étudiants de premier cycle en informatique me demandant quoi faire à l'université. Je ne suis peut-être pas la meilleure source de conseils, car j'étais un étudiant en 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, en tout cas.

Hacking

Que devriez-vous 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 sur des problèmes spécifiques et intéressants. Il s'avère que ces deux choses sont équivalentes, car chacune vous pousse à faire l'autre.

La façon d'être bon en programmation est de travailler (a) beaucoup (b) sur des problèmes difficiles. Et la façon de vous faire travailler sur des problèmes difficiles est de travailler sur un projet très captivant.

Il est probable que ce projet ne sera pas un devoir de classe. Mon ami Robert a beaucoup appris en écrivant des logiciels réseau quand il était étudiant de premier cycle. L'un de ses projets était de connecter Harvard à l'Arpanet ; c'était l'un des nœuds d'origine, mais en 1984 la connexion était morte. [1] Non seulement ce travail n'était pas pour un cours, mais parce qu'il y a consacré tout son temps et a négligé ses études, il a été renvoyé de l'école pendant un an. [2] Tout s'est finalement bien passé, et maintenant il est professeur au MIT. Mais vous serez probablement plus heureux si vous n'allez pas à cette extrémité ; cela lui a causé beaucoup d'inquiétude à l'époque.

Une autre façon d'être bon en programmation est de trouver d'autres personnes qui sont bonnes dans ce domaine et d'apprendre ce qu'elles savent. Les programmeurs ont tendance à se regrouper en tribus en fonction du type de travail qu'ils effectuent et des outils qu'ils utilisent, et certaines tribus sont plus intelligentes que d'autres. Regardez autour de vous et voyez sur quoi travaillent les gens intelligents ; il y a généralement une raison.

Certaines des personnes les plus intelligentes autour de vous sont les professeurs. Donc une façon de trouver un travail intéressant est de vous porter volontaire comme assistant de recherche. Les professeurs s'intéressent particulièrement aux personnes qui peuvent résoudre pour eux des problèmes de type administration système, ce qui est donc un moyen d'avoir un pied dans la porte. Ce qu'ils craignent, ce sont les personnes fantaisistes et celles qui remplissent leur CV. Il est trop courant qu'un assistant se traduise par une augmentation nette du travail. Donc vous devez faire en sorte qu'il soit clair que vous représenterez une diminution nette.

Ne vous découragez pas s'ils disent non. Le rejet est presque toujours moins personnel que ne l'imagine la personne rejetée. Passez simplement au suivant. (Cela s'applique aussi aux rencontres amoureuses.)

Méfiez-vous, car bien que la plupart des professeurs soient intelligents, ils ne travaillent pas tous sur des sujets intéressants. Les professeurs doivent publier des résultats nouveaux pour faire avancer leur carrière, mais il y a plus de concurrence dans les domaines de recherche les plus intéressants. Donc ce que font les professeurs les moins ambitieux, c'est produire une série d'articles dont les conclusions sont nouvelles parce que personne d'autre ne s'intéresse à eux. Vous ferez mieux d'éviter ceux-là.

Je n'ai jamais travaillé comme assistant de recherche, donc je me sens un peu malhonnête en recommandant cette voie. J'ai appris à programmer en écrivant des choses par moi-même, en essayant notamment de faire l'ingénierie inverse du programme SHRDLU de Winograd. J'étais aussi obsédé par ce programme qu'une mère avec un nouveau-né.

Quels que soient les inconvénients de travailler par soi-même, l'avantage est que le projet vous appartient entièrement. Vous n'avez jamais à faire de compromis ou à 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 les professeurs) ou de la rentabilité (comme les entreprises). Tout ce qui compte est la difficulté technique du projet, et cela n'a aucune corrélation avec la nature de l'application. Les applications "sérieuses" comme les bases de données sont souvent techniquement triviales et ennuyeuses (si vous souffrez d'insomnie, essayez de lire la littérature technique sur les bases de données), tandis que les applications "futiles" comme les jeux sont souvent très sophistiquées. Je suis sûr qu'il y a des entreprises de jeux qui travaillent sur des produits avec un contenu intellectuel plus important que la recherche dans les neuf dixièmes inférieurs des départements d'informatique universitaires.

Si j'étais à l'université maintenant, je travaillerais probablement sur la graphique : un jeu en réseau, par exemple, ou un outil pour l'animation 3D. Quand j'étais étudiant de premier cycle, il n'y avait pas assez de cycles pour que la graphique soit intéressante, mais c'est dur d'imaginer quelque chose de plus amusant à travailler maintenant.

Mathématiques

Quand j'étais à l'université, beaucoup de professeurs croyaient (ou du moins souhaitaient) que l'informatique était une branche des mathématiques. Cette idée était la plus forte à Harvard, où il n'y avait même pas de majeure en informatique jusqu'aux années 1980 ; jusqu'à cette époque, on devait être majeur en mathématiques appliquées. Mais c'était presque aussi mauvais à Cornell. Quand j'ai dit au redoutable professeur Conway que j'étais intéressé par l'IA (un sujet à la mode à l'époque), il m'a dit que je devrais être majeur en mathématiques. Je ne suis toujours pas sûr s'il pensait que l'IA nécessitait des mathématiques, ou s'il pensait que l'IA était une absurdité et que d'être majeur 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 beaucoup moins importante que ce que la plupart des départements universitaires aiment à admettre. Je ne pense pas que vous ayez besoin de beaucoup plus que les mathématiques du secondaire plus quelques concepts de la théorie du calcul. (Vous devez savoir ce qu'est un algorithme en n^2 si vous voulez éviter d'en écrire.) À moins que vous ne prévoyiez d'écrire des applications mathématiques, bien sûr. La robotique, par exemple, est toute en mathématiques.

Mais bien que vous n'ayez pas littéralement besoin de mathématiques pour la plupart des types de hacking, dans le sens de connaître 1001 astuces pour différencier des formules, les mathématiques valent vraiment la peine d'être étudiées pour leur propre mérite. C'est une source précieuse de métaphores pour presque n'importe quel type de travail.[3] J'aurais aimé avoir étudié plus de mathématiques à l'université pour cette raison.

Comme beaucoup de gens, j'ai été maltraité mathématiquement dans mon enfance. J'ai appris à considérer les mathématiques comme une collection de formules qui n'étaient ni belles ni en rapport avec ma vie (malgré les tentatives de les traduire en "problèmes de mots"), mais qui devaient être mémorisées pour bien réussir aux examens.

Voici la traduction en français :

L'une des choses les plus précieuses que vous pourriez faire à l'université serait d'apprendre ce que les mathématiques sont vraiment. Cela peut ne pas être facile, car de nombreux bons mathématiciens sont de mauvais enseignants. Et bien qu'il y ait de nombreux livres populaires sur les mathématiques, peu semblent bons. Les meilleurs que je puisse penser sont ceux de W. W. Sawyer. Et bien sûr Euclide. [1]

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" ? Pour moi, cela signifie tout ce que les gens apprennent en travaillant honnêtement sur des problèmes difficiles. Tout ce travail tend à être lié, 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 ceux qui semblent assez éloignés. Par exemple, j'écris des essais de la même manière que j'écris des logiciels : je m'assieds et je produis une version 1 médiocre aussi vite que je peux taper, puis je passe plusieurs semaines à la réécrire.

Travailler sur des problèmes difficiles n'est pas, en soi, suffisant. Les alchimistes médiévaux travaillaient sur un problème difficile, mais leur approche était tellement bidon qu'il y avait peu de choses à apprendre en étudiant leur travail, si ce n'est peut-être sur la capacité des gens à se tromper 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é 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 tellement influencées par les modes intellectuelles. Si un physicien rencontrait un collègue d'il y a 100 ans, il pourrait lui enseigner de nouvelles choses ; si un psychologue rencontrait un collègue d'il y a 100 ans, ils se lanceraient simplement dans un débat idéologique. Oui, bien sûr, vous apprendrez quelque chose en suivant un cours de psychologie. Le point est que vous apprendrez davantage en suivant un cours dans un autre département.

Les départements qui valent la peine, à mon avis, sont les mathématiques, les sciences dures, l'ingénierie, l'histoire (en particulier l'histoire économique et sociale, et l'histoire des sciences), l'architecture et les classiques. Un cours d'introduction à l'histoire de l'art peut être intéressant. La littérature moderne est importante, mais la meilleure façon de l'apprendre est tout simplement de lire. Je n'en sais pas assez sur la musique pour me prononcer.

Vous pouvez sauter les sciences sociales, la philosophie et les divers départements créés récemment en réponse à des pressions politiques. Beaucoup de ces domaines parlent de problèmes importants, certainement. Mais la façon dont ils en parlent est inutile. Par exemple, la philosophie parle, entre autres choses, de nos obligations envers les autres ; mais vous pouvez en apprendre davantage auprès d'une grand-mère avisée ou d'E. B. 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 ce que le sens du mot 'est' est". J'ai suivi environ cinq cours à l'université sur le sens du mot "est".

Une autre façon de déterminer quels domaines valent la peine d'être étudiés est de créer le graphe des abandons. Par exemple, je connais de nombreuses personnes qui sont passées des mathématiques à l'informatique parce qu'elles ont trouvé les mathématiques trop difficiles, et personne qui a fait l'inverse. Les gens ne font pas de 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. Donc probablement que les mathématiques valent mieux la peine d'être étudiées que l'informatique. En faisant des comparaisons similaires, vous pouvez faire un graphe de tous les départements d'une université. En bas, vous trouverez les sujets avec 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 langues sont une anomalie. Je pense qu'ils sont mieux considérés comme des activités extrascolaires, comme des cours de poterie. Ils seraient beaucoup plus utiles s'ils étaient combinés avec un séjour dans un pays où la langue est parlée. Par caprice, j'ai étudié l'arabe en première année. C'était beaucoup de travail, et les seuls avantages durables ont été une étrange capacité à identifier les racines sémitiques et quelques aperçus sur la façon dont les gens reconnaissent les mots.

Les cours d'arts plastiques et d'écriture créative sont des jokers. Généralement, on ne vous enseigne pas grand-chose : vous travaillez (ou ne travaillez pas) sur ce que vous voulez, puis vous vous asseyez pour offrir des "critiques" des créations les uns des autres sous la supervision vague de l'enseignant. 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 pratiqués, surtout si vous pouvez trouver un bon professeur.

Emplois

Bien sûr, les étudiants doivent penser à plus que l'apprentissage. Il y a aussi deux problèmes pratiques à prendre en compte : les emplois 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 peu un mensonge. Les hackers de chaque université apprennent des compétences pratiques, et ce n'est pas par accident.

Ce que vous devriez apprendre pour trouver un emploi dépend du type d'emploi que vous voulez. Si vous voulez travailler dans une grande entreprise, apprenez à pirater le Blub sous Windows. Si vous voulez travailler dans une petite entreprise cool ou dans 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, maîtrisez les outils les plus puissants que vous pouvez trouver, car vous serez dans une course contre vos concurrents, et ils seront votre cheval.

Il n'y a pas de corrélation directe entre les compétences que vous devriez apprendre à l'université et celles que vous utiliserez dans un emploi. Vous devriez viser légèrement plus haut à l'université.

Dans les entraînements, un joueur de football peut faire des développés couchés avec 300 livres, même s'il n'aura peut-être jamais à exercer une force aussi importante dans le cadre d'un match. De même, si vos professeurs essaient de vous faire apprendre des choses plus avancées que ce dont vous aurez besoin dans un emploi, ce n'est peut-être pas seulement parce qu'ils sont des universitaires, détachés du monde réel. Ils peuvent essayer de vous faire soulever des poids avec votre cerveau.

Les programmes que vous écrivez dans les cours diffèrent de trois manières cruciales des programmes que vous écrirez dans le monde réel : ils sont petits ; vous pouvez 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 gros, ont tendance à impliquer du code existant et nécessitent souvent que vous déterminiez 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 dans) l'université pour apprendre ces compétences. Si vous voulez apprendre à gérer le code existant, par exemple, vous pouvez contribuer à des projets open source. Le type d'employeur pour lequel vous voulez travailler sera aussi impressionné par cela que par de bonnes notes sur les devoirs de classe.

Dans les projets open source existants, vous n'obtenez pas beaucoup de pratique pour la troisième compétence, décider quels problèmes résoudre. Mais rien ne vous empêche de démarrer de nouveaux projets par vous-même. Et les bons employeurs seront encore plus impressionnés par cela.

Quel type 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, j'ai découvert un bon algorithme pour le filtrage anti-spam parce que je voulais arrêter de recevoir du spam. Maintenant, ce que je souhaiterais avoir, c'est un lecteur de courrier qui empêche d'une manière ou d'une autre 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. Mais c'est comme utiliser un tournevis pour ouvrir des bouteilles ; ce que l'on veut vraiment, c'est un décapsuleur.

Études supérieures

Et les études supérieures ? Devriez-vous y aller ? Et comment entrer dans une bonne université ?

En principe, les études supérieures sont une formation professionnelle à la recherche, et vous ne devriez y aller que si vous voulez faire de la recherche comme carrière. Et pourtant, la moitié des gens qui obtiennent un doctorat en informatique ne se lancent pas dans la recherche. Je ne suis pas allé aux études supérieures pour devenir professeur. J'y suis allé parce que je voulais en apprendre davantage.

Donc, si vous vous intéressez principalement au hacking et que vous allez aux études supérieures, vous trouverez beaucoup d'autres personnes qui sont similairement hors de leur élément. Et si la moitié des gens autour de vous sont hors de leur élément de la même manière que vous, êtes-vous vraiment hors de votre élément ?

Il y a un problème fondamental dans "l'informatique", et il ressort dans des situations comme celle-ci. Personne n'est sûr de ce que la "recherche" est censée être. Une grande partie de la recherche est du hacking qui a dû être forcé dans la forme d'un article universitaire pour produire un quantum de publication de plus.

Donc, c'est un peu trompeur de se demander si vous vous sentirez à l'aise dans les études supérieures, car très peu de gens sont tout à fait à l'aise en informatique. Tout le domaine est mal à l'aise dans sa propre peau. Donc, le fait que vous vous intéressiez principalement au hacking ne devrait pas vous dissuader d'aller aux études supérieures. Soyez juste averti que vous devrez faire beaucoup de choses que vous n'aimez pas.

Numéro un sera votre thèse. Presque tout le monde déteste sa thèse quand ils l'ont terminée. Le processus a tendance à produire un résultat désagréable, comme un gâteau fait avec de la farine de blé entier et cuit pendant douze heures. Peu de thèses sont lues avec plaisir, surtout par leurs auteurs.

Mais des milliers de personnes avant vous ont souffert en écrivant une thèse. Et à part ça, 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, y compris moi, s'en souviennent comme d'une période qui l'aurait été, s'ils n'avaient pas eu à écrire une thèse. [5]

Le danger avec les études supérieures, c'est qu'on ne voit pas la partie effrayante à l'avance. Les programmes de doctorat commencent comme une suite du collège, avec plusieurs années de cours. Donc, au moment où vous faites face à l'horreur d'écrire une thèse, vous êtes déjà engagé depuis plusieurs années. Si vous abandonnez maintenant, vous serez un décrocheur des études supérieures, et vous n'aimerez probablement pas cette idée. Quand Robert s'est fait virer des études supérieures pour avoir écrit le ver Internet de 1988, je l'ai envié énormément d'avoir trouvé un moyen de s'en sortir sans le stigmate de l'échec.

Dans l'ensemble, les études supérieures sont probablement mieux que la plupart des alternatives. Vous rencontrez beaucoup de gens intelligents, et votre morne procrastination sera au moins un puissant lien commun. Et bien sûr, vous avez un doctorat à la fin. J'ai oublié ça. Je suppose que ça vaut quelque chose.

Le plus grand avantage d'un doctorat (en dehors d'être la carte d'adhésion du monde universitaire, bien sûr) est peut-être qu'il vous donne une certaine confiance de base. Par exemple, les thermostats Honeywell dans ma maison ont l'interface utilisateur la plus atroce. Ma mère, qui a le même modèle, a consciencieusement passé une journée à lire le manuel d'utilisation pour apprendre à s'en servir. Elle a supposé que le problème venait d'elle. Mais je peux me dire "Si quelqu'un avec un doctorat en informatique ne peut pas comprendre ce thermostat, c'est qu'il est vraiment mal conçu".

Si vous voulez toujours aller aux études supérieures après cette recommandation équivoque, je peux vous donner des conseils solides sur la façon d'y entrer. Beaucoup de mes amis sont maintenant professeurs d'informatique, donc j'ai les coulisses des admissions. C'est assez différent du collège. Dans la plupart des collèges, ce sont les responsables des admissions qui décident qui est admis. Pour les programmes de doctorat, ce sont les professeurs. Et ils essaient de le faire bien, car les gens 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. L'essai est surtout une opportunité de se disqualifier en disant quelque chose de stupide. La seule chose que les professeurs font confiance, ce sont les recommandations, de préférence de gens qu'ils connaissent. [6]

Donc, si vous voulez entrer dans un programme de doctorat, la clé est d'impressionner vos professeurs. Et d'après mes amis qui sont professeurs, je sais 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 aux études supérieures. Ils sont impressionnés par les étudiants qui ont de bonnes notes et veulent être leurs assistants de recherche parce qu'ils sont vraiment intéressés par le sujet.

Donc la meilleure chose à faire à l'université, que vous vouliez entrer aux études supérieures ou simplement être bon en hacking, c'est de découvrir ce que vous aimez vraiment. Il est difficile de tromper les professeurs pour vous faire admettre aux études supérieures, et impossible de tromper les problèmes pour vous faire les résoudre. L'université est l'endroit où le fait de faire semblant cesse de fonctionner. À partir de maintenant, à moins que vous ne vouliez travailler pour une grande entreprise, ce qui est comme revenir au lycée, la seule voie à suivre est de faire ce que vous aimez.

Notes

[1] Personne ne semble s'en être offusqué, ce qui montre à quel point l'Arpanet (qui est devenu Internet) était peu important jusqu'en 1984.

[2] C'est pourquoi, quand je suis devenu employeur, je ne me souciais pas des moyennes pondérées. En fait, nous recherchions activement des personnes qui avaient échoué à l'école. Nous avons même affiché des affiches autour de Harvard disant "Vous venez juste de vous faire virer pour avoir mal réussi vos cours parce que vous passiez tout votre temps à travailler sur un projet personnel ? Venez travailler pour nous !" Nous avons réussi à trouver un gamin qui avait été renvoyé, et c'était un excellent hacker.

Quand Harvard renvoie des é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 à quel point ils ont de la chance d'être à l'université. Ce plan a échoué avec le gars qui est venu travailler pour nous, car il s'est amusé plus qu'à l'école et a gagné plus cette année-là avec des options d'achat d'actions que n'importe lequel de ses professeurs avec leur salaire. Donc, au lieu de revenir repentant à la fin de l'année, il a pris une autre année de congé et est allé 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 mathématiciens. "'Les cours de mathématiques pour les ingénieurs' étaient terriblement mauvais. En fait, tout 'x pour les ingénieurs' est mauvais, où x comprend les mathématiques, le droit, l'écriture et la conception visuelle."

[4] Autres livres fortement recommandés : What is Mathematics ?, de Courant et Robbins ; Géométrie et imagination de Hilbert et Cohn-Vossen. Et pour ceux qui s'intéressent à la conception graphique, Byrne's Euclid.

[5] Si vous vouliez avoir la vie parfaite, la chose à faire serait d'aller à la faculté des études supérieures, d'écrire secrètement votre thèse dans la première année ou deux, puis de simplement vous amuser pendant les trois années suivantes, en sortant un chapitre à la fois. Cette perspective fera saliver les étudiants diplômés, mais je ne connais personne qui ait eu la discipline pour y arriver.

[6] Un professeur ami dit que 15 à 20 % des étudiants diplômés qu'ils admettent chaque année sont des "paris risqués". Mais ce qu'il entend par "paris risqués" ce sont des personnes dont les candidatures sont parfaites à tous les égards, sauf que personne dans le comité d'admission ne connaît les professeurs qui ont écrit les recommandations.

Donc, si vous voulez entrer à la faculté des études supérieures dans les sciences, vous devez aller à l'université dans un endroit avec de vrais professeurs de recherche. Sinon, vous semblerez un pari risqué pour les comités d'admission, peu importe à quel point vous êtes bon.

Ce qui implique une conséquence surprenante mais apparemment inévitable : les petites universités libérales sont condamnées. La plupart des bons élèves du secondaire envisagent au moins d'entrer dans 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 anonymes d'informatique d'avoir lu les brouillons de ce texte, et aux étudiants dont les questions l'ont initié.