Est-il préférable d’aller à l’université en informatique pour devenir un programmeur, ou devriez-vous aller pour ce que vous aimez (et est facile) et apprendre la programmation sur votre propre ? Qu’est-ce que les startups qui embauchent pensent des gens qui font cela?Artboard


Je ne'pense pas que le conseil de Dave'soit très bon. Le tl;dr est que, si votre objectif est de devenir le meilleur ingénieur logiciel que vous pouvez être, je pense que vous devriez aller au meilleur programme CS dans lequel vous pouvez entrer et vous permettre. En deuxième position, sautez simplement l'université.

Détails
Commençons par là où je suis d'accord avec Dave.

  1. Il a raison de dire que les diplômes comptent beaucoup moins pour les ingénieurs logiciels que pour à peu près tout autre domaine de connaissances. Si vous pouvez prouver que vous'êtes légitime (réussir les questions d'algorithme et avoir des projets importants/intéressants à montrer), vous pouvez obtenir un emploi assez facilement sans diplôme.
  2. Il a également raison de dire que le simple fait d'obtenir un diplôme de CS ne'fera pas de vous un programmeur de premier ordre. De nombreuses personnes qui ne sont pas d'excellents ingénieurs logiciels ont des diplômes en CS et de nombreux excellents ingénieurs logiciels n'en ont pas.

Pourquoi, malgré ces faits, je pense que cela vaut la peine d'aller à l'université ? Il y a quatre raisons.

  1. Vous n'apprenez pas seulement des cours et des manuels. Avoir des pairs vraiment, vraiment intelligents intéressés par les mêmes domaines que vous est un ordre de grandeur plus important que les cours. Vous pouvez trouver cela dans la bonne startup, mais c'est assez difficile. C'est un pari beaucoup plus solide que vous'trouverez une douzaine de personnes qui se cogneront la tête contre des problèmes avec vous, pirateront avec vous, vous pousseront à explorer de nouveaux espaces et, espérons-le, créeront des entreprises avec vous un jour à l'université.
  2. Vous deviendrez un meilleur programmeur à la bonne école. J'ai dit plus tôt que le simple fait d'obtenir un diplôme de CS ne fera pas de vous un grand ingénieur logiciel... mais cela ne veut pas dire que cela ne peut pas aider. Bien sûr, il existe de nombreux départements où le département CS est essentiellement une ramification du département de mathématiques et où vous n'écrirez pratiquement aucun code intéressant. Mais il existe également de nombreux départements où vous écrirez de gros logiciels qui mettront à l'épreuve votre capacité à concevoir des systèmes informatiques et à y réfléchir. Cela peut inclure des systèmes d'exploitation, des compilateurs, etc., mais aussi de grandes applications web ou des applications mobiles, qui peuvent vous intéresser davantage.
  3. Les trucs "théoriques" comptent, dans un sens très pratique. Vous pouvez apprendre Rails ou SQL en vous amusant tout seul, mais rares sont les hackers qui s'intéressent vraiment aux algorithmes et à l'algèbre linéaire. Cependant, réfléchir à la manière dont les performances de votre système évoluent en fonction de la taille de l'entrée (notation Big-O) et à la manière de reformuler votre problème comme une composition de problèmes bien connus en informatique avec des solutions efficaces et bien connues est le genre de choses que vous faites tous les jours en gérant même la base de code réelle la plus simple. Et ce truc génial que vous voulez essayer avec l'apprentissage automatique ? Oui, je sais que quelqu'un a déjà implémenté tous les algorithmes dans votre langage de prédilection, mais il est pratiquement impossible de comprendre pourquoi vous n'obtenez pas les résultats escomptés sans une solide formation en statistiques et en algèbre linéaire [ou, parfois, même si vous les avez... :)]. Une bonne école vous obligera à couvrir cette matière.
  4. Ne'sous-estimez pas les facteurs psychologiques. Il y a des gens qui sont vraiment assez motivés pour apprendre n'importe quoi par eux-mêmes et pour le faire bien. Ce sont des cas extrêmes. La grande majorité des gens étudieront beaucoup plus efficacement dans le cadre de cours avec des devoirs et des notes. Regarder des vidéos du MIT's OCW ou l'équivalent de Stanford's, ou quoi que ce soit d'autre, lire des manuels, fréquenter des personnes intelligentes dans votre région et participer à des projets open source peut absolument vous permettre d'y arriver. Mais vous devez vraiment savoir que vous'êtes le genre de personne qui peut se lever tous les jours, peut-être aller au travail, et s'asseoir ensuite à une étude autodirigée, autodisciplinée et approfondie d'un domaine.

Si vous regardez les points ci-dessus, et en particulier les trois premiers, il'est clair que l'école dans laquelle vous allez compte vraiment. Il'est important de noter que cela n'a rien à voir avec le nom sur votre diplôme et beaucoup des meilleures écoles won't même sembler impressionnant à quelqu'un en dehors de l'industrie CS. UIUC ? Wisconsin ? Washington ? UT ? Ce sont toutes des écoles d'état avec des programmes de CS dans le top 10. Et si ce que vous aimez faire, c'est écrire du code, certaines de ces écoles sont plus axées là-dessus que d'autres. Le MIT semble être plus axé sur la théorie des sciences informatiques (et Caltech encore plus) que Stanford, Berkeley, UIUC ou CMU, qui ont une excellente réputation en matière de formation pratique. Les écoles publiques sont relativement abordables, les écoles privées peuvent généralement vous offrir une aide financière importante, et vous pouvez rembourser votre dette dans les deux cas si vous êtes économe. Cela n'a pas de sens de se plaindre que ces collèges sont des options pour les élites, parce que si vous'êtes vraiment de classe mondiale assez pour apprendre par vous-même et ensuite rivaliser avec les meilleurs sur le marché du travail, vous devriez avoir une vraie chance d'entrer dans un certain sous-ensemble de ces écoles.


Cependant, si aucune des raisons ci-dessus ne vous oblige à entrer dans un programme CS solide, alors ne'perdez pas votre temps à l'école pour obtenir un diplôme (surtout un diplôme non-CS) ! Tout le monde s'en fout. Allez-y, étudiez dur par vous-même, et écrivez beaucoup de code dans de nombreux projets. Et notez qu'aucun de mes conseils n'empêche d'abandonner l'école une fois que vous y avez passé un certain temps. Vous pouvez obtenir une grande partie des avantages décrits ci-dessus sans être diplômé.